명품 운영체제 (수정판)

명품 운영체제 (수정판)

$41.09
Description
컴퓨터 시스템의 지배자이며 소프트웨어의 왕인 운영체제를 아는 것은, ‘소프트웨어 개발자’를 꿈꾸는 사람들이 컴퓨터 전문가로 들어서는 기반 지식임을 부인할 수 없다. 오늘날 개발자가 되려는 많은 사람들이 프로그래밍 언어를 배우고 코딩을 익혀가고 있다. 코딩에 눈을 뜨고 지식이 늘어가면서 다음과 같은 여러 의문들이 생겨나게 된다.
프로그램은 누가 실행시키는 것일까, CPU일까 운영체제일까? 내가 작성할 수 있는 프로그램의 최대 크기는 얼마일까? new나 malloc()으로 동적 할당 받을 수 있는 메모리의 최대량은 얼마일까? 여기서 메모리는 RAM인가? 여러 프로그램들이 하나의 컴퓨터에서 어떻게 동시에 실행될까? 많은 프로그램을 동시에 실행시켜도 문제는 없을까? 파일을 읽기 전에 파일을 열어야 하는데 연다는 것이 도대체 뭘까? 파일을 읽을 때 open()/ read()와 fopen()/fread() 중 어떤 것을 사용하는 것이 더 좋은 것일까? 파일은 디스크 어디에 저장되는 것일까? 두 프로그램이 동시에 같은 파일에 읽거나 쓰면 결과는 어떻게 될까? 운영체제는 시스템을 다스리는 규칙일까 하드웨어일까 실체가 있는 프로그램일까? 급기야 운영체제는 꼭 있어야 하는 것일까?
이런 의문들에 대한 답은 운영체제를 이해함으로써 얻을 수 있다. 저자는 운영체제의 학습 목적을 다음과 같이 정리한다.
소프트웨어 개발자로서 프로그램이 컴퓨터에서 실행되는 과정과 이 과정 전체를 통제하는 운영체제의 역할을 이해하는데 있다. 프로그램이 코드, 데이터, 힙, 스택으로 나뉘어 메모리에 적재되어 관리되고, 시스템 호출의 과정을 통해 운영체제의 기능을 활용하는 등, 이 과정을 앎으로서 기반이 튼튼한 개발자로 성장하게 된다.
컴퓨터 시스템 전문가로서 운영체제를 개발하거나 수정하는 능력의 기초를 닦는 데 있다. 컴퓨터의 모든 자원들을 독점 관리하는 주체로서, 운영체제는 컴퓨터 시스템의 성능을 최적화하는 다양한 방법들을 구사함을 알게 한다. 많은 프로그램을 동시에 실행시키는 메모리 관리 기법, 여러 프로세스들의 효율적인 스케줄링, 공유 데이터에 대한 다중 프로그램의 충돌을 막는 기법, 수많은 파일을 저장하고 관리하는 효율적인 방법 등 다 양한 시스템 구조와 알고리즘들을 알게 하고, 컴퓨터 시스템의 성능에 눈을 뜨게 한다.

이 책의 특징
- 디테일한 그림과 자세하고 명료한 설명을 통해 추상적일 수 있는 운영체제 개념과 이론이 눈에 그려지고 손에 잡히도록 하였다.
- 이론과 함께 리눅스와 Windows의 실제 사례를 보여주어 이해도를 높였다.
- 프로세스나 스레드, 메모리 관리 등 이론을 실제 상황에서 이해하고 확인하도록 C 프로그램 코드 사례를 이용하여 이론이 작동하는 구체적인 과정을 보였다.
- 운영체제는 컴퓨터 구조와 밀접한 관계가 있다. 이 책은 운영체제의 이해에 꼭 필요한 컴퓨터 구조와 하드웨어에 대한 설명을 적절히 배치하여 컴퓨터 시스템을 균형 있게 이해할 수 있도록 하였다.
- 각 장의 시작 부분에서 문제 제기를 통해 궁금증을 유발하고 이를 해소해 나가는 과정을 스토리텔링 방식으로 전개하여 읽기 쉽도록 하였다.
- 강의하듯이 서술하고 점진적으로 살을 붙여가는 설명 방식으로 독자와 눈높이를 맞추어 어려운 개념을 단계적으로 이해하도록 하였다.
저자

황기태

저자:황기태
현한성대학교컴퓨터공학부교수
서울대학교컴퓨터공학과박사
서울대학교컴퓨터공학과석사
서울대학교컴퓨터공학과학사
비트교육센터센터장
IBMWatsonResearchCenter방문연구원
UniversityofCalifornia,Irvine방문교수
UniversityofFlorida방문교수

목차


Chapter01운영체제의시작과발전
1.운영체제개념
2.운영체제의태동
3.운영체제의발전
요약
연습문제

Chapter02컴퓨터시스템과운영체제
1.컴퓨터시스템과하드웨어
2.컴퓨터시스템과운영체제
3.커널과시스템호출
4.운영체제와인터럽트
요약
연습문제

Chapter03프로세스와프로세스관리
1.프로세스개요
2.커널의프로세스관리
3.프로세스의계층구조
4.프로세스제어(fork,exec,wait,exit)
요약
연습문제

Chapter04스레드와멀티스레딩
1.프로세스의문제점
2.스레드개념
3.스레드주소공간과컨텍스트
4.커널레벨스레드와사용자레벨스레드
5.멀티스레드구현
6.멀티스레딩에관한이슈
요약
연습문제

Chapter05CPU스케줄링
1.CPU스케줄링개요
2.CPU스케줄링기본
3.다양한CPU스케줄링알고리즘
4.멀티코어CPU에서의스케줄링
요약
연습문제

Chapter06스레드동기화
1.스레드동기화의필요성
2.상호배제
3.멀티스레드동기화기법
4.생산자소비자문제
요약
연습문제

Chapter07교착상태
1.교착상태문제제기
2.교착상태
3.교착상태해결
요약
연습문제

Chapter08메모리관리
1.메모리계층구조와메모리관리핵심
2.메모리주소
3.물리메모리관리
4.연속메모리할당
5.세그먼테이션메모리관리
요약
연습문제

Chapter09페이징메모리관리
1.페이징메모리관리개요
2.페이징의주소체계
3.페이지테이블의문제점과TLB
4.심화학습:페이지테이블의낭비문제해결
요약
연습문제

Chapter10가상메모리
1.물리메모리의한계
2.가상메모리개념
3.요구페이징(demandpaging)
4.참조의지역성과작업집합
5.프레임할당
6.페이지교체
요약
연습문제

Chapter11파일시스템관리
1.파일시스템과저장장치
2.파일시스템의논리구조
3.파일시스템구축
4.파일입출력연산
요약
연습문제

Chapter12대용량저장장치관리
1.저장장치개요
2.하드디스크장치
3.디스크스케줄링알고리즘
4.디스크포맷
5.SSD저장장치
요약
연습문제

출판사 서평


컴퓨터시스템의지배자이며소프트웨어의왕인운영체제를아는것은,‘소프트웨어개발자’를꿈꾸는사람들이컴퓨터전문가로들어서는기반지식임을부인할수없다.오늘날개발자가되려는많은사람들이프로그래밍언어를배우고코딩을익혀가고있다.코딩에눈을뜨고지식이늘어가면서다음과같은여러의문들이생겨나게된다.
프로그램은누가실행시키는것일까,CPU일까운영체제일까?내가작성할수있는프로그램의최대크기는얼마일까?new나malloc()으로동적할당받을수있는메모리의최대량은얼마일까?여기서메모리는RAM인가?여러프로그램들이하나의컴퓨터에서어떻게동시에실행될까?많은프로그램을동시에실행시켜도문제는없을까?파일을읽기전에파일을열어야하는데연다는것이도대체뭘까?파일을읽을때open()/read()와fopen()/fread()중어떤것을사용하는것이더좋은것일까?파일은디스크어디에저장되는것일까?두프로그램이동시에같은파일에읽거나쓰면결과는어떻게될까?운영체제는시스템을다스리는규칙일까하드웨어일까실체가있는프로그램일까?급기야운영체제는꼭있어야하는것일까?
이런의문들에대한답은운영체제를이해함으로써얻을수있다.저자는운영체제의학습목적을다음과같이정리한다.
소프트웨어개발자로서프로그램이컴퓨터에서실행되는과정과이과정전체를통제하는운영체제의역할을이해하는데있다.프로그램이코드,데이터,힙,스택으로나뉘어메모리에적재되어관리되고,시스템호출의과정을통해운영체제의기능을활용하는등,이과정을앎으로서기반이튼튼한개발자로성장하게된다.
컴퓨터시스템전문가로서운영체제를개발하거나수정하는능력의기초를닦는데있다.컴퓨터의모든자원들을독점관리하는주체로서,운영체제는컴퓨터시스템의성능을최적화하는다양한방법들을구사함을알게한다.많은프로그램을동시에실행시키는메모리관리기법,여러프로세스들의효율적인스케줄링,공유데이터에대한다중프로그램의충돌을막는기법,수많은파일을저장하고관리하는효율적인방법등다양한시스템구조와알고리즘들을알게하고,컴퓨터시스템의성능에눈을뜨게한다.

이책의특징

-디테일한그림과자세하고명료한설명을통해추상적일수있는운영체제개념과이론이눈에그려지고손에잡히도록하였다.
-이론과함께리눅스와Windows의실제사례를보여주어이해도를높였다.
-프로세스나스레드,메모리관리등이론을실제상황에서이해하고확인하도록C프로그램코드사례를이용하여이론이작동하는구체적인과정을보였다.
-운영체제는컴퓨터구조와밀접한관계가있다.이책은운영체제의이해에꼭필요한컴퓨터구조와하드웨어에대한설명을적절히배치하여컴퓨터시스템을균형있게이해할수있도록하였다.
-각장의시작부분에서문제제기를통해궁금증을유발하고이를해소해나가는과정을스토리텔링방식으로전개하여읽기쉽도록하였다.
-강의하듯이서술하고점진적으로살을붙여가는설명방식으로독자와눈높이를맞추어어려운개념을단계적으로이해하도록하였다.

이책의구성

이책은12장으로구성하고C언어와컴퓨터구조를아는독자의수준에맞추었다.

-책의범위
이책은운영체제이론을다룬다.1장은운영체제암흑기에운영체제가어떻게태동하게되었는지,어떤기능들로운영체제가구성되게되었는지,그리고어떻게발전해왔는지세밀하게소개한다.2장은컴퓨터시스템전체구조와운영체제의역할을거시적으로설명한다.절대지나칠수없는중요한장으로응용프로그램,라이브러리,운영체제커널,인터럽트등의관계를명확히이해하게된다.3장부터12장까지는프로세스와스레드관리,메모리관리,파일시스템관리,대용량저장장치관리등운영체제의4가지핵심기능을구체적으로설명한다.

-실습
이책은운영체제이론이현대운영체제에서어떻게실현되고있는지를보여주기위해,리눅스나Windows에서간단한명령과실행결과를보여준다.또한몇몇장에서는운영체제이론을확인하는리눅스C프로그램실습을포함하고있다.간단한실습이므로프로그래밍경험이부족하더라도실습에는큰어려움이없다.리눅스실습환경은CoCalc온라인터미널을이용하면리눅스를설치하지않고도실습이가능하다.만일리눅스실습이어려운상황이라면,책에나타난명령이나프로그램코드를읽는것만으로도학습에는문제가없다.

-소스코드다운로드
책에사용된어셈블리코드와C프로그램의소스코드는생능출판사홈페이지에서다운받을수있다.

-연습문제
연습문제는각장에서배운이론을확인하는개념체크문제들과코딩이나실습등복잡한사고가필요한복합문제로구분하였다.연습문제를통해학습한지식을더욱명확히할수있다.

-부록
부록은본문에대한깊이와너비를더하는3개의주제를담고있다.부록A는3장의연장으로프로세스사이의3가지통신방법,공유메모리,신호,파이프를구체적으로소개한다.부록B는6장의연장으로리눅스에서현재사용중인CFS스케줄링기법을구체적으로소개한다.부록C는11장의연장으로동일한파일을동시에읽고쓰는3가지경우에대해파일입출력이이루어지는과정을자세히소개한다.