프로그래밍/운영체제

운영체제 · 프로세스 제어 블록

반응형

프로세스 제어 블록 (PCB, Process Control Block)


정의 : 프로세스에 관한 다양한 정보를 가지고 있는 커널의 자료 구조

✓ 작업 제어 블록(Task Control Block)이라고도 하며, 운영체제가 프로세스를 표현한 형태이다.

프로세스에 관한 중요한 정보를 포함하기 때문에, 사용자가 접근하지 못하도록 보호된 메모리 영역 안에 위치한다. 일부 운영체제에서는 커널 스택의 처음에 위치한다.

✓ Linux 운영체제에서는 <linux/sched.h> 헤더 파일의 struct task_struct로 표현된다.


/* PCB Example (task_struct) */
struct task_struct {
	volatile long	state;
	void		*stack;
	atomic_t		usage;
	int		recent_used_cpu;
	int		wake_cpu;
	int		prio;
	unsigned int	rt_priority;
	pid_t		pid;
	pid_t		tgid;
	struct task_struct __rcu	*parent;
	struct list_head		children;
	struct list_head		sibling;
	u64				utime;
	u64				stime;
};




PCB가 포함하는 정보


  • 프로세스 ID (Process ID) : 프로세스를 식별하기 위한 ID
  • 프로세스 상태 (Process State) : 생성(New), 준비(Ready), 실행(Running), 대기(Waiting), 종료(Terminated)
  • 프로그램 카운터 (Process Counter) : 해당 프로세스가 다음에 실행할 명령어의 주소 가리킴.
  • 메모리 관리 정보 : 페이지 테이블 또는 세그먼트 테이블, 베이스 레지스터 등
  • 프로세스 계정 정보 : CPU가 사용한 양, 사용된 실제 시간, 계정 번호 
  • 입출력 상태 정보 : 프로세스에 할당된 입출력장치 목록, 열린 파일 목록 등
  • CPU 스케줄링 정보 : 스케줄링 우선순위, 스케줄 큐 포인터 등
  • CPU 레지스터 : 누산기, 인덱스, 스택 레지스터 등
  • 기타 프로세스 관련 정보


반응형