본문으로 건너뛰기
안동민 개발노트 아이콘

안동민 개발노트

본문 시작

나 혼자 운영체제

프로세스·스레드·스케줄링·동기화·메모리·파일·입출력을 연결해 운영체제가 자원을 관리하는 원리를 익힙니다.

코드를 작성했습니다.

터미널에서 실행 버튼을 누릅니다.

프로그램이 동작합니다.

이 당연한 과정의 이면에는 운영체제라는 거대한 소프트웨어가 작동하고 있습니다.

CPU는 한 순간에 하나의 명령어만 실행할 수 있는데, 어떻게 수십 개의 프로그램이 동시에 돌아갈까요?

malloc()으로 메모리를 할당하면 물리적으로 어디에 생기는 걸까요?

파일을 저장하면 디스크의 어디에 어떤 형태로 기록되는 걸까요?

이 교재는 이런 질문들에 대한 답을 계층적으로 풀어갑니다.

운영체제의 정의와 역할에서 출발하여, 프로세스와 스레드의 관리, CPU 스케줄링, 메모리 관리, 파일 시스템까지 OS가 하드웨어와 소프트웨어 사이에서 어떤 책임을 맡는지 체계적으로 이해할 수 있습니다.

이론으로 끝나지 않습니다.

C와 Python 코드로 fork(), 뮤텍스, 세마포어를 직접 구현하고, 리눅스 명령어로 시스템 상태를 진단하며, Docker와 Kubernetes가 OS 위에서 어떻게 동작하는지까지 다룹니다.

각 장의 개념은 서로 떨어져 있지 않습니다.

사용자 프로그램의 요청이 시스템 콜을 지나 커널로 들어가고, 커널이 프로세스, 메모리, 파일 시스템, 네트워크를 함께 조정한다는 연결을 잡으면 뒤의 목차가 훨씬 선명해집니다.


전체 목차

각 장에서는 개념을 읽고 시스템에서 보이는 현상을 관찰한 뒤, 짧은 코드나 명령으로 동작을 확인합니다.

프로세스·메모리·파일·장치를 따로 외우기보다 운영체제가 자원을 어떻게 추상화하고 배분하며 보호하는지 같은 질문으로 연결해 복습합니다.

이 페이지의 목차