OS

[OS] PCB(Process Control Block)

집한구석 2021. 6. 12. 12:17
728x90

PCB 정

  • 운영체제가 프로세스를 제어하기 위해 정보를 저장 놓은 곳, 프로세스의 상태 정보를 저장하는 구조체 
  • 프로세스 상태관리와 문맥 교환을 위해 필요함
  • PCB는 프로세스 생성시 만들어지며 주기억장치에 유지됨

PCB에 포함되는 정보

  • Process ID : 프로세스를 구분하는 정보
  • Process State : 각 State (생성, 준비, 실행, 대기, 종료)를 저장
  • Program Counter : 다음에 실행할 Instruction의 주소를 저장하는 카운터, CPU는 이 값을 통하여 Process의 Instruction을 수행함
  • Register Information : Accumulator, CPU Register, General Register 등을 포함
  • CPU Scheduling Information : 우선순위, 최종 실행시간, CPU 점유시간 포함
  • Memory Limits : 운영체제에서 사용되는 메모리 관리 정보 포함
  • Pointer : 부모 / 자식 프로세스에 대한 포인터, 자원에 대한 포인터
  • Open File List : 프로세스를 위해 열려 있는 파일 리스트 

PCB가 필요한 이유 

  • CPU에서는 프로세스의 상태에 따라 교차 작업이 이루어짐 (인터럽트가 발생해서 할당받은 프로세스가 Block 상태가 되고 다른 프로세스를 Running으로 바꿀 때), 해당 작업이 이루어질 때 앞으로 다시 수행할 Block 상태의 프로세스의 상태값을 PCB에 저장해두는 것 

PCB 관리방식

  • 링크드리스트형태로 관리가 되며, PCB List Head에 PCB들이 생성될 때마다 붙게 되어, 주소값이 연결이 이루어져 있음, 링크드리스트 형태라서 삽입삭제가 용이함
  • 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료시 제거가 되며, 이런식으로 수행중인 프로세스를 변경할 때 CPU의 레지스터 정보가 변경되는 것을 Context Switching이라고 함

Context Switching 정의

  • CPU가 현재 실행하고 있는 Task(Process, Thread)의 상태를 저장하고, 다음 진행할 Task 상태 및 진행할 Register 값들에 대한 정보를 읽어 새로운 Task의 Context 정보로 교체하는 과정
  • CPU가 이전 프로세스 상태를 PCB에 보관하고 또 다른 프로세스의 정보를 PCB에 읽어서 레지스터에 적재하는 과정
  • 다중 프로그래밍 시스템에서 CPU가 할당되는 프로세스를 변경하기 위해 현재 CPU를 사용하여 실행되고 있는 프로세서의 상태 정보를 저장하고 제어권을 인터럽트 서비스 루틴에 넘기는 작업을 뜻함

Context Switching 수행과정

  1. 현재 실행되고 있는 Task의 PCB정보를 저장 (Process Stack, Ready Queue)
  2. 다음 실행할 Task의 PCB정보를 읽어서 Register에 적재하고 CPU가 이전에 진행했던 과정을 연속적으로 수행함

Context Switching 비용

  • Context Swiching을 진행하면 Cache초기화, Memory Mapping 초기화와 같은 비용이 발생함
  • 잦은 Context Switching 성능에 영향을 끼침 

'OS' 카테고리의 다른 글

[OS] Thread Safe  (0) 2021.11.06
[OS] 데드락  (0) 2021.11.06
[OS] Thread (쓰레드)  (0) 2021.10.03
[OS] Process (프로세스)  (0) 2021.07.11
[OS] 뮤텍스 / 세마포어  (0) 2021.06.13