앞서 프로세스, 스레드에서 Context Switching
에 대해 잠깐 알아봤다.
이번 시간을 통해 조금 더 깊게 내려가서 공부해보자.
1. Context Switching이란?
- 동작 중인 프로세스가 해당 프로세스의 상태를 보관하고, 대기하고 있던 다음 순번의 프로세스 상태를 적재하여 이전에 보관했던 프로세스 상태를 복구하는 과정을 말함
- 프로세스의 상태는 해당 프로세스 제어 블록(PCB)에 기록되어 있다.
- Context Switching 진행하는 동안 다른 작업을 할 수 없으므로, Context Switching 시간은 오버헤드라고 볼 수 있다.
2. 진행 과정
1) CPU에서 다른 프로세스로 전환 시, 기존에 동작 중인 프로세스의 상태를 PCB에 저장
2) 대기열에서 다음 프로세스를 선택하고 PCB를 복원한다.
3) PCB의 프로그램 카운터가 로드되어 선택한 프로세스에서 동작 계속 진행
잠깐만!! 용어 정리!!
PCB
란?
- Process Control Block
- 프로세스를 관리하는데 있어 필요한 정보(메타 데이터)를 담고있는 운영체제 커널의 자료구조. PCB는 운영체제가 프로세스를 표현한 것이라고 생각하면 된다.
- 프로세스가 생성될 때마다 고유의 PCB가 생성되며, 프로세스가 완료되면 PCB는 제거된다.
3. 발생 시점
인터럽트 발생 시, 실행 중인 CPU 사용 할당 시간을 모두 소모하거나, 입출력을 위해 대기하는 경우에 발생한다.
1) running -> ready
2) ready -> running
3) running -> waiting
4. 오버 헤드
- Context Switch Overhead란 Context Switching에 걸린 시간과 메모리를 뜻한다.
- 프로세스 작업 중에 오버 헤드를 감수해야 하는 상황
-> 프로세스 수행 중 입출력 이벤트 발생으로 대기 상태로 전환시켰을 때,
CPU를 놀게 놔두는 것보다 다른 프로세스를 수행 시키는 것이 효율적이다.
참고자료