💡 개요
오늘은 프로세스 생명 주기에 대해 정리해보자.
🛠️ 프로세스 생명 주기
프로세스 생명 주기란 컴퓨터에서 프로그램이 할당되어 실행 가능한 상태인 프로세스가 되고, 이 프로세스가 실행된 후 종료되는 과정을 나타낸 것이다.
주요 과정은 다음과 같다.
1. New
프로세스가 생성중인 상태를 의미한다.
여기서 프로세스란 프로그램이 실행을 통해 OS로 부터 리소스를 할당받고, PCB(Process Control Block)이 만들어지고 준비중인 단계이다.
PCB란 프로세스를 관리하기 위한 OS의 핵심 자료구조이다. 말 그대로 프로세스에 대한 정보를 담고있는 객체를 의미한다.
PCB가 담고있는 정보는 다음과 같다.
항목 | 설명 |
프로세스 ID (PID) | 각 프로세스를 식별하기 위한 고유한 번호 |
프로세스 상태 | Running, Ready, Waiting 등 현재 상태 |
Program Counter (PC) | 다음에 실행할 명령어의 주소 |
CPU 레지스터 값 | 문맥 교환(context switch) 시 보관해야 할 값들 |
메모리 관리 정보 | 해당 프로세스의 메모리 주소, 페이지 테이블, 세그먼트 등 |
파일 입출력 정보 | 열린 파일 목록, 입출력 상태 등 |
스케줄링 정보 | 우선순위, 스케줄링 큐 포인터 등 |
2. Ready
프로세스를 실행할 준비가 된 상태를 의미한다.
프로세스가 CPU를 할당받기만 하면 바로 프로세스가 실행되는 상태이다.
여러 개의 프로세스가 대기할 수 있기 떄문에 Ready Queue에서 Ready 상태의 프로세스가 대기한다.
위 이미지에서 Ready를 ‘초기화 완료’ 라고 표현했는데 이는 ‘프로세스가 실행할 준비를 마친 상태’ 라고 표현해도 무방하다.
그런데도 불구하고 ‘초기화 완료’라는 표현을 사용하는 이유는 프로그램이 프로세스가 되는 과정(New 단계)에서 운영 체제는 다음과 같은 작업을 수행하기 때문이다.
- 프로세스에 필요한 메모리 할당
- PCB 생성
- 코드, 데이터, 스택 등 메모리 구조 초기화
- 파일 핸들, 입출력 설정 등 자원 초기화
3. Running
프로세스가 CPU를 할당받아 실제로 실행중인 상태를 의미한다.
참고로 하나의 컴퓨터에서 Running 상태인 프로세스는 CPU의 코어 갯수와 동일하거나 더 작다.
왜냐하면 프로세스 실행에는 반드시 CPU 코어가 필요하기 때문!!
물론 프로세스는 CPU를 점유하고 있지만, 다른 프로세스에 의해 CPU를 빼앗기고(Interrupt) 다시 대기 상태에 들어갈 수 있다.
4. Waiting
입출력 같은 외부 이벤트를 대기중인 상태를 의미한다.
예를 들어 클라이언트의 키보드 입력이나, 마우스 클릭 혹은 데이터베이스의 요청을 보낸 후, 응답을 기다리고 있는 상태같은 걸 의미한다.
참고로 이 땐 CPU 코어를 점유하고 있지 않는다.
5. Terminated
프로세스가 종료된 상태를 의미한다.
New 단계에서 생성된 PCB는 운영체제에 의해 삭제된다.
'개발 일기' 카테고리의 다른 글
[개발 일기] 2025.04.24 - MongoDB의 쓰기 속도가 빠른 이유? (0) | 2025.04.24 |
---|---|
[개발 일기] 2025.04.23 - 왜 두 번씩? (0) | 2025.04.23 |
[개발 일기] 2025.04.21 - Docker 익명 볼륨 (0) | 2025.04.21 |
[개발 일기] 2025.04.20 - Docker 포트 번호가 2개? (0) | 2025.04.20 |
[개발 일기] 2025.04.19 - 테이블의 기본키로 VARCHAR? (0) | 2025.04.19 |