[운영체제] Context Swtichinglegacy/Operating System2024. 5. 10. 11:10
Table of Contents
Context Switching이란?
멀티 프로세스 또는 멀티 스레드 환경에서 여러 프로세스 또는 스레드가 CPU를 공유하기 때문에 컨텍스트 스위칭이 발생한다.
진행 중이던 작업에서 다른 작업을 수행해야할 때, 현재 프로세스 또는 스레드는 지금까지 진행한 작업의 상태를 저장한다. 그리고 컨텍스트 스위칭을 통해 다른 작업을 수행하는 프로세스의 이전 작업 내용을 복원한다.
Context란?
Conext란 CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보들이다.
각 프로세스는 독립된 메모리 공간에 PCB(Process Control Block)을 저장하며, 프로세스의 정보인 Context가 저장된다.
PCB는 다음 정보를 저장한다.
- 프로세스 상태: 생성, 준비, 수행, 대기, 중지
- PC(프로그램 카운터): 프로세스가 실행할 다음 명령어 주소
- 레지스터
- PID(Process ID)
다른 프로세스가 CPU를 사용하기 위해 컨텍스트 스위칭이 발생할 때, PCB에 현재 작업 정보가 저장되고 다른 작업의 정보가 복원된다.
Context Swticing 과정
- 현재 실행 중인 작업의 상태 저장
- 실행 중인 프로세스 또는 스레드의 레지스터 상태, PC 등이 PCB에 저장된다.
- 다음 작업을 수행하기 위해 상태 변경
- 다음 작업을 담당하는 프로세스 또는 스레드를 준비시킨다.
- 작업 전환
- CPU는 OS 스케줄러에 의해 준비된 프로세스의 Context 정보를 가져와서 작업을 수행한다.
멀티 프로세스 환경에서 컨텍스트 스위칭
멀티 프로세스 환경에서의 컨텍스트 스위칭은 프로세스 간에 전환되는 과정이다.
각 프로세스는 독립된 메모리 공간을 갖기 때문에, 컨텍스트 스위칭이 발생하면 메모리 매핑 작업이 필요하기 때문에 오버헤드가 발생한다.
멀티 스레드 환경에서 컨텍스트 스위칭
멀티 스레드 환경에서 컨텍스트 스위칭은 같은 프로세스 내에 존재하는 스레드 간에 전환되는 과정이다.
즉, 같은 프로세스 내에서 전환되므로 메모리 매핑 작업이 필요하지 않다. 따라서 오버헤드가 크게 발생하지 않는다.