전체 글 15

5. Interlude: Process API

개요 Unix계열 운영체제에서는 fork(), exec() 계열의 API를 통해서 새 프로세스를 생성하고 wait() API를 통해서 다른 프로세스가 생성될 때까지 대기할 수 있게 한다. fork() System Call fork() 시스템콜은 새로운 프로세스를 생성하는데 사용한다. 이때 생성되는 프로세스는 fork()를 호출한 프로세스와 완전히 동일한 프로세스(심지어 pc까지도)이다! 이때 새로 생성된 프로세스는 0을 반환하여 부모 프로세스(fork()를 호출한 프로세스)인지 자식 프로세스(새로 생성된 프로세스)인지 구별할 수 있다. 위 코드의 실행 결과는 다음과 같은데 사실 부모, 자식 중 누가 먼저 실행되는지는 실행할 때마다 다르다. 누구를 먼저 실행시킬지 결정하는 운영체제의 스케쥴링 정책이 때에 ..

4. The Abstraction: The Process

개요 프로세스의 기본 개념에 대해 설명하는 파트이다. '프로세스'는 '돌아가고 있는 프로그램'으로서 요약할 수 있다. 여기에서 '프로세스'와 '프로그램'의 차이가 궁금할 수 있는데 '프로그램'은 실행하기 위한 명령어와 여러 데이터가 메모리상에 저장되어 있는 것이다. 이것이 CPU로 올라가고 실행되면 '프로세스'가 되는 것이다. CPU는 한번에 하나의 프로세스만 처리할 수 있다. 이때 프로세스가 CPU를 사용하고 있다고 착각하게 'CPU를 가상화(CPU virtualization)' 하는 것이다. 이를 위해서는 여러가지 방법이 있는데 가장 많이 쓰는 방법이 '짧은 단위 시간동안 CPU를 번갈아 사용하는 것(time sharing)'이다. 운영체제의 스케쥴링 정책은 여러 기준(나중에 배움)에 의해 어느 프로..

Operating Systems: Three Easy Pieces 소개

이번 학기 운영체제 수업을 'Operating Systems: Three Easy Pieces'로 공부하게 되었다. 처음에는 속칭 '공룡책'으로 공부할줄 알고 기대했었기 때문에 살짝 실망했던 부분이 없지 않아 있지만 한번 살펴보니 처음 배우는 사람들을 위해 잘 짜여져 있다는 느낌을 받았다. 이 책은 운영체제의 가장 중요한 개념이라고 할 수 있는 Virtualization(가상화), Concurrency(병행성), Persistance(지속성)을 중심으로 이야기를 풀어 나간다. 수업은 ppt파일로 진행되지만 책 pdf파일도 무료로 공개(pages.cs.wisc.edu/~remzi/OSTEP/)하니 복습하면서 책을 한번 더 살펴봐야겠다.