PCB & Context Switching


Process Control Block: 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자료구조

Context Switching: 현재 진행하고 있는 프로세스의 상태를 PCB에 저장하고 다음 진행할 프로세스의 정보를 PCB에서 읽어 적용하는 과정



PCB

  • 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳
  • 프로세스의 상태 정보를 저장하는 구조체
  • 프로세스의 상태 관리와 문맥 교환(Context Switching)을 위해 필요
  • 프로세스가 생성될 때마다 고유의 PCB 생성 & 프로세스가 완료되면 PCB 제거



구성

PCB 구성

  1. Process ID : 프로세스의 고유 ID
  2. Process State : 프로세스의 상태 (Create, Ready, Running 등등)
  3. Program Counter : 프로세스를 위해 실행될 다음 명령어의 주소
  4. Register : Accumulator, General Register 등을 포함하는 CPU Register의 값
  5. CPU Scheduling Information : 우선순위, 최종 실행시간, CPU 점유시간 등
  6. Memory management information : 해당 프로세스의 주소 공간 정보
  7. I/O Status : 프로세스에 할당된 입출력 장치 목록, 열린 파일 목록 등




Context Switching

멀티 태스킹

  1. CPU → 한 번에 하나의 프로세스만 수행 가능
  2. 여러 개의 프로세스 동시 수행 필요
  3. 동시에 수행하는 것처럼 보이게 하기 위해서 여러 개의 프로세스를 번갈아가며 수행

인터럽트 핸들링

  • 인터럽트 발생

    • I/O request : 입출력 요청
    • time slice expired : CPU 사용시간 만료
    • fork a child : 자식 프로세스 생성
    • wait for an interrupt : 인터럽트 처리 대기

시스템 콜

  • 사용자와 커널 모드 전환



과정

Context Switching 과정

  1. Process P1이 실행되는 도중 인터럽트 or 시스템 콜 발생
  2. PCB1에 P1의 정보를 저장, PCB2의 상태 로드
  3. Process P2 실행

Overhead

문맥을 교환하는 동안에는 유용한 작업을 수행할 수 없기 때문에, 문맥 교환 시간은 일종의 오버헤드라고 할 수 있다.




references
👉 https://junsangkwon.tistory.com/45