운영체제를 깊이 이해하려면, 프로세스의 상태 변화와 생성 구조를 반드시 알아야 합니다.
이 글에서는 프로세스의 상태(state), 계층 구조, 그리고 프로세스 생성 방식(fork/exec)을 다뤄보겠습니다.
운영체제는 프로세스를 다음과 같은 5가지 상태로 구분하여 관리한다.
| 상태 | 설명 |
|---|---|
| 생성 상태 (new) | 프로세스가 생성 중인 초기 상태. PCB가 할당됨 |
| 준비 상태 (ready) | CPU 할당을 기다리는 대기 상태 |
| 실행 상태 (running) | CPU를 할당받아 실제 실행 중인 상태 |
| 대기 상태 (waiting) | 입출력 작업 등을 기다리며 대기하는 상태 |
| 종료 상태 (terminated) | 프로세스가 종료된 상태. PCB와 메모리가 정리됨 |
📌 상태 전이 예시
운영체제는 프로세스를 트리 형태로 계층적으로 관리한다.
PPID)를 기록함.| 운영체제 | 최초 프로세스명 | PID |
|---|---|---|
| Unix | init | 1 |
| Linux | systemd | 1 |
| macOS | launchd | 1 |
🔍
pstree명령어를 통해 현재 시스템의 프로세스 계층 구조를 시각화할 수 있다.
운영체제는 fork()와 exec() 시스템 호출을 이용해 새로운 프로세스를 생성한다.
fork() - 복사exec()를 호출하지 않으면, 부모와 동일한 코드 실행exec() - 변환📌 자식 프로세스를 독립적인 새 프로그램으로 만들고 싶다면,
fork()후exec()호출이 필수
fork와 exec의 반복을 통해 생성된다.
좋은 글 감사합니다... 프로세스 계층이 트리 구조라고 하셨는데 unix,Linux,macOS 가 동일하게 흘러가나요? 아니면 각자 조금씩 다르게 흘러가나요?