생각, 고민, 문제해결의 기록

PCB와 컨텍스트 스위칭(Context Switching) 본문

CS/운영체제

PCB와 컨텍스트 스위칭(Context Switching)

김예티 2022. 8. 10. 23:21

PCB (Process Control Block)

운영체제가 프로세스를 제어하기 위해 정보를 저장하는 곳으로, 프로세스의 상태 정보를 저장하는 구조체이다. (약 8KB)
프로세스가 실행 중인 상태를 캡쳐하여, 구조화해서 저장한다.
운영체제는 빠르게 PCB에 접근하기 위해 프로세스 테이블을 사용하여 각 프로세스의 PCB를 관리한다.
프로세스 상태관리와 컨텍스트 스위칭을 위해 필요하다.

PCB의 구조

  • Process ID (PID)
    모든 프로세스에는 프로세스 식별자를 저장하는 프로세스 ID 또는 PID라는 고유 한 ID가 할당된다.
  • 포인터 (Pointer)
    프로세스의 현재 위치를 저장하는 포인터 정보이다.
  • 프로세스 상태 (Process State)
    프로세스의 각 상태 (생성(New), 준비(Ready), 실행(Running), 대기(Waiting), 종료(Terminated))를 저장한다.
  • 프로그램 카운터 (PC, Program Counter)
    프로세스를 위해 실행될 다음 명령어의 주소를 포함하는 카운터를 저장한다.
  • 레지스터 (Register)
    누산기, 베이스, 레지스터 및 범용 레지스터를 포함하는 CPU 레지스터에 있는 정보이다.
  • 메모리 제한 (Memory Limits)
    이 필드에는 운영 체제에서 사용하는 메모리 관리 시스템에 대한 정보가 포함됩니다. 여기에는 페이지 테이블, 세그먼트 테이블 등이 포함될 수 있다.
  • 열린 파일 목록(Open File List)
    이 정보에는 프로세스를 위해 열린 파일 목록 이 포함된다.

컨텍스트 스위칭(Context Switching)

컨텍스트 스위칭은 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서
인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때
기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록
새로운 프로세스의 상태 또는 레지스터 값을 교체하는 작업을 말한다.

 

컨텍스트 스위칭 과정

P1, P2라는 2개의 프로세스와 PCB1, PCB2라는 2개의 PCB가 있다고 가정해보자.

  1. P1을 실행하다가 PCB1에 상태를 저장한다.
  2. P2가 저장되어있는 PCB2를 로드해서 실행 시킨다.
  3. 다시 PCB2에 P2의 상태를 저장한다.
  4. PCB1을 재로드 하여 P1을 실행시킨다.

컨택스트 스위칭의 단점

1. 프로세스 P1이 "실행 >> 유휴 (준비 or 대기상태를 말함)" 상태가 될 때 P1이 바로 실행되지 않고, 유휴 상태를 좀 더 유지하다가 실행 상태가 된다. 왜냐하면 P1 상태를 PCB1에 저장하고, PCB2에서 P2 상태를 적재해와야 하기 때문이다.
이를 dispatcher latency라고 한다.
(dispatcher : context switch를 하는 모듈, 프로세스에게 cpu를 할당해주는 모듈)

2. 컨텍스트 스위칭이 너무 잦으면 오버헤드가 발생하여(비용이 높아) 성능이 떨어진다. 

 

'CS > 운영체제' 카테고리의 다른 글

프로세스와 스레드  (0) 2022.08.10
컴퓨터 성능 향상 기술  (0) 2022.08.08
커널의 구성  (0) 2022.08.03
운영체제의 역할과 구조  (0) 2022.08.02