
컨텍스트 스위칭에는 프로세스 컨텍스트 스위칭과 스레드 컨텍스트 스위칭이 있다.
한번 알아보자!

실행프로그램.exeCtrl+Alt+Delete 누르면 나오는 실행중인 프로그램들
프로세스는 위 그림과 같이 코데힙스라고 불리는 메모리 구조와
운영체제(OS)가 프로세스를 관리하는데 사용하는 PCB(Process-Control-Block)라고 하는 자료구조를 갖고 있다.
코데힙스(Code/Data/Heap/Stack)에서 코드(Code)는 Text 영역과 같다.
호랑이 담배피던 시절에는 하나의 프로세스가 끝나야 다음 프로세스가 실행이 될 수 있었다고 한다.
이게 무슨말이냐면 게임하다가 카톡하려면 게임을 끄고 카톡을 켜야한다...😇

그림과 같이 CPU가 메모리에 적재된 여러 프로세스들을 실행할 때, 굉장히 짧은 시간을 번갈아가면서 프로세스들을 실행시키도록 만들었다. → 멀티태스킹(Multi-Tasking)
이와 같은 시스템(멀티 태스킹)의 등장으로 우리는 동시에 여러 프로그램이 실행되는 것처럼 느낄 수 있게 되었다!
여러 프로세스를 동시에 실행하는건 좋았지만, 그만큼 CPU의 부하와 독자적인 메모리공간을 갖고 있기 때문에 메모리 자원도 많이 차지하였다. 메모리 공간을 공유하기에도 까다로웠고..!
그래서 나온게 바로 스레드(Thread)!

옛날에는 CPU 실행 단위가 프로세스였지만,
이제는 스레드가 CPU에서 실행되는 단위(unit of execution)가 된다.
위에서 말했듯 멀티태스킹 환경에서 프로세스들이 짧은 시간을 번갈아가며 실행되는 메커니즘을 컨텍스트 스위칭(Context-Switching)이라고 한다.
(2)에서 설명했듯이 멀티태스킹 시스템에서 CPU가 짧은 시간 단위로 작업을 전환하여 여러 작업을 처리하는데, 컨텍스트 스위칭을 통해 시스템 자원을 효율적으로 처리할 수 있기 때문에 필요하다!
I/O 작업을 수행해야 할 경우I/O 작업: CPU가 직접 연산하지 않고, 외부 자원을 기다리는 작업운영체제(OS)의 커널(Kernel)이다.
커널은 시스템 자원을 관리하고 프로세스 및 스레드의 상태를 조정하여 효율적인 작업 처리를 담당한다.
같은 프로새스내에 스레드 컨텍스트 스위칭은 메모리 영역이 공유되기 때문에 추가적인 작업이 발생하지 않는다. 반면에 프로세스 컨텍스트 스위칭은 가상 메모리 영역을 설정받고 할당받아야 되는 작업이 필수적이다.
따라서 스레드 컨텍스트 스위칭이 더 빠르다!
우테코 - 프로세스와 스레드
쉬운코드 - 스레드/프로세스/멀티태스킹 등
프로세스와 스레드 차이
매일메일 - 컨텍스트 스위칭