컨텍스트 스위칭 (Context Switching)
운영체제(OS)에서 하나의 프로세스나 스레드가 실행을 멈추고 다른 프로세스나 스레드를 실행하도록 전환하는 작업. 이 과정에서 시스템은 현재 실행 중인 작업의 상태를 저장하고, 새롭게 전환할 작업의 상태를 복원하여 실행을 계속하게 된다. 컨텍스트 스위칭은 멀티태스킹을 지원하기 위해 필수적이다.
컨텍스트 스위칭 개념
- 프로세스/스레드: 여러 작업이 동시에 실행될 수 있도록 CPU가 각 작업을 교대로 실행한다.
- 컨텍스트(Context): 프로세스나 스레드의 실행 상태를 의미하며, CPU 레지스터 값, 프로그램 카운터, 스택 포인터, 메모리 맵 등을 포함한다.
- 컨텍스트 스위칭: 특정 작업의 컨텍스트를 저장하고, 새로운 작업의 컨텍스트를 복원하는 과정을 통해 CPU 제어권을 교체한다.
컨텍스트 스위칭 과정
- 현재 작업 상태 저장
현재 실행 중인 프로세스나 스레드의 상태 정보를 CPU 레지스터에서 PCB(Process Control Block, 프로세스 제어 블록)나 TCB(Thread Control Block)에 저장한다. PCB / TCB에는 프로세스 ID, CPU 레지스터 값, 프로그램 카운터, 스택 포인터 등의 정보가 포함된다.
- 새로운 작업 선택
스케줄러는 현재 실행 가능한 프로세스들 중에서 다음에 실행할 프로세스를 선택한다. 이 과정에서 OS의 스케줄링 정책에 따라 우선순위, 라운드 로빈 방식, 또는 다른 스케줄링 알고리즘이 적용된다.
- 새 작업의 상태 복원
선택된 프로세스의 PCB에서 CPU 레지스터 값을 불러와 복원하고, 프로그램 카운터를 설정하여 다음 명령어 주소로 이동한다. 스택 포인터를 복구하여 해당 프로세스나 스레드의 스택을 사용할 수 있게 한다.
- 작업 실행 재개
CPU는 이제 새로 선택된 프로세스의 명령어를 실행하기 시작한다.
컨텍스트 스위칭 비용
- 시간적 오버헤드: 컨텍스트 스위칭은 CPU 레지스터 저장/복구, 스케줄링 결정 등으로 인해 추가적인 시간이 소모된다.
- 메모리 오버헤드: PCB/TCB 및 스케줄러가 관리하는 자료 구조에 추가적인 메모리 리소스가 필요하다.
컨텍스트 스위칭은 멀티태스킹 환경에서 필수적인 기능이지만, 잦은 스위칭은 시스템 성능에 영향을 줄 수 있기 때문에 스케줄링 정책에서 이를 최소화하려는 노력이 필요하다!
'CS' 카테고리의 다른 글
레디스 캐싱 전략 (0) | 2024.12.18 |
---|---|
레이스 컨디션 ? (0) | 2024.11.14 |
프로세스(Process) / 스레드(Thread) ? (0) | 2024.11.08 |
면접 질문 연습하기(2) (1) | 2024.10.25 |
TCP 서버를 공부하기 전에... (2) | 2024.10.17 |