# PCB와 컨텍스트 스위칭

# PCB

  • Process Control Block
  • 운영체제에서 관리하는 프로세스에 대한 메타데이터를 저장한 데이터블록이며 커널 스택에 저장
  • 각 프로세스가 생성될 때마다 고유한 PCB가 생성이 되고 프로세스가 종료되면 PCB도 제거됨

# PCB의 구조

  • 프로세스 상태 : 대기중, 실행 중 등 프로세스의 상태
  • 프로세스 번호(PID) : 각 프로세스의 고유 식별 번호(프로세스 ID)
  • 프로그램 카운터(PC) : 이 프로세스에 대해 실행될 다음 명령의 주소에 대한 포인터.
  • 레지스터 : 레지스터 관련 정보
  • 메모리 제한 : 프로세스의 메모리 관련정보
  • 열린 파일 정보 : 프로세스를 위해 열린 파일 목록들

# 컨텍스트 스위칭

alt text

  • PCB를 기반으로 프로세스의 상태를 저장하고 다시 복원시키는 과정
  • 스레드도 가능
  • 프로세스가 종료되거나 인터럽트에 의해 발생
  • 컨텍스트 스위칭마다 유휴시간이 생겨 CPU 가용성이 떨어짐
  • 프로세스가 가지고 있는 메모리 주소가 그대로 있으면 잘못된 주소 변환이 생기므로 캐시 클리어 과정이 무조건 일어나고 이 때문에 캐시미스 발생

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

  • 스택 영역을 제외한 모든 메모리를 공유하기 때문에 시간과 비용이 더 적게 듦