[운영체제] Context Switching

dl_edge·2021년 9월 29일
1

운영체제

목록 보기
5/7

🚌 Context Switching

컨텍스트 스위칭에 대해서 알아보자.


Context Switching이란?

CPU 사용을 A 라는 프로세스에서 B 라는 다른 프로세스에 넘겨주는 과정을 말한다.

: 현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 적용하는 과정

어떤 프로세스에게 CPU 사용을 넘겨줄지에 대해서는 CPU Scheduling에 의해 결정된다.

why?

"멀티 프로그래밍"의 이점을 살리기 위해서다.

  • 컴퓨터가 매번 하나의 Task만 처리할 수 있다면?
    • 해당 Task가 끝날 때 까지 다음 Task는 기다려야 한다.
    • 또한, 반응속도가 매우 느리고 사용하기 불편하다.
  • 다양한 사람들이 동시에 사용하는 것처럼 하기 위해서는?
    • 멀티테스킹을 통해 빠른 반응속도로 응답할 수 있다.
    • 빠른 속도로 Task를 바꿔가며 실행하기 때문에 사람의 눈으론 실시간 처럼 보이게 된다.
    • CPU가 Task를 바꿔가며 실행하기 위해 Context Switching이 필요하게 되었다.

Context Switching은 어떻게 진행될까?

  • Task의 대부분 정보는 Register에 저장되고 PCB(Process Control Block)로 관리된다.
  • 현재 실행하고 있는 Task의 PCB 정보를 저장. (Process Stack, Ready Queue)
  • 음 실행할 Task의 PCB 정보를 읽어 Register에 적재하고 CPU가 이전에 진행했던 과정을 연속적으로 수행한다.

Thread 간의 Context Switching 비용이 낮은 이유?

프로세스 간의 Context switching 시 PCB 값 전체를 바꿔야 한다.

하지만, Thread는 data, heap, code 영역을 공유하고 있기 때문에 stack 과 PC register의 값이 들어있는 TCB만 바꾸면 되기 때문에 Cost가 낮은 것이다.

profile
TIL (Today I Learned!) 전공 까먹기 싫어서 정리하는 중🎁

0개의 댓글