Search

[2장 프로세스 관리(기초)]3.프로세스 제어 블록 (PCB,Process Control Block)

Publish Date
Category
Status
Done
1 more property
프로세스 제어 블록 PCB
프로세스 제어 블록(PCB)은 프로세스의 상태, 실행 정보, 메모리 및 자원 사용 상태를 관리하여 프로세스의 효율적 제어와 상태 복구를 지원하는 핵심 데이터 구조이다.

프로세스 제어 블록(PCB)

운영체제에서 각 프로세스는 프로세스 제어 블록(PCB, Process Control Block)이라는 데이터 구조로 관리됩니다. PCB는 특정 프로세스와 관련된 모든 중요한 정보를 저장하며, 프로세스의 상태와 작업 흐름을 유지하는 데 핵심적인 역할을 합니다. PCB는 태스크 제어 블록(Task Control Block)으로도 불린다.
//PCB는 프로세스의 상태를 저장하는 데이터 구조(구조체)이지 실제 정보는 아니다.

PCB에 포함된 정보

리눅스 커널에서 PCB(Process Control Block)는 task_struct 구조체로 구현되어 있다. 이 구조체는 프로세스와 관련된 모든 정보를 저장하며, 각 프로세스의 상태를 관리하는 핵심 데이터 구조이다. task_struct는 커널 소스 코드에서 include/linux/sched.h 파일에 정의되어 있다.
sched.h
linux
항목
설명
프로세스 식별자
프로세스 ID(PID)
프로세스 상태
프로세스의 현재 상태 (New, Ready, Running, Waiting, Terminated 등)
프로그램 카운터
다음 실행할 명령어의 주소를 가리킴 인터럽트(중단) 후 정확히 이어서 실행 가능
CPU 레지스터
CPU의 현재 상태 정보를 저장 Accumulator, General Register 등을 포함한 CPU 레지스터 값을 저장 (누산기, 스택 포인터, 프로그램 상태 레지스터, 조건 코드 등)
CPU 스케줄링 정보
프로세스 우선순위, 스케줄링 큐 포인터, 시간 제한 등 스케줄링 관련 데이터를 저장
메모리 관리 정보
프로세스의 메모리 공간 정보 (기본/한계 레지스터, 페이지 테이블, 세그먼트 테이블 등)
I/O 상태 정보
프로세스가 사용하는 I/O 장치 및 열린 파일 목록, 현재 I/O 작업 상태 저장
계정 정보
프로세스 실행 자원 사용량 (CPU 사용량, 실행 시간, PID, 사용자 계정 정보 등)
PCB 관리 방식
PCB는 연결 리스트, 트리 구조, 또는 해시 테이블로 관리된다.
스케줄링 시 운영체제는 이러한 구조를 탐색하여 실행할 프로세스를 결정한다.

PCB 역할

프로세스 상태 유지
PCB는 프로세스의 실행 중단 시 상태를 저장(save)하고, 실행 재개 시 해당 상태를 복구(reload)한다.
이는 멀티태스킹 환경에서 여러 프로세스를 효율적으로 관리하는 데 필수적이다.
운영체제의 프로세스 관리
PCB는 운영체제가 프로세스를 스케줄링하고 자원을 할당하는 데 필요한 모든 정보를 제공한다.
각 프로세스는 고유한 PCB를 가지며, PCB를 통해 운영체제는 프로세스를 식별하고 제어할 수 있다.
보안 및 안정성
PCB는 커널 공간(Kernel Space)에 저장된다.
사용자 프로세스가 직접 수정하거나 접근할 수 없으므로 프로세스 간 간섭을 방지한다.
사용자 공간(User Space)로부터 보호되어 시스템 안정성을 보장한다.

PCB와 프로세스 상태 간 전환

PCB는 프로세스 상태 변경 시 중요한 정보를 업데이트 하며, 운영체제는 이를 기반으로 프로세스를 적절히 관리한다.
상태 전환
발생 조건
New → Ready
프로세스 생성 후 실행 준비 완료
Ready → Running
CPU가 프로세스를 할당받아 실행 시작
Running → Waiting
I/O 작업 등으로 인해 이벤트 대기 상태로 전환
Waiting → Ready
대기 중인 이벤트 발생 후 실행 준비 상태로 전환
Running → Ready
CPU 할당이 다른 프로세스로 넘어가면서 준비 상태로 전환
Running → Halted
프로세스가 종료됨
컨텍스트 스위칭(Context Switching) 중, CPU는 현재 실행중인 프로세스의 PCB 정보를 저장하고, 새로운 프로세스의 PCB 정보를 로드한다. 이 과정에서 PCB의 정보(프로그램 카운터, 레지스터 상태 등)는 정확히 보존되어야 한다.

마무리

PCB는 운영체제가 프로세스를 효율적으로 관리하고, 상태를 유지하며, CPU 자원을 효과적으로 스케줄링 할 수 있도록 돕는 핵심 데이터 구조이다. PCB는 프로세스 간 격리와 안정성을 보장하며, 멀티태스킹 시스템에서 필수적인 역할을 수행한다.
Search
Main PageCategoryTagskkogggokkAbout MeContact