# PCB

정의

Process Control Block은 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터를 말합니다.

  • 프로세스 제어 블록으로도 불립니다.
  • 프로세스가 생성되면 운영체제는 해당 프로세스를 위한 PCB를 생성합니다.
  • 스택, 힙 등의 구조를 기반으로 메모리가 할당될 때 PCB에 저장되어 관리되며, 프로세스의 중요한 정보를 포함하고 있기에 커널 스택의 가장 앞부분에서 관리됩니다.

# PCB의 구조

image

  • 프로세스 스케줄링 상태
    • '준비', '일시중단' 프로세스가 CPU에 대한 소유권을 얻은 이후 또는 이후 경과된 시간돠 같은 스케줄링 정보
  • 프로세스 ID
    • 프로세스 ID, 해당 프로세스의 자식 프로세스 ID
  • 프로세스 권한
    • 컴퓨터 자원 또는 I/O 디바이스에 대한 권한 정보
  • 프로그램 카운터
    • 프로세스에서 실행해야할 다음 명령어의 주소에 대한 초인터
  • CPU 레지스터
    • 프로세스를 실행하기 위해 저장해야 할 레지스터에 대한 정보
  • CPU 스케줄링 정보
    • CPU 스케줄러에 의해 중단된 시간 등에 대한 정보
  • 계정 정보
    • 프로세스 실행에 사용된 CPU 사용량, 실행한 유저의 정보
  • I/O 상태정보
    • 프로세스에 할당된 I/O 디바이스 목록

# 컨텍스트 스위칭

  • 컨텍스트 스위칭은 PCB를 교환하는 과정을 말합니다.

  • 프로세스에 할당된 시간이 끝나거나 인터럽트에 의해 발생합니다.

  • 어떠한 시점에서 실행되고 있는 프로세스는 단 한개이기에, 동시 실행처럼 보이는 것은 컨텍스트 스위칭이 아주 빠른 속도로 실행되기 때문입니다.

  • 그러나 멀티 코어는 실제로 동시 실행이긴 하지만, 싱글코어 기준으로.....

  • image

  1. P0 프로세스가 인터럽트되면서 PCB0에 P0 프로세스의 상태 정보를 저장합니다.
  2. 다음 수행할 P1 프로세스의 PCB1에서 P1 프로세스의 상태 정보가 CPU에 재로딩됩니다.
  3. P1 프로세스를 일정 시간 수행합니다.
  4. P1 프로세스가 인터럽트되면서 PCB1에 P1 프로세스의 상태 정보를 저장합니다.
  5. 다음 수행할 P0 프로세스의 PCB0에서 P0 프로세스의 상태 정보가 CPU에 재로딩됩니다.
  6. P0 프로세스를 일정 시간 수행합니다.
  • 컨텍스트 스위칭이 일어날 때 유휴시간(idle)이 발생힙니다.

# 캐시 미스

  • 컨텍스트 스위칭이 일어날 때 프로세스가 가지고 있는 메모리 주소가 그대로 있으면 잘못된 주소 변환이 생기므로 캐시 클리어 과정이 필요합니다.
  • 이때 캐시미스가 발생합니다.

# 쓰레드에서의 컨텍스트 스위칭

  • 스레드는 스택 영역을 제외한 모든 메모리를 공유하기에 스레드 컨텍스트 스위칭의 경우 비용이 더 적고 시간 소모가 적습니다.

# 참고자료