프로세스 제어 블록 (PCB)
운영체제는 프로세스들의 실행과 자원 관리를 효율적으로 수행하기 위해 프로세스 제어 블록(PCB: Process Control Block)이라는 자료 구조를 사용합니다. 이 글에서는 PCB의 정의, 역할, 그리고 주요 구성 요소를 체계적으로 설명합니다.
프로세스 제어 블록(PCB)이란?
모든 프로세스는 CPU를 사용하여 실행됩니다. 하지만 CPU 자원은 제한적이기 때문에, 운영체제는 프로세스들 간에 CPU 사용 시간을 나누어야 합니다. 프로세스는 정해진 시간 동안 CPU를 사용한 후, 타이머 인터럽트가 발생하면 다음 프로세스에게 CPU를 양보하고 자신의 다음 차례를 기다립니다.
이처럼 운영체제가 프로세스의 실행 순서와 자원을 관리하기 위해 사용하는 핵심적인 도구가 바로 프로세스 제어 블록(PCB)입니다. PCB는 각 프로세스에 대한 중요한 정보를 포함한 데이터 구조로, 운영체제가 프로세스를 식별하고 관리하는 데 필수적인 역할을 합니다.
(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)
PCB의 역할
PCB는 프로세스와 관련된 정보를 저장하여 운영체제가 이를 관리할 수 있도록 합니다. PCB는 프로세스 생성 시 생성되며, 프로세스가 종료되면 폐기됩니다. 다음은 PCB의 주요 역할입니다:
- 프로세스 식별: PCB는 각 프로세스를 고유하게 식별하기 위한 정보를 제공합니다.
- 상태 저장: 프로세스의 현재 상태와 실행 중단 시점의 정보를 저장합니다.
- 자원 관리: 프로세스가 사용 중인 자원(메모리, 파일, I/O 장치 등)을 추적합니다.
- 스케줄링 지원: 프로세스가 CPU와 같은 자원을 할당받는 순서를 결정하는 데 필요한 정보를 제공합니다.
PCB는 운영체제의 커널 영역에 저장되며, 운영체제가 여러 프로세스를 관리하는 데 핵심적인 도구로 작동합니다.
(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)
PCB의 주요 구성 요소
PCB에는 프로세스를 관리하기 위한 다양한 정보가 저장됩니다. 운영체제마다 PCB에 저장되는 정보는 다를 수 있지만, 일반적으로 다음과 같은 항목들이 포함됩니다:
1. 프로세스 ID (PID)
프로세스 ID (PID)는 각 프로세스를 고유하게 식별하기 위해 부여되는 번호입니다. 이는 학생의 학번, 회사의 사번과 비슷합니다. 예를 들어, 동일한 프로그램을 두 번 실행하면, 두 개의 서로 다른 PID를 가진 프로세스가 생성됩니다.
2. 프로세스 상태
프로세스는 다양한 상태를 가질 수 있으며, PCB에는 현재 프로세스의 상태가 저장됩니다. 일반적인 프로세스 상태는 다음과 같습니다:
- New (신규): 프로세스가 생성된 초기 상태
- Ready (준비): 프로세스가 CPU 할당을 기다리는 상태
- Running (실행 중): 프로세스가 CPU를 사용 중인 상태
- Waiting (대기): 입출력(I/O) 작업을 기다리는 상태
- Terminated (종료): 실행이 완료된 상태
3. 레지스터 값
프로세스가 실행 중이거나 중단된 시점의 레지스터 값(프로그램 카운터 포함)이 PCB에 저장됩니다. 이 값들은 프로세스의 다음 실행 시 복원되어 중단된 작업을 이어서 수행할 수 있도록 합니다.
4. CPU 스케줄링 정보
프로세스가 CPU를 언제, 어떤 순서로 할당받을지를 결정하는 데 필요한 정보가 저장됩니다. 이 정보에는 다음과 같은 항목이 포함됩니다:
- 우선순위: 프로세스의 중요도
- 스케줄링 큐 포인터: Ready Queue, Wait Queue 등에서 프로세스를 관리하기 위한 포인터
- 스케줄링 정책 관련 정보
5. 메모리 관리 정보
PCB에는 프로세스가 메모리에 저장된 위치와 관련된 정보가 포함됩니다. 주요 항목은 다음과 같습니다:
- 베이스 레지스터: 프로세스가 메모리에 시작되는 주소
- 한계 레지스터: 프로세스가 차지하는 메모리 범위의 끝
- 페이지 테이블: 프로세스의 가상 메모리와 실제 메모리 간의 매핑 정보
이 정보는 운영체제가 메모리를 효율적으로 관리하는 데 도움을 줍니다.
6. 파일 및 입출력 장치 정보
프로세스가 실행 중 사용하는 파일과 I/O 장치 목록이 PCB에 저장됩니다. 예를 들어, 프로세스가 열어놓은 파일 핸들이나 할당된 I/O 장치와 관련된 정보가 기록됩니다.
(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)
PCB의 중요성
PCB는 운영체제의 핵심 데이터 구조 중 하나로, 다음과 같은 이유로 매우 중요합니다:
- 효율적인 프로세스 관리: PCB는 프로세스의 상태와 정보를 체계적으로 저장하여 운영체제가 여러 프로세스를 효과적으로 관리할 수 있도록 합니다.
- 프로세스 전환 지원: 프로세스 전환 시 PCB에 저장된 정보를 활용하여 중단 없이 작업을 이어갈 수 있습니다.
- 자원 관리 최적화: PCB를 통해 프로세스가 사용하는 자원을 추적하고 충돌을 방지합니다.
결론
프로세스 제어 블록(PCB)은 운영체제가 프로세스를 관리하는 데 핵심적인 역할을 합니다. PCB는 프로세스에 대한 모든 중요한 정보를 저장하고, 이를 통해 운영체제가 CPU, 메모리, I/O 장치 등의 자원을 효율적으로 관리할 수 있도록 돕습니다.
PCB의 이해는 운영체제의 작동 원리를 깊이 있게 이해하는 데 필수적이며, 프로세스 스케줄링과 자원 관리 메커니즘의 기초를 제공합니다.
'운영체제' 카테고리의 다른 글
프로세스의 메모리 영역 (0) | 2025.01.11 |
---|---|
문맥 교환 (Context Switching) (0) | 2025.01.11 |