CS/운영체제

PCB와 Context Switching

이충무 2022. 9. 20. 22:24

PCB(Process Control Block)


개요

  • 운영체제가 프로세스 메타데이터(Process Metadata)를 저장해 놓을 수 있는 저장 장소
  • 프로세스 상태관리와 Context Switching을 위해 필요
  • 프로세스 생성시 만들어지며 주기억장치에 유지

Process Metadata

  • 프로세스들의 특징
  • 프로세스 생성 시 PCB에 저장
  • Process ID
    • 프로세스 고유 식별 번호
  • Process State(프로세스 상태)
    • 프로세스의 현재상태(준비, 실행, 대기 상태)를 기억
  • Process Counter(계수기)
    • 다음으로 실행될 명령어 주소 기억
  • Process Priority(스케쥴링 정보)
    • 프로세스 우선순위와 같은 스케줄링 관련 정보 기억
  • CPU Registers
    • 프로세스의 레지스터 상태를 저장하는 공간
    • CPU 내의 범용 레지스터, 데이터 레지스터 등의 값을 기억
  • Owner(계정 정보)
    • CPU 사용시간의 정보(Quantum), 각종 스케쥴러에서 필요한 정보를 기억
  • 기억장치 정보
    • 프로그램이 적재될 기억장치의 하한치, 상한치, 페이지 테이블 등의 정보 기억
  • 입출력 정보
    • 프로세스 수행시 필요한 주변 장치, 파일들의 정보를 기억

PCB가 필요한 이유

  • CPU에서 프로세스 상태에 따라 프로세스 교체작업이 발생
    • 인터럽트 요청 발생 → 할당받은 프로세스 Block 상태 변경→ 다른 프로세스 running 상태 변경
  • 인터럽트가 발생하여 Block 상태가 된 프로세스의 상태값을 PCB에 저장
  • 수행중인 프로세스를 변경할 때 CPU의 레지스터 정보가 변경되는 것을 Context Switching 이라고 함

PCB 관리 방식

  • LinkedList 방식으로 관리
    • PCB list head에 PCB가 생성될 때마다 추가됨
    • 삽입, 삭제가 용이
  • 프로세스가 생성되면 PCB가 생성되고 프로세스 완료 시 PCB제거

Context Switching


개요

  • 멀티 프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스를 실행 할때 기존 프로세스의 상태 또는 레지스터 값(Context)를 저장하고 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터값(Context)를 교체하는 작업
  • 다중 프로그래밍 시스템에서 CPU가 할당되는 프로세스를 변경하기 위해 현재 CPU를 사용하여 실행되고 있는 프로세서의 상태 정보를 저장하고 제어권을 인터럽트 서비스 루틴(ISR)에게 넘기는 작업
  • Context Switching을 하는 주체 → OS 스케쥴러
  • Context Switching 발생 시 해당 CPU는 다른 일을 처리하지 못함 → 잦은 Context Switching은 오버헤드 발생으로 성능이 저하

Context

  • 사용자와 다른 사용자, 사용자와 시스템또는 디바이스 간의 상호작용에 영향을 미치는 사람, 장소, 개체등의 현재 상태를 규정하는 정보
  • CPU가 해당하는 프로세스를 실행하기 위한 해당 프로세스의 정보
  • 대부분의 정보는 레지스터에 저장되고 PCB로 관리

Context Switching 필요성

  • 멀티 프로세싱을 통해 빠른 반응 속도로 응답 가능
  • 빠르게 프로세스를 바꾸면서 실행하기 때문에 실시간 처리처럼 작업 가능

Context Switching 수행 과정

  1. 프로세스 P0 수행 중
  2. 레지스터에 P0 정보 위치
  3. 인터럽트 발생
  4. P0에 대한 정보를 P0에 대한 PCB에 저장
  5. P0의 상태 대기 상태로 변경
  6. 다음 프로세스 P1 상태 running으로 변경
  7. 레지스터의 P0정보가 P1 정보로 교체
  8. 프로세스 P1 수행 중

Context Switching 발생 시기

  • 프로세스의 상태가 Ready→Running, Running→Block과 같이 변경될 때 발생
    • 인터럽트발생
    • 실행 중인 CPU 사용 허가 시간(Time Quantum) 모두 소모
    • IO 입출력을 위해 대기해야 하는 경우

Context Switching 비용

  • Cache 초기화 발생
  • Memory Mapping 초기화
  • 메모리에 접근을 위해 Kernel 실행
  • 따라서 잦은 Context Switching은 성능 저하 야기

Context Switching과 시간 할당량

  • 프로세스의 시간 할당량이 적어짐
    • Context Switching 증가
    • 인터럽트 횟수 증가
    • 오버헤드(간접 부담 비용) 증가
    • 여러 프로세스가 동시에 수행되는 느낌
  • 프로세스 시간 할당량 커짐
    • Context Switching 감소
    • 인터럽트 횟수 감소
    • 오버헤드(간접 부담 비용) 감소
    • 여러 프로세스가 동시에 수행되는 느낌을 가지지 못함

참고 자료


[OS] PCB와 Context Switching

PCB 와 Context Switching 알아보기

[운영체제]PCB (Process Control Block)란? PCB 정보 & Context Switching 문맥교환 & Overhead 오버헤드

[운영체제] PCB & Context Switching

PCB & Context Switching

 

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

프로세스 주소 공간  (0) 2022.09.20
Interrupt  (0) 2022.09.20
Deadlock  (1) 2022.09.20
페이지 교체 알고리즘  (0) 2022.09.20
Memory  (1) 2022.09.20