[컴퓨터 공학]운영체제 공부 리뷰(어떻게 운영체제 공부를 시작할까?)
Img Sorce How to Geek
=============================================================
많은 부분을 업데이트하였습니다!
=============================================================
* 초판: 18.07.12
* 최종수정: 20. 06. 15.
[컴퓨터 공학 공부 리뷰란?]
제가 대학에 진학할 시절에는 처음 웹을 공부하기 위해서는 생활코딩말고는 좋은 강의가 드물었습니다. C언어 공부한다 하면 대부분 윤성우씨의 강의를 수강했고요. 그러나 불과 몇 년 사이에 훌륭한 분들이 앱이나 웹만드는 강의가 많아졌습니다. Youtube에 C언어 부터 시작해서 머신러닝까지 많은 강의를 무료로 볼 수 있습니다. 그러나 컴퓨터 공학의 고전적인 과목들 예를 들어서 컴퓨터구조 운영체제, 네트워크, 데이타베이스, 혹은 보안 쪽을 독학으로 공부하려고 하면 좋은 강의도 없고 막막한 것이 현실입니다. 구글에 운영체제 공부법 같은 키워드로 검색을 하면 특정 학원 홍보와, 막상 사보면 지나치게 어렵거나 추천하는 본인도 읽어보지 않은 책을 추천하는 게시글만 만날 수 있는 것이 현실입니다. 고전적인 컴퓨터 공학 과목을 배우면 당장 개발을 하는데 도움보다는 기술을 깊게 바라보는 관점을 갖게 해주기에 중요한 공부라고 생각합니다만 마땅한 공부 자료를 찾기 힘듭니다.
공부 리뷰는 제가 4년 동안 컴퓨터 공학을 공부하면서 책도 많이 사 보고 수 많은 시행착오를 겪으면서 괜찮았던 강의와 책을 추천하는 포스팅입니다. 과거로 돌아가서 처음 공부를 시작하는 저에게 맨토링해준다는 생각으로, 직접 공부해보고, 직접 사본 책 위주로 리뷰해봅니다.
[온라인 강의 - 무료]
[1] 양희재 교수님 KOCW 강의
http://www.kocw.net/home/search/kemView.do?kemId=978503
화질이 안 좋은게 단점이지만, 운영체제의 명강의 입니다. 어려운 부분을 차분하게 설명해 주십니다. PDF 자료 보다 말로 설명해 주시는 부분과 칠판에 써 주시는 그림이 많이 도움이 됩니다.
http://blog.naver.com/PostList.nhn?blogId=hjyang0&parentCategoryNo=6
양희재 교수님의 블로그에서 과거에 출제하셨던 시험문제도 확인할 수 있습니다. 문제를 쭉 보다보면 OS에서 강의하시고자 하는 핵심을 파악할 수 있습니다. 공부할 때 쭉 시험문제를 읽어보고 단원이 끝나면 교수님께서 내신 문제를 확인하면서 저에게 설명해 보는 방식으로 공부했습니다. 이런 과정을 거치면 독학의 단점인 무엇이 중요한지 모르고 헤매는 문제를 해결 할 수 있습니다.
[2] 홍성수 교수님 (서울대 평생교육원 강의)
* arsen 님께서 변경된 링크를 알려주셨습니다. 감사합니다.
* SNUON 회원가입 이후 로그인 할 때 '데이터베이스에 없습니다' 오류가 발생한 경우 가입한 회원정보가
DB에 등록되는데 시간이 걸리기에 발생하는 문제입니다. 하루 지난 다음에 다시 로그인해보세요.
처음 공부하는 사람에게도 쉽게 강의해 주십니다. 강의 PDF 파일을 제공하지 않아서 일일이 캡쳐를 떠야하는 불편함이 있습니다.
일반적으로 사용하는 OS PDF이기에 https://www.os-book.com/OS10/slide-dir/ 여기를 참고해보세요.
[3] 반효경 교수님 (이화여자대학교 강의)
http://www.kocw.net/home/search/kemView.do?kemId=1046323
아래 제가 강력 추천하는 반효경 교수님 저 '운영체제와 정보기술의 원리' 교재를 사용하는 강의입니다. 홍성수 교수님 강의와 더불어 강력하게 추천하는 강의입니다.
[4] 김덕수 교수님 (한국기술교육대학교)
https://www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN
개정판으로 본 글을 업데이트 하면서 추가하는 강의입니다. 이전 강의들은 좋은 강의지만, 화질이나 강의 자료면에서 아쉬웠습니다. 본 강의는 최근에 촬영된 강의이며, 수업 자료를 전부 제공합니다. [Course Page] 에서 강의 PPT를 전부 확인할 수 있습니다.
[5] [중급 강의] 고건 교수님 Kernal of Linux
http://olc.oss.kr/lec/detail.jsp?lec_idx=35
Linux의 이론적 개념인 Introduction에서 부터 System Calls, Interrupt, Process Management, Scheduling, Memory Management, File System까지 가장 중심이 되는 부분을 강의해주십니다. 대학에서 운영체제 강의를 수강하셨거나 더 깊은 내용을 갈망한다면 들을 만한 강의입니다. 깊은 내용까지 다룹니다.
[도서]
[1] Operating system [9th Ed]- Abraham Silberschatz 등저 일명 공룡책
http://www.yes24.com/24/goods/9253807?scode=032&OzSrank=1
처음 공부하실 때 공룡책으로 바로 시작하셔서 공부하셔도 좋습니다. 책이 9판이 나왔습니다. 오랜 시절을 지나면서 부족한 내용이 채워지고 내용이 자세합니다. 운영체제에서 다루어야할 주제를 다룹니다. 양의 압박이 있다는 단점을 제외한다면 여러 번 반복해서 보고, 컴공을 졸업할 때 까지 책장에 두고 볼 좋은 책입니다.
[2] 운영체제- 구현희 저(한빛미디어)
http://www.yes24.com/24/goods/29290543?scode=032&OzSrank=1
처음 운영첸제를 공부할 때 8판 번역서 공룡책을 읽었습니다. 내용은 좋았으나 양이 많아서 큰 그림을 파악하기 힘들었으며 한글책 특유의 번역체로 읽기가 힘들었습니다. 그래서 약간 쉬운 책을 고르자 해서 고른 책입니다. 본 서적이 처음 공부할 때 매우 큰 도움이 되었습니다. 일단 공룡체와 설명 방식이 비슷한데 번역체가 아니라서 이해가 잘 됩니다. 또한 공룡책의 그림과 같은 그림으로 설명합니다. 예를 들어 Page replacement algorithm에서 같은 그림으로 설명해줍니다.(저작권이 없는지..) 공룡책에서 이해 안 된 부분을 보충 할 수 있습니다.
[3] [강추] 운영체제와 정보기술의 원리 - 반효경 저 (이화여자대학교출판문화원 )
http://www.yes24.com/Product/Goods/90124877?scode=032&OzSrank=1
본 책은 08년 1월 출간한 반효경 교수님의 책이 20년 5월 개정되어 재출간한 반효경 교수님의 도서입니다. 본 책은 취준생들이 기술면접 공부할 때 많이 구매하는 책으로 유명합니다.
복잡하고 방대한 운영체제 개념을 300p도 안되는 책에 담겼다는게 믿기지 않을정도로 책을 읽다보면 특유의 간결한 설명과 복잡한 개념을 풀어나가는 서술이 놀랍습니다.
위의 두꺼운 책으로 헤메고 있거나, 운영체제를 다시 정리해야하는 대학원 진학시 면접을 준비하거나 취준생이라면 꼭 읽었으면 합니다.
[4] 뇌를 자극하는 윈도우즈 시스템 프로그래밍 - 윤성우 저(한빛미디어)
http://www.yes24.com/24/goods/2502445?scode=032&OzSrank=1
운영체제를 이론으로만 공부했다면 실제 만들어보면서 공부해 볼 수 있는 책입니다. 리눅스가 아닌 윈도우 프로그래밍이여서 아쉬움도 있지만 이론과 실습을 해 볼 수 있는 좋은 책입니다. 저자가 교육센터에 있었던 경험을 바탕으로 운영체제와 컴퓨터 구조의 내용을 시스템 프로그래밍에 필요한 개념을 설명해줍니다. 저자의 특유의 물흐르는 듯한 서술로 어느새 여러분들은 운영체제와 컴퓨터 구조의 이론 위에 프로그래밍을 하실 수 있습니다. 처음 공부하다보면 이런거 코딩에서 어따써먹나 생각이 드는데 어렵더라도 끈기를 가지고 해보는 것을 추천합니다. 유튜브와 인프런에서 저자 직강을 수강하실 수 있습니다.
[사족]
제가 운영체제 독학을 위해서 구글링 했을 때 커널 파라 혹은 포렌식 분석을 하라 거나 시스템 프로그래밍을 주구장창 하면 이해가 된다는 글을 보았습니다. 이런 말을 따르면 처음 공부하기에 어렵고 시행착오로 삽질하는 날이 하루 늘어날 뿐입니다.
운영체제는 방대한 과목입니다. 독학을 결정하셨다면 제가 추천한 인터넷 강의를 편하게 들으시고(혹시 다른 좋은 강의가 있으면 저에게 알려주세요^^) 주 교제를 정해서 편하게 읽어보는 것을 추천합니다. 독학을 하다보면 체크를 해주는 사람이 없다보니 내가 이해하고 넘어갔는지, 그냥 텍스트만 읽었는지 확인하고 싶을 것입니다. 그러면 Operating system midterm exam키워드로 검색해서(후반부 단원이라면 final exam키워드로 검색!) 타 대학의 문제를 쭉 보고 한번 풀어보는 것을 추천합니다. 이 과정을 통해서 그냥 넘어간 것과 확실히 이해한 것을 구분 할 수 있습니다. 또한 어려운 단원이 있습니다. 이 때 이해 안된다고 계속 머물러 있으면 진도도 안나가고 재미도 없습니다. 운영체제 특성상 뒷 부분을 공부하다보면 앞 부분이 이해되는 경우가 많습니다. 그러니 머리가 나쁘다고 자학하지 마시고 다른 단원 공부하길 바랍니다. 여러분의 무궁무진한 뇌가 잠재 의식속에 어려운 부분을 이해하고 있을 것입니다.
이론만 공부하면 그래서 어떻게 쓰이는거지? 라는 의문이 들 때가 있습니다. 그럴때면 한 번 구현해 본 것을 따라 쳐 보거나 조금 수정해서 나만의 시스템 프로그래밍하는 것을 추천합니다. 이런 과정을 통해서 이론과 개발 능력을 향상 시킬 수 있습니다.
..
<><
..