[운영체제] Context Switching이란?

Woogie·2023년 2월 7일
0
post-thumbnail

Context Switching


Context Switching 을 알기위해선 context와 PCB의 역할에대해서 먼저 알아보자

사전학습 : context, PCB

쉽게 말하여 CPU가 해당 프로세스를 실행하기 위한 정보들 이라고 생각해라!
그럼 이 정보들은 어디에 담아두는걸까...? 바로 PCB이다!
PCB(process control block) = process를 컨트롤 하기위한 블럭


1.Context Switching

작업의 주체가 현재 Context를 잠시 중단하고 다른 Context를 실행하는것을
Context Switchig이라 한다

CPU의 코어가 1개라면 동시에 단 하나의 프로세스만 실행이 가능하다. CPU scheduling을 통해서
하나의 CPU를 여러 작업들이 공유할 수 있게 cpu 시간을 나누어 작업을 수행한다.

  1. 프로세서가 지금까지 실행되던 프로세스(A)를 중지하고 다른 프로세스(B)의 PCB정보를 바탕으로 프로세스(B)를 실행하는 것을 Process Context Switiching이라 한다.

아~ 프로세스간의 context switching이라는게 있구나??

  1. 동일한 프로세스 속에서 하나의 쓰레드(a)를 중지하고 다른 쓰레드(b)의 TCB정보를 바탕으로 쓰레드 (b)를 실행하는것을 Thread Context Switiching이라고 한다.

아~ 프로세스속에서도 thread간의 context switching도 하는구나?

어? 그렇다면 Process는 하나이상의 thread로 동작하니까.... Context switching의 최소 단위는 TCB네!!!

2.Context Switiching의 단점

이렇게 좋다면.... Context switching 자주쓰는게 낫지않을까...? 대답은 NO!!!!!

왜 안좋을까? 그림을 참고해보자

위 그림을 보면 프로세스가 P0가 실행 중인 상태(executing)에서 유휴 상태(idle)가 될때
프로세스 P1이 곧바로 excuting이 되지 않고 idle을 좀 더 하다가 excuting이 된다.
왜 이럴까?
그 이유는 프로세스 P0의 상태를 PCB에 저장하고 프로세스 P1상태를 PCB에서 가져와야한다.
그런데 이 과정에서 PCB를 저장하고 가져올 때 CPU는 아무런 일도 하지 못하게된다.

아~ 그렇다면 아무런 일도 못하는게 자주일어난다면 성능저하가 될수밖에 없겠구나?
Overhead(사용된 시간과 사용된 메모리의양)의 비용이 발생하여 성능이 떨어지는 이유네!!

profile
ssafy_9th / CS

0개의 댓글