컴퓨터 구조 및 운영체제

컨텍스트 스위칭

yu_gyeong 2024. 1. 21. 14:50

1. 컨텍스트 스위칭(Context switch)

  • 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전 프로세스의 상태(Context)를 보관하고, 새로운 프로세스의 상태를 적재하는 작업
  • 한 프로세스의 상태는 그 프로세스의 PCB에 기록되어 있다.

컨텍스트 스위칭

  • 프로세스 P0와 P1이 있다고 하자.
  • P0가 먼저 CPU를 점유중(executing)이고 P1이 대기중(idle)인 상태였다가, 얼마 후에는 P1이 점유중이고, P0가 대기중인 상태가 된다.
  • 이때 P0가 점유중에서 대기중으로 변할 때는 지금까지 작업 내용을 어딘가(PCB)에 저장해두어야 한다.
    → 즉 P0는 PCB에 저장해두어야 하고, P1이 가지고 있던 데이터는 PCB에서 가져와야 한다.
  • P0와 P1이 서로 대기 ↔ 점유를 번갈아가며 실행되는 것을 컨텍스트 스위칭 이라고 한다.

2. PCB(Process Control Block)

PCB

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

PCB에 포함되는 정보

  1. Pointer : 프로세스의 현재 위치 저장
  2. Process state : 프로세스의 각 상태(Create, Ready, Running, Waiting, Terminated) 저장
  3. Process number : 모든 프로세스에는 프로세스 식별자를 저장하는 고유한 ID인 PID가 할당된다.
  4. Program counter(PC) : 다음에 실행될 명령어의 주소 저장
  5. Registers : 누산기 및 범용 레지스터
  6. Memory limits : 운영체제에서 사용하는 메모리 관리 시스템에 대한 정보 저장
  7. List of open files : 프로세스에 할당된 열린 파일 목록 저장

3. 컨텍스트 스위칭의 오버헤드

  • 위의 그림에서 P0가 점유중에서 대기중으로 변경될 때 P1이 바로 점유되지 않는다.
    → P0의 상태를 PCB에 저장하고, P1의 상태를 PCB에서 가져와야 하기 때문
    → 이때 CPU는 아무런 일을 하지 못한다.
  • 따라서 컨텍스트 스위칭이 너무 잦으면 오버헤드(사용된 시간과 메모리의 양)가 발생하여 성능이 떨어진다.

4. 오버헤드 해결 방안

1. 프로그램 다중화 수준 낮춤

  • 다중 프로그래밍 수준을 낮춰 컨텍스트 스위칭 발생 빈도 줄이기

2. 스레드 이용

  • 스레드를 이용하여 컨텍스트 스위칭 부하 최소화
  • 스레드의 text, data, heap 영역은 프로세스의 것이기 때문에 자신의 PCB에는 스택 및 간단한 정보만 저장한다.
  • 따라서 프로세스 컨텍스트 스위칭보다 빠르다.

3. 스택 포인터 활용

  • 스택 포인터를 이용하여 컨텍스트 스위칭 부하 최소화

5. 면접 예상 질문

  1. 컨텍스트 스위칭이란 무엇인지 설명해주세요.
  2. 컨텍스트 스위칭의 오버헤드 해결 방안을 설명해주세요.

참고 URL

'컴퓨터 구조 및 운영체제' 카테고리의 다른 글

프로세스 동기화  (0) 2023.12.24
프로세스와 스레드  (1) 2023.12.18
CPU의 구조와 원리  (1) 2023.11.20
컴퓨터의 구성  (0) 2023.11.17