운영체제를 공부하기위해서 필요한 기초지식은?

Fe.head의 이미지

운영체제를 공부하고 싶은데요..
필요한 기초지식이 무엇이 있을까요?

어떤 과목을 공부해야 되는지..

그리고 어떤 책을 봐야 하는지 궁금합니다.

앙마의 이미지

이론적인 면을 공부하시려면 컴퓨터 구조 정도를 알고 시작하시면 됩니다.
(대학 학부 과정에서 배우는 컴퓨터 구조를 말합니다.)
이론적인 책에서는 거의 코드가 나오지 않습니다.
실재 운영체제 소스(예를 들어 리눅스)를 분석해 보시려면 C와 어셈 경우에
따라서는 C++을 미리 공부하시고 시작하시면 됩니다.
nachos라는 교육용 OS인경우에는 자바로 구현되어 있으므로 자바를
미리 공부하셔야 합니다.

autography

인간에게는 자신의 운명을 거부할 권리가 있다.

앙마의 이미지

쓰다보니 책 이야기가 빠졌네요.
이론적인 면의 책은 Operating System Concepts를 추천합니다.
공룡 표지의 책이지요. 5번째나 6번째정도의 개정판이 현재 원서로 나와
있을 겁니다.(가급적 원서 추천)
코드 분석을 해보고 싶으시면 각종 OS 커널 분석 책들을 참고 하시면 됩니다.
아 그리고 이론적인 면을 공부하실때 컴퓨터 구조와 함께 자료구조도 공부하시고 보시면 도움이 될듯 합니다. 가끔 스텍. 큐같은 개념이 나옵니다.

autography

인간에게는 자신의 운명을 거부할 권리가 있다.

서정민의 이미지

tannenbaum의 책들을 보시는 것도 추천합니다.

리눅스 개발 초기 당시 타넨바움이 리눅스에 대하여 악평을 하기도 했지만, 그는 os, network 등 기초 이론에 대해 좋은 책들을 많이 썼답니다. ;)

익명 사용자의 이미지

모든것을 알아야 됩니다.

ihavnoid의 이미지

음.. 좀 더 구체적인 제목을 대자면...

'Modern Operating Systems, 2nd edition'
(에디션 번호는 확실치 않음)

괜찮더군요. 위에 써 주신 Operating Systems Concept 보다 더 맘에 들었습니다...^^ 책을 참 잘 쓰시는 듯 합니다..

Consider the ravens: for they neither sow nor reap; which neither have storehouse nor barn; and God feedeth them: how much more are ye better than the fowls?
Luke 12:24

advanced의 이미지

저는 아직 2학년이라 학교 공부를 많이 나가지 않아 모르는것이 많습니다.

저도 운영체제에 관심이 많은데 컴퓨터 구조를 얼핏 보면 논리회로의 연속인것

처럼 보이는데 운영체제를 배우는데 컴퓨터 구조가 직접적으로 관련이 많은지

궁금합니다.

- Advanced -

arimae의 이미지

제가 이번학기에 학교에서 컴퓨터 구조론을 배웠는데 교재는
Tanenbaum 씨의 Structured Computer Organization 이라는 책입니다.

1장부터 3장까지는 논리 회로에서 배운것의 연장선 처러 보이지만,
4장의 Microarchitecture level 부터는 다른 내용이더군요..

한마디로 맨아래의 하나의 로직 부터 차례대로 위의 layer 로 올라가면서 배우게 되는데,
상당히 괜찮았던것 같습니다.

단순히 하위 레이어에서 국한되지 않고 차례대로 상위 레이어까지(책에서는 Assembly Layer 까지 배웁니다.) 배울수 있어서
이 것을 공부한다면 운영체제 책만 볼때하고 달리 좀더 넓게 공부할 수 있을 것 같습니다.

책에서 나오는 레이어 들은 다음과 같습니다.

Chapter 4. The Microachitecture level
Chapter 5. The Instruction set architecture level
Chapter 6. The Operating system machine level
Chapter 7. The Assembly language level

아래부터 위로 올라가면서 레이어들의 특성을 공부하게 되죠..
운영체제에 관심있다면 한번쯤 꼭 읽어보시길 바랍니다.

Dream, Passion and Challenge..

afsadfsaf의 이미지

인텔의 개발자 커뮤니티와 인텔 사이트에서 받을 수 있는 CPU 매뉴얼도 상당히 도움이 됩니다.

http://developer.intel.com

그런데 오페라에선 안보이네요 :(

넷스케이프에선 잘 보입니다.
------
어라.. 아래쓴글 어디갔지 ;

오페라에선 Identify as Mozilla 5.0 으로 하면 보이는 듯 합니다.(확인 다 안해봄)

L-System

alsgo123의 이미지

글쓴이 수정: 운영체제를 공부하기 위한 기초지식에대한 물음인데 책을 나열했군요. ^^ 작은 도움이나마 되었으면 좋겠습니다.

운영체제, 특히 리눅스 커널을 보기위해서 알고있는 고수?님께 물어보니 Tanenbaum 아저씨의 Operating Systems Design and Implementation(이하: OSDI) 이란 책을 권해주시더군요.

그러면서 하시는 말씀이 (그 책이 번역본이 없거든요^^) 단기간에 보긴 어려우니 한글로된 얇은책을 참고로 하고 그리고 나서 보면 한결 수월할거라고 하시더군요.

전 전산 전공도 아니고 운영체제를 깊이있게 공부해본적이 없는 입장에서

운영체제개념 http://www.wowbook.com/generic/book/info/book_detail.asp?isbn=ISBN89-7283-298-7 이란 책을 먼저 구입해서 한 서너번 정독했습니다. 한결 운영체제가 가깝게 느껴졌음을 많이 느낄수 있었습니다.

그리고 나선 다시 OSDI 2판을 천천히 읽다가 윗엣분들이 적어주신
Modern Operating System 2판; (번역본은 '현대운영체제론 ,역시 Tanenbaum 아저씨) 의 책을 구입해서 또 공부하는 중입니다.
OSDI 를 3장까지 보다가 이책으로 재도전 하는 입장이지만 거짓말 안보태고 Modern Operating System 2판 은 OSDI 의 번역서로 보일정도입니다. 거기에 조금 확장된 판이라는 느낌이 아주 강하게 듭니다. (제 주관입니다.)

( 토시 하나 틀리지 않고 같은 부분도 있고, 그림이나. 예제는 100% 같은걸로 보입니다. 물론 OSDI 에서 제공하는 Minix 소스 해설은 없습니다. ^^)

감히 제가 생각하기로는
운영체제 얇은책 개론서(운영체제개념 ,홍릉과학출판사)
현대운영체제론 2판(Modern Operating Systems,2nd edition 한글번역판,사이텍미디어)
OSDI,

이런순서도 괜찮은것 같습니다. (중간중간에 공룡책 6판도 참고했습니다.^^)

ps. 바로 윗분 말씀처럼 cpu 아키텍쳐 문서도 부분부분 읽은걸로 기억납니다.
상당한 도움이 된걸로 기억합니다.

익명 사용자의 이미지

아이참~!

모든것을 알아야 된다니까요 !

책이 뭐가 중요해요? 책쓴사람이 운영체제 만들어 본적 있다면 볼만하겠지만...

그렇지 않다면 모든책 다 읽어야 되요. 골라보지 맙시다.

.

.

.

농담입니다.

서정민의 이미지

minzkn wrote:
모든것을 알아야 된다니까요 !

책이 뭐가 중요해요? 책쓴사람이 운영체제 만들어 본적 있다면 볼만하겠지만....

타넨바움은 minix 창시자입니다.

Fe.head의 이미지

이렇게 많은 분들이 대답을 해주셨군요..

답변을 주신 분들께 감사드립니다.

위의 것을 제 생각대로 정리하면

1. 컴퓨터 구조론은 배워라.. (일단 배웠군요.. Micro 컴퓨터 구조도 배웠으니)

2. 컴퓨터 구조론의 새세한 부분을 배워라.. (이건 아직 안배웠내요..)

3. 언어(어셈, C, C++ )를 배워라 (이것도 일단 했군요..)

4. 간단한 운영체제 개념에 대한 책을 2~4번 읽어라.

5. 좀더 자세한 운영체제 책을 읽어라

이군요.. cpu내부까지 자세히 배우라고 하시는데..

음.. 황희융교수가 쓴 MS-DOS Assembler 라는 책 보면 CPU 레지스터등이 나오던데.. 이걸로는 부족하겠지요?

학교에서 z80 CPU 구조에 I/O 입출력및 메모리 Read/Write, Assembler등도 배웠는데.. 이정도면.. 운영체제론을 배울수 있는 기초는 되었는지..?

위의 글을 보면 CPU구조와 운영체제 layer 가 나온 것 까지 한번 보라 하셨는데... 그건 필수 인가요?

또 답변 부탁 드립니다..

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

코너리의 이미지

논리 회로
컴퓨터 구조론
어셈블리 언어
C 프로그래밍
자료구조론
파일 처리
운영체제론

정도가 아닐까요?

The difficulty in life is the choice.

afsadfsaf의 이미지

그정도 하셨으면 그냥 만드셔도 문제는 없겠네요..;;

처음부터 너무 큰거 하려고 하지 마시고
별거 아닌거같아보이는거부터 하시면 될겁니다;;

예를들어 그냥 리눅스 커널소스 뒤져서 부팅하는법부터..-_-a 라던가.

아무래도 이론만 들어있는 책은.. 세부성이 부족해서 마치 수학에서 증명은 있는데 공식이 없는거랑 비슷하달까?
공식만 있고 증명이 없는 수학의 정석 책만큼 짜증;; 나죠 -_-a

그렇다면, 증명은 책에 있으니.. 공식은 소스를 보는수밖에요 :D
걍 아무 운영체제 소스나 구하셔서 구체적으로 이걸 어떻게 적용하는지 보시면 도움 되실듯.

만약 소스가 예제로있는 책이 있다면그 책이 정말 도움이 될텐데..

참고로 위에 CPU매뉴얼은 말 그대로 "매뉴얼" 이에요.

장난감 매뉴얼과 맥락을 같이합니다 -_-b

장난감 매녈이란게 무슨말이냐면, 조금 가지고 놀다가 모르겠으면 보는 매뉴얼이라는 말입니다. :D

글구 컴터 자체도 장난감이라고 생각하시고 시작 하시면 쉽게 접근하실 수 있을겁니다.

그럼 행운을 +_+

L-System

vacancy의 이미지

Computer의 각 Architecture에는
관련된 Reference들이 있습니다.

x86 Architecture라면 Intel 사(www.intel.com, developer.intel.com)에,
mips Architecture라면 MIPS 사(www.mips.com)에,
ARM Architecture라면 ARM Architecture Reference Manual 등에,
OS등 System Programming을 할 수 있도록 자료가 제공되고 있습니다.
이런 건 필수적으로 구비하고 계시고, 어느 정도는 공부하셔야 하고요.
( 사실 Assembly를 써야하는 건 대부분 이부분 때문입니다. )

CPU가 Computer 전체를 뜻하는 것이 아니기 때문에,
여러 Device들에 대한 자료도 있어야 합니다.
( 하다못해 Floppy Disk, Hard Disk같은 것만 해도 그렇죠. )

그리고 OSDI도 상당히 간단한 서적입니다.
책이 얼핏 두꺼워보이지만 많은 부분이 MINIX 소스거든요.
공룡책보다 이게 훨씬 이해하기 쉽게 쓰여져 있다고 생각합니다.
( 어차피 둘 다 보셔야 하겠지만요. )

그럼 좋은 OS만드시길 바랍니다.
( Open-source면 더 좋겠고요. ^^ )

chaeso의 이미지

우선 C 정도 아시면 좋을거 같구요
운영체제를 이해하려는데 운영체제를 안써본다는건 말이 안되니까 --;
LINUX 열심히 써보시고..
위에 분 처럼 Tannenbaum 이 쓴 컴퓨터 구조책 읽어 보시고(저도 교재로 배웠음)
한국에서 쓴 OS 책 얇고 만만한책 몇일 잡아서 2권 정도 스캐닝 하면서 훑어보구요..
두꺼운 공룡책 보시길 바랍니다. 처음부터 두껍고 어려운책 보면 지겹잖아요

nairs의 이미지

역시나 공룡책(Operating System Concept)에 대한 예기가 많군요.
제 생각도 역시 그러합니다. 공룡책을 보시면 알겠지만 굉장히 광범위한 분야를 다루고 또한 잘 정리되어 있습니다.

공룡책은 필수로 보시고 그다음에 Computer Architecture (Prentice Hall <- 맞나요? ^^?? )와 같은 기본 개념책에 대해서도 필수로 보셔야 할듯 합니다.

뭐... OS 역시도 프로그램이기에 파일처리, 자료구조, 스케쥴링, ... 에 대해서 공부하시면 만드실수는 있겠지만, 좀더 나은 성능과 구조를 가지려면 기본적은 구조부터 시작한 디자인역시 필수이겠지요. 하지만 제작이 아닌 이해를 목적으로 하신다면 공룡책 만으로도 충분하다고 생각합니다.

제 경우는 대학때 공룡책어디다가 뒀는지 잃어버려서 사회나와서 다시 구입해서 소장하고 있을만큼 추천 할만한 책입니다.

헐...

\ 별을 보며 소원을 빌 때 당신이 누구인지는
\ 중요하지 않습니다. 당신이 소망하는 것이
★ 무엇이든, 포기하지 않는 한 그 꿈은 이루어
집니다. <司法試驗 合格記 中>