CS 지식/운영체제

컨텍스트 스위칭(Context Switching)

naksnaks 2023. 2. 13.
반응형

컨텍스트 스위칭

컨텍스트 스위칭이란?

컨텍스트 스위칭
출처 : https://www.crocus.co.kr/1364


위 그림은 컨텍스트 스위칭을 프로세스 P0와 프로세스 P1을 예시로 설명해줍니다.

  1. P0를 실행(execute) 하던 중 인터럽트(interrupt)나 시스템 콜(system call)이 일어나게 됩니다.
  2. 운영체제에서 P0에 대한 상태를 PCB0에 저장합니다.
  3. P1를 이용하기 위해 PCB1에서 P1에 대한 상태를 불러옵니다.
  4. 그동안 P0는 대기(idle) 상태입니다.
  5. 마찬가지로 P1을 실행하던 중 인터럽트나 시스템 콜이 일어나면 1~4 단계를 반복 해줍니다.

이렇게 프로세스나 스레드가 실행대기를 반복하는 것이 컨텍스트 스위칭 입니다.

이를 통해 멀티 프로세싱이나 멀티 스레딩 기능을 동작하게 합니다.

컨텍스트 스위칭 장점

  • 실시간으로 사용하는 것 처럼 보여집니다.
  • 이전에 실행하던 데이터 정보를 불러와서 이어서 실행할 수 있습니다.
  • 우선순위가 높은 작업이 생긴다면 우선적으로 수행 가능합니다.

컨텍스트 스위칭 단점

  • 컨텍스트 스위칭이 잦으면 오버헤드가 발생하여 성능이 떨어집니다. (프로세스 P0에서 P1으로 변경될 때, P1이 바로 실행되는 것이 아니라 P0의 상태를 PCB0에 저장하고, PCB1에서 P1의 상태를 불러오는 작업이 수행됩니다. 이 때 CPU는 아무런 일도 하지 못하게 됩니다.)

PCB(Process Control Block)

PCB
출처 : https://blog.naver.com/chanheeis/221269778250

PCB란?

  • PCB는 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 저장 장소입니다.
  • 프로세스 생성 시 만들어지고, 주기억장치에 유지됩니다.
  • PCB에는 다음과 같은 정보가 저장됩니다.
    • Process State : 생성, 준비, 수행, 대기, 중지
    • Program Counter(PC) : 프로세스가 다음에 실행할 명령어 주소 (코드 한 줄 한 줄을 가리키는 주소 레지스터)
    • register : 누산기, 스택, 색인 레지스터

컨텍스트의 스위칭이 가능한 이유

  1. 프로그램 카운터(PC)
  • 프로세스가 다음에 실행할 명령어 주소 (코드 한 줄 한 줄을 가리키는 주소 레지스터)
  1. 스택 포인터(SP)
  • CPI안에 스택에 데이터가 채워진 마지막 위치를 가리키는 레지스터입니다.

콘텍스트 스위칭에서의 스레드 vs 프로세스

프로세스와 스레드
출처 : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

  1. 스레드 : 프로세스에서 Stack 부분만 가지고 있습니다.
  2. 프로세스 : 스택을 포함하여 공유자원인 코드, 데이터, 힙도 포함합니다.

결론

스레드에서의 콘텍스트 스위칭이 공유자원을 제외한 정보를 저장하기 때문에 스레드에서의 콘텍스트 스위칭이 더 빠르다.


참조
crocus - 컨텍스트 스위칭이란?
Jongminfire - 컨텍스트 스위칭이란?
hyunie-y - 컨텍스트 스위칭
beststar - 콘텍스트 스위칭

반응형

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

Deadlock(데드락)  (0) 2023.02.20
동기 vs 비동기, 블로킹 vs 논블로킹  (0) 2023.02.20
프로세스(Process) vs 스레드(Thread)  (2) 2023.02.16
메모리의 구조  (0) 2023.02.16

댓글

💲 추천 글