끄적이기
[TIL - 10] 프로세스(Process) 정리
배씌
2025. 3. 18. 09:48
Thread에 앞서, 프로세스에 대한 이해가 필요하다.
프로세스란?
- 실행중에 있는 프로그램
- 스케줄링의 대상이 되는 작업(Task)과 같은 용어로도 쓰임.
- 프로세스 내부에는 최소 하나의 스레드(Thread)를 가지고 있는데, 실제로는 스레드 단위로 스케줄링을 함.
프로세스의 구성 요소

- Code 영역 : 실행할 프로그램의 명령어가 저장된 메모리 영역
- Data 영역 : 전역변수, static 의 할당
- Heap 영역 : 동적 할당을 위한 메모리 영역
- Stack 영역 : 함수 호출, 로컬 변수 저장되는 영역
PCB(Process Control Block) : 각 프로세스를 관리하기 위해 사용하는 데이터 구조
프로세스 스케줄링
: CPU 할당 방법 및 순서를 결정하는 일
방식
- 비선점형(Non-preemptive)
- 프로세스가 스스로 다음 프로세스에 자리를 할당
- 실시간 처리
- 선점형(Preemptive)
- 운영체제가 강제로 프로세스를 통제
- 대부분의 운영체제
(스케줄링 알고리즘은 추후 따로 기록)
프로세스 상태

New
- 새로운 프로세스 생성
- 아직 메모리에 완전히 로드되지 않았거나, CPU에서 실행할 준비가 되지 않은 상태
Ready
- 프로세스가 실행할 준비가 완료된 상태
- CPU 스케줄링 대기열에 존재
- Ready Queue에 포함된 상태. -> 스케줄링 될 때까지 대기
Running
- 프로세스가 실행되고 있는 상태
- 실행 중 인터럽트가 발생하거나, 타이머가 만료되면 준비(Ready) or 대기(Blocked) 상태로 전환
- 실행 종료 시 종료(Terminate) 상태로 전환
Blocked
- 프로세스가 실행 도중 특정 이벤트를 기다리는 상태
- 다른 작업이 완료될 때까지 Blocked Queue에서 대기
Terminate
- 실행이 완료되거나 강제 종료된 상태
- PCB가 제거되고, 할당된 메모리와 시스템 자원이 반환됨