컨텍스트 스위칭이란(정의)
CPU가 한 프로세스에서 다른 프로세스로 전환할 때 발생하는 일련의 과정을 뜻한다
CPU는 한번에 하나의 프로세스만 실행할 수 있으므로, 여러개의 프로세스를 번갈아가며 실행하여 CPU의 활용률을 올릴 수 있게 도와주는 것이 컨텍스트 스위칭의 필요성이다. 또한, 이런 컨텍스트 스위칭을 결정하는 주체는 스케줄러이다.
그전에 이해를 돕기 위해 CPU의 두가지 처리 방식에 대해 집고 넘어가면 좋다.
CPU의 작업 처리 방식에는 두가지가 존재하는데 하나는 병렬성이고 또 하나는 컨텍스트 스위칭이 일어나는 동시성이다.
1. 병렬성
병렬성은 직관적으로 명령어를 메모리에서 뽑아 해석하고 실행하는 반도체 유닛인 여러개의 코어에 맞춰 여러개의 프로세스, 스레드를 돌려 병렬로 작업들을 동시 수행하는 것을 말한다.
2. 동시성
동시성은 프로세스들을 아주 잘게 나누어 아주 조금씩만 작업을 수행하고 다음 작업으로 넘어가는 식으로 동작된다. 이렇게 하는 이유는 여러 작업을 동시에 처리하는 것처럼 보이게 만들어, 사용자에게 더 빠른 반응성을 제공하기 위해서다. 그리고 이렇게 진행 중인 작업들을
A → B → C → D 로 번갈아 바꾸는 것을 Context Switching 이라고 부른다.
컨텍스트 스위칭의 필요성
논리적인 효율성을 위해서 CPU상에서 사용되는 동시성과 컨텍스트 스위칭
4코어 8스레드의 CPU 환경에서 현재 총 16개의 작업이 있다고 가정을 해보자. 그중 8개는 오래 걸리는 작업이고, 나머지 8개는 짧은 시간을 필요로 하는 작업이라고 한다. 논리적인 8개의 코어이니 최대 8개까지 동시에 실행할수 있을텐데, 만일 최악의 경우 8개의 오래 걸리는 작업이 먼저 동시에 처리되기 시작했다고 하자.이 경우 나머지 가벼운 8개의 작업은 처리하는데 짧은 시간이 걸리는 데에도 불구하고 현재 처리중인 8개의 작업이 다 끝날때 까지 기다려야 할 것이다.
따라서 이러한 비효율적인 면을 극복하기 위해
작업을 아주 잘게 나눠 번갈아 가면서 처리하는 동시성 개념을 채택한 것이다.
결론적으로, n개의 작업을 동시에 처리해야할때, 최대한 효율적으로 일을 하고자 프로세스가 멀티플레이를 한다고 보면 된다.
그렇다면 어딘가에 계속 작업의 흐름을 저장해야할텐데 프로세스의 정보를 담는 저장소가 바로 PCB다.
PCB
PCB는 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보 저장하는 임시 저장소
TIP1: 프로세스가 생성되면, 메모리에 해당 프로세스의 PCB가 함께 생성, 종료, 삭제가 된다.
TIP2: 프로세스가 실행되는 순서는 스케줄러가 정의한 priority 순서대로 진행된다.
컨텍스트 스위칭 과정
idle(대기) Executing(실행)
Context Switching Overhead
위 그림에서 P1가 interrupt되고 P2가 불러와질때 바로 불러와지는 것이 아니라, 잠시 동안 idle 과정을 갖는 이유는 프로세스의 변경 과정에서 프로세스의 상태, 레지스터 값 등이 저장되고 불러오는 등의 작업이 수행 되기 때문이다.
결론
컨텍스트 스위칭이란 CPU의 동시성을 위해 여러 프로세스를 짧게 나누어 처리할때, CPU가 한 프로세스에서 다른 프로세스로 전환할 때 발생하는 일련의 과정을 말한다. 이는 CPU의 활용도를 높여줌으로써 여러 작업을 마치 동시에 처리하는 것과 같은 모습을 보여줄 수 있다.
'운영체제' 카테고리의 다른 글
멀티스레드 프로그래밍과 ThreadSafe (1) | 2025.02.01 |
---|---|
"동기-비동기"와 "블로킹-넌블로킹"의 차이 (0) | 2025.01.31 |
프로세스와 스레드의 차이 (0) | 2025.01.31 |