2011년 2월 10일 목요일

나를 발견하고 나를 만나다 :: 네이버 블로그

출처 http://blog.naver.com/cholwan_atom?Redirect=Log&logNo=140016120645
나를 발견하고

운영체제를 만드려는 시도는 많은 끈기와 인내심을 필요로 하며 그 자체만으로도 커다란 모험입니다. 왜냐하면 운영체제라는 것은 단순히 프로그램 코드의 나열을 넘어 모든 프로그램의 근원이자 컴퓨터라는 블랙박스에 '생명'을 불어넣는 일이기 때문이지요. 따라서 하나의 완벽한 운영체제를 만들기 위해서는 OS에 대한 설계철학과 함께, 컴퓨터 아키텍쳐, 하드웨어 제어, 알고리즘등등 컴퓨터 전반에 걸친 지식이 필요합니다.. 어셈이나 C로 테트리스를 만드는 작업과는 질적으로 틀린 일이라는 것이지요. 음... 서두가 긴데, 하여간 OS를 제작하는 것만큼 이론과 실제 모두에 정통해야하는 분야도 없기때문에 반드시 OS에 대한 책은 한권 이상 흝고지나가야 할 것입니다.
제 나름대로 OS를 공부하기 위한 최고의 책들을 꼽아 보았습니다.


[ISBN link]0471417432

Abraham Silberschatz, Greg Gagne외
아래 제 글에서 언급했지만 덧붙여 말할 필요 없이 OS이론서로서는 최고의 책입니다. 제목에서 풍기듯, 이 책은 완전한 개념서라고 보시면 됩니다. 운영체제 구현과 설계들을 알고리즘(5판까지는 pseoudo code가 파스칼이었던 것이 6판에 와서는 C로 바뀌었더군요.) 위주로 설명하고 있으며 프로세스, 메모리, 파일시스템, 입출력(I/O) 시스템의 관리를 중심으로 설명되어 있고 분산 시스템에 대한 내용도 다룹니다. 6판째에는 최신 내용이 업데이트가 되어서 Threads와 Windows 2000에 관한 새로운 챕터 추가되었고 클라이언트/서버 모델, NFS, PDA, 실시간 운영체제, 리눅스, FreeBSD, 분산 운영체제 등에 관한 확장된 내용이 담겨있습니다.물론 이 책 하나를 완독했다고 해서 곧바로 OS를 만들 수 있는 것은 아니지만, 운영체제의 이론적 배경에 대한 탄탄한 기본기를 익히는데는 이만한 책이 없습니다. 5/E을 번역해 놓은 번역서가 있지만 번역이 별로 매끄럽지 않아서 비추천입니다. 원문이 딱딱한 영어가 아니라서 분량만 무시한다면 부담없이 읽을 수 있습니다.


[ISBN link]0136386776

Andrew S. Tanenbaum, Albert S. Woodhull
역시 os제작 사이트를 소개하면서 언급했던 책이죠. Operating System Concepts가 이론과 알고리즘 위주라면 이 책은 실제 구현을 통해서 그 이론을 설명하는 방법을 쓰고 있습니다.
텐넨바움 교수가 학생들을 위해 설계한 MINIX라는 마이크로 커널 구조의 독립적인 운영체제를 바탕으로 운영체제 이론이 어떻게 실제 코드로 구현될 수 있는지를 보여주는 명저입니다.
리누스가 이 책을 읽고 자신의 386 머신에 이식하고 기능을 확장시키려다 Linux를 만든건 이미 다 알고 있는 사실이죠..(리누스의 자서전인 "Linux for fun"이라는 책을 보면 그가 대학원 시절, 자기 방을 굳게 잠그고 창문 커텐을 닫은 후 몇개월동안 자고 먹고 그리고 하는 일이란 오직 이 책을 읽는 일뿐이었다고 회상 하더군요..) 개인적으로 이 책은 OS를 구현하거나 내부를 알기원하는 사람들에겐 선택할 수 있는 최고의 책이라고 추천할 수 있습니다. MINIX는 Monolithc구조인 Linux와는 달리, win2000과 마찬가지로 Micro-kernel구조(message기반)입니다.. 따라서 메모리/프로세스 관리, 파일시스템등이 모듈화가 잘 되어 있습니다. 저자의 홈페이지(http://www.cs.vu.nl/~ast/) 에 가면 이 책의 최신코드를 비롯, 여러 유용한 자료들을 보실 수 있습니다.


[ISBN link]0132017997

Marice J. Bach, Maurice Bach
UNIX내부 구조를 다룬 책중에서는 가장 클래식한 책이면서 또한 이분야에서는 모든 사람이 고개를 끄덕이며 동의하는 명저입니다. 출판된지 상당히 오래된 책이지만 UNIX의 설계 관점에서 프로세스, 파일 시스템, 쓰레드등 유닉스 커널 내부구조를 이만큼 명쾌하고 알기 쉽게 설명하는 책이 드믈죠.. 책분량도 그렇게 두껍지 않아서 맘잡고 1,2주만 파고들면 충분히 뗄 수 있는 책입니다. LINUX등의 UNIX-like 운영체제의 구현원리에 관심이 많은 사람이라면 한번쯤 읽어보면 커다란 도움이 될 것입니다.

[WWW]The Linux Kernel
David A Rusling
LDP(Linux Documentation Project)의 일환으로 나온 리눅스 문서입니다.
리눅스 커널을 소개한 책은 서점을 뒤져보면 참 많이 나와 어느것을 선택할지 도리어 망설여질 정도인데 저는 주저함없이 이 문서를 추천합니다. 가장 밑바닥인 하드웨어, 프로세서의 기본부터 Memory Management, IPC, Interrupt, Deive driver등 커널 모듈과 커널 매커니즘의 개념에 대해서 잘 설명해 놓았습니다. 소스코드로 설명하지는 않고 있어서 실제로 어떻게 구현할 것인지에 대해서는 부족한 점이 있지만, 커널을 어디부터 손대야할지 모르는 초보자에게 리눅스 커널의 전체적인 그림을 잡아주는 일종의 가이드 역활을 하는 문서입니다. 실제 소스분석으로 달려들기 보다는 이 문서로 대충 커널의 원리와 구조를 파악하는 것이 선행되어야 할 작업이죠.. 아쉬운 것은 이 책이 설명하는 커널버전은 2.0.33으로 2.4가 나온 현재 시점에서는 때지난 느낌이 없지 않지만 운영체제의 근본원리 위주로 설명하고 있기 때문에 파일시스템등의 커널버전에 의존적인 부분은 그리 많진 않습니다.


[ISBN link]8986185857

Harald Bohme, Harold Bohme외
이 책은 대학원에서 리눅스 커널 구조라는 과목의 교재로 쓰이는 책입니다.
사실 리눅스 커뮤니티 사이에서는 모두 최고의 책이라고 평가하는데 제 개인적으로는 참 힘들게 읽던 책입니다. 이유는 책을 읽다보면 곳곳에 우리들이 이해할 수 없는 구어체문장이 많아 읽는데 상당히 애를 먹기 때문이죠... --;;; 위의 Rusling의 책과 마찬가지로 커널버전 2.0을 가지고 설명합니다. 그러나 메모리 관리와 IPC, 스케쥴링등에 쓰이는 데이타 구조, 함수 프로토타입등은 커널 분석자라면 분명 보아두어야할 부분이죠.. 혼자 공부하기에는 벅찬감이 있지만, 어디 리눅스 커널이 그리 만만하게 분석할 수 있는 대상인가요.. 커널을 분석하려고 마음 먹었다면 그정도 고생은 감수를 해야지요..


[ISBN link]0131019082

Uresh Vahalia
유닉스 계열 운영체제의 구조 대한 깊이있는 설명. 현재 읽을 준비중.. :)
  • [WWW]Lecture Note : 대학원 재학시절 강의 자료. 경험상 이런 요약된 슬라이드 자료가 있으면 공부하기가 한결 수월하더군요.


[ISBN link]1588530000

Richard A. Burgess
이 책은 예전에 386시대때 유명했던 "Developing Your Own 32 Bit Operating System"라는 책의 업데이트 버전입니다. OS제작에 관련된 사이트를 돌아댕기다보면 이 책을 언급하는 곳이 많아 이미 절판된 그 책을 구하려고 백방으로 찾아다녔던 적이 있습니다.. 그런데 아마존에서 Developing Your....이 업그레이드 되어 이 제목으로 출판된 것을 보고 황당해 하던 기억이 새록 새록 나는군요.. --;;; 제목대로 32비트 환경에서 어셈블리와 C로 인텔 프로세서가 제공하는 보호모드 기능을 잘 활용한 운영체제입니다.. DOS나 UNIX어디에도 속하지 않는 독자적인 파일시스템을 사용하며(그러나 제가 보기엔 DOS의 FAT과 상당히 유사하더군요. 그래서 유닉스에서와 같은 액세스 권한이라는 것이 없고 일례로 MMURTL은 DOS위에서 부팅이 가능합니다.... 마치 옛날 윈도우3.1처럼.. --;;) 32비트 어셈블러와 C컴파일러까지 구현하여 그것으로 OS를 만드는, 누구말마따나 "엽기적"이라는 생각이 들정도로 신선한 발상의 운영체제입니다. 그러나 방대한 크기의 Linux에 비해 훨씬 가볍고 간단한 구조로 이루어져 있어 OS를 제작하길 원하는 초보 개발자들이 참고하기에 딱 좋은 운영체제입니다. 저는 해킹 사이트 돌아댕기다가 우연히 누가 이 책의 e-book을 올려놓은 것을 발견하여 얼릉 제본을 떴었죠.. V (음.. 이 책의 저자에게는 미안하긴 하지만...)


[ISBN link]8973542710

오재준 (지은이)
순수 구현에 촛점을 맞춘, 국내외에서도 보기 드문 서적으로 지은이의 독자적인 운영체제인 Bellona2 커널의 제작과정을 상세하게 설명하고 있다. Visual C++로 커널 이미지를 빌드하는 것 부터 키보드, 타이머, 디스크등의 인터럽트 및 제어에 관한 설명, 동적 모듈을 실제 메모리에 올리고 페이징을 구현하는 내용은 theory를 달고 나온 책에서는 절대 찾아볼 수 없는 내용들이다. 지금은 절판되어 저자에게 연락해도 구할 수 없는 책이 되어버렸다. 조만간 2판이 나온다고 하니 그때를 기다려 출간되면 얼른 사서 소장해 놓자. :)

새 첨부 "l9788989819202.jpg"를 업로드
김기창 (지은이)
Hello OS?.. 2003년에 출간된 책인데 이런 책이 있었는지도 몰랐다. 목차를 보면 개론서와는 달리 운영체제 초기화 과정, 인터럽트, 하드웨어 관리등의 구현에 중점을 둔 듯 하다. 의외로 보물을 발견했을 수도 있으니 서점에 가서 확인해 보자.

이 외에도 "Operating System Design: The XINU Approach, Vol. I
"등이 유명했는데 저도 이 책은 구경하질 못해서 뭐라 말씀드리기가 힘들어서 소개 안했습니다.. 국내에서는 아예 구하질 못하고 대학 도서관에서나 볼 수 있는데 그나마 어떤 이가 빌려가서는 제가 졸업할 때까지 반납을 안하더군요.. --;;;
그리고 Labrosse의 "Micro C/OS-II"라는 공개 Real-time OS 서적도 있는데 임베디드 시스템에 들어가는 Real-time OS를 만드려는 목적이 아닌 이상 논외가 될 것 같아서 역시 빠뜨렸습니다...
나를 만나다 :: 네이버 블로그

댓글 없음:

댓글 쓰기