프로세스 (Process)
프로세스란?
실행 중인 프로그램의 인스턴스. OS가 관리하는 작업 단위.
메모리 구조
높은 주소에서 낮은 주소 순으로 이렇게 놓입니다.
| 영역 | 담는 것 | 자라는 방향 |
|---|---|---|
| 스택 (Stack) | 지역변수, 매개변수 | 아래로 |
| 빈 공간 | 두 영역이 만나면 넘침이다 | |
| 힙 (Heap) | 동적 할당 (malloc, new) | 위로 |
| 데이터 (Data) | 전역변수, static | 고정 |
| 코드 (Code) | 실행 명령어 | 고정 |
프로세스 상태
[생성] → [준비] ⇄ [실행] → [종료]
↕
[대기/블록]
| 상태 | 설명 |
|---|---|
| 준비 (Ready) | CPU 대기 중 |
| 실행 (Running) | CPU에서 실행 중 |
| 대기 (Blocked) | I/O 완료 대기 |
실무 포인트
fork(): 부모 프로세스 복사하여 자식 프로세스 생성exec(): 현재 프로세스를 새 프로그램으로 교체- 좀비 프로세스: 종료됐지만 부모가 회수 안 한 상태
- 고아 프로세스: 부모가 먼저 종료된 자식 (init이 입양)