Context Switching 을 알기위해선 context와 PCB의 역할에대해서 먼저 알아보자
쉽게 말하여 CPU가 해당 프로세스를 실행하기 위한 정보들 이라고 생각해라!
그럼 이 정보들은 어디에 담아두는걸까...? 바로 PCB이다!
PCB(process control block) = process를 컨트롤 하기위한 블럭
작업의 주체가 현재 Context를 잠시 중단하고 다른 Context를 실행하는것을
Context Switchig이라 한다
CPU의 코어가 1개라면 동시에 단 하나의 프로세스만 실행이 가능하다. CPU scheduling을 통해서
하나의 CPU를 여러 작업들이 공유할 수 있게 cpu 시간을 나누어 작업을 수행한다.
아~ 프로세스간의 context switching이라는게 있구나??
아~ 프로세스속에서도 thread간의 context switching도 하는구나?
어? 그렇다면 Process는 하나이상의 thread로 동작하니까.... Context switching의 최소 단위는 TCB네!!!
이렇게 좋다면.... Context switching 자주쓰는게 낫지않을까...? 대답은 NO!!!!!
왜 안좋을까? 그림을 참고해보자
위 그림을 보면 프로세스가 P0가 실행 중인 상태(executing)에서 유휴 상태(idle)가 될때
프로세스 P1이 곧바로 excuting이 되지 않고 idle을 좀 더 하다가 excuting이 된다.
왜 이럴까?
그 이유는 프로세스 P0의 상태를 PCB에 저장하고 프로세스 P1상태를 PCB에서 가져와야한다.
그런데 이 과정에서 PCB를 저장하고 가져올 때 CPU는 아무런 일도 하지 못하게된다.
아~ 그렇다면 아무런 일도 못하는게 자주일어난다면 성능저하가 될수밖에 없겠구나?
Overhead(사용된 시간과 사용된 메모리의양)의 비용이 발생하여 성능이 떨어지는 이유네!!