Knowledge

PCB (Process Control Block)

__미니__ 2016. 11. 14. 22:25

PCB (Process Control Block)


 운영체제가 프로세스에 대한 정보를 저장해 놓은 곳으로, 프로세스당 하나씩 1:1로 생성된다.

어떤 프로세스가 Interrupt나 System Call을 만나 다른 프로세스로 작업을 전환하는 것을 Context Switching이라고 하며, 이때 운영체제는 PCB에 실행 중이던 프로세스의 정보를 저장한 후 실행할 프로세스의 정보를 가져와 작업을 수행한다.

부모와 자식 프로세스 사이에도 PCB는 공유하지 않으며 부모든 자식이든 무조건 각 프로세스당 PCB는 1:1로 생성된다.


PCB의 구조는 일반적으로 다음과 같다.




1. Process ID : 프로세스 식별자, PID


2. Process state



 현재 프로세스의 상태를 나타내며 여기에는 생성(create)/준비(ready)/실행(running)/대기(waiting)/완료(terminated)가 있다.


생성(create)       : 프로세스가 생성은 되었지만 아직 운영체제에 의해 실행은 불가능한 상태

준비(ready)        : CPU의 할당을 기다리는 상태

실행(running)     : CPU를 할당 받아 실행되는 상태

대기(waiting)      : 실행 중인 프로세스가 어떤 사건(입출력 등)이 발생할때까지 멈추어 있는 상태

완료(terminated) : 프로세스 실행이 완전히 끝나 CPU 할당이 해제된 상태


3. Program Counter : 프로세스가 다음에 실행할 명령어의 주소 저장


4. Registers : CPU 레지스터의 값 저장


5. Memory Information : 해당 프로세스의 주소 공간 등의 데이터 저장


6. Accounting Information : 페이지 테이블, 소유자, 부모, 경과 시간 등 저장


7. I/O Information : 프로세스에 할당된 입출력장치 목록, 열린 파일 목록 등 저장