#computerarchitecture ## Process Control Block / Process Descriptor 운영체제는 프로세스를 주기적으로 바꿔주면서 CPU가 최대한 쉬지 않고 일하게 만들어야 하기 때문에, 프로세스의 내부 구조와는 별개로 프로세스를 하나의 물체로 다룰 필요가 있다. 그래서 대부분의 운영체제에는 프로세스에 대한 정보를 담은 자료구조가 존재하는데, 이를 **Process Control Block(이하 PCB)**라 부른다. ![[PCBLayout.png|PCB의 대략적인 구조]] PCB는 프로세스마다 하나씩 있는, 프로세스를 통제하기 위한 모든 정보들의 집합으로, Process Descriptor 혹은 Task Control Block라 부르기도 한다. 여기에는 다음의 정보가 포함되어 있다. - Process State - Process Number: Degree of Multiprogramming - Program Counter - CPU Registers - CPU Scheduling Information - Memory-Management Information - Accounting Information - I/O Status Information ## Process State 프로세스는 실행 중에 그 상태*state*를 계속 바꾼다. 프로세스가 가질 수 있는 상태는 5가지다. ![[ProcessStateFlowChart.png]] - new: 새로운 프로세스가 생성됨, - ready: 프로세스가 실행될 준비를 마침. - running: 프로세스 실행중. - waiting: 프로세스가 어떤 이벤트를 기다리는 중. - terminated: 프로세스가 종료됨. ## Process List 프로세스를 다루기 위해 운영체제는 이러한 PCB를 리스트의 한 원소로 삼는 리스트를 사용한다. 이것을 Process List라고 하며, 프로세스의 PCB는 생성되면서 여기에 추가되고 프로세스가 종료될 때 같이 삭제된다. ![[TaskList.png]]