ContextSwitching
ContextSwitching의 정의
CPU에서 실행할 프로세스 혹은 쓰레드를 다른 프로세스 혹은 쓰레드로 전환하는 방법을 의미합니다.
프로세스에서 쓰레드, 쓰레드에서 프로세스로 전환하는것은 불가능하며 각각의 동일한 구조끼리 실행중인 상태를 전환 하는것을 의미합니다.
ContextSwitching을 하는 과정에 대해 알아보기 전에, 몇가지 미리 알아야할 내용을 설명드리겠습니다.
스케줄러(Scheduler)
- 어떤 프로세스나 스레드가 CPU를 사용할지 작업을 결정하는 담당
컨텍스트(Context)
- CPU가 프로세스나 스레드를 실행하기 위한 모든 정보를 포함 하는것.
오버헤드(OverHead)
- A라는 행동을 처리할 시 10의 시간이 걸렸는데, 안전성을 고려하여 B라는 처리를 하였을 시 총 20의 시간이 소요되었다. 여기서 증가한 10의 시간을 오버헤드라고 한다.
- 오버헤드가 점점 누적될 시 시스템이 정지되거나 느려지는 등 심각한 오류가 생길 수 있다.
Process State
프로세스가 컨텍스트 스위칭을 하기위해 가지는 5가지의 상태가 있습니다..
- New : 프로세스가 생성되고 시작한다.
- Running : 프로세스가 동작중인 상태. 프로세스 명령어를 로딩해서 CPU에 옮기고있다.
- Waiting : Running상태의 프로세스가 동작되는동안 대기중인 상태
- Ready : 프로세스가 Ready Queue에 들어가서, 차례를 기다리고 있는 상태.
- Terminated : 모든걸 끝낸 프로세스 상태
PCB(Process Control Block)
- 컨텍스트 스위칭은 PCB라는 메모리의 공간에 Process 상태값들을 저장하는 블록.
- 프로세스는 여러개가 실행되는 방식으로 보이지만, TimeSharing을 통해 빠른 속도로 이동하며 프로세스들을 처리해준다.
ContextSwitching의 전환 과정
예시) 프로세스 P0의 상태값이 Running이다.
- 운영체제에서 스케쥴러에 의해 Interrupt 또는 SystemCall이 걸린 상태.
- 현재 Running이던 P0의 정보를 OS가 저장한다.
- P0의 상태값이 Waiting이 된다. 그 후 Queue구조(FIFO) P1의 상태값이 Running으로 변한다.
- 동시에 PCB1 Register에 저장되어있던 값이 P1과 관련된 정보로 변한다.
- 이때 CPU에서 실행되던 P0과 관련된 레지스터 값들이 PCB0에 저장된다.
- PCB1이 실행된다.
해당 컨텍스트 스위칭을 하는 과정에서 일정한 값의 오버헤드가 발생하며, 실행중인 프로세스가 전환이 됩니다.
정리 및 느낀점
정리
컨텍스트 스위칭이란, 프로세스 또는 쓰레드가 각각 다른 프로세스 또는 쓰레드에게 전환화는 것을 말한다.
프로세스는 5개의 상태값을 가질 수 있으며, 컨텍스트 스위칭을 하는 과정에서 상태에 따라 전환을 한다.
PCB는 프로세스의 정보를 저장하는 영역이며, 컨텍스트 스위칭시에 데이터를 옮기거나 저정하기 위해 사용한다.
참고내역 및 출처
'OS , 네트워크' 카테고리의 다른 글
[네트워크] 전송 지연 시간 (Latency) (0) | 2025.05.01 |
---|---|
[OS] - CPU 코어에 적합한 쓰레드의 개수 (Thread Pool,리틀의 법칙, 암달의 법칙) (0) | 2025.04.02 |
[OS] - 프로세스, 스레드 (Process, Thread) (0) | 2025.03.21 |
동기, 비동기, 블로킹, 논블로킹 (1) | 2025.03.11 |
OSI 7계층 (0) | 2025.03.10 |