(TIL) 2025-01-31
컨텍스트 스위칭(context switching)
컨텍스트 스위칭(context switching)은 컴퓨터 시스템에서 운영 체제가 여러 프로세스를 번갈아 가며 실행하는 과정이다. 이는 여러 프로세스가 CPU를 공유할 수 있도록 하여 다중 작업을 처리하는 데 중요한 역할을 한다. 즉, 하나의 프로세스가 실행 중일 때, 다른 프로세스를 실행하기 위해 CPU가 현재 실행 중인 프로세스의 상태를 저장하고, 새로운 프로세스의 상태를 복원하는 과정이다.
프로세스 상태 저장
현재 CPU에서 실행 중인 프로세스가 있다면, 그 프로세스의 상태(state) (예: 프로그램 카운터, 레지스터 값 등)를 프로세스 제어 블록(PCB, Process Control Block)에 저장한다. 이때, CPU는 해당 프로세스의 실행 상태를 저장하고, 나중에 다시 복구할 수 있도록 준비한다.
새로운 프로세스의 상태 복원
운영 체제는 새로운 프로세스를 실행하기 위해, 해당 프로세스의 PCB에서 이전에 저장된 상태를 복원한다. 여기에는 프로세스가 실행되던 시점의 레지스터 값이나 프로그램 카운터 등이 포함된다. 이를 통해 CPU는 새로운 프로세스를 실행할 준비가 된다.
프로세스 스케줄링
운영 체제는 프로세스 스케줄러를 통해 실행할 프로세스를 선택한다. 이를 통해 여러 프로세스가 공정하게 CPU를 사용할 수 있도록 관리한다.
컨텍스트 스위칭 비용
컨텍스트 스위칭은 CPU의 리소스를 소모하는 작업이다. 상태 저장과 복원, 프로세스 스케줄링 등에 시간이 걸리기 때문에, 너무 자주 발생하면 성능 저하를 일으킬 수 있습니다. 그래서 운영 체제는 이를 최소화하려고 최적화한다.
예시
사용자가 웹 브라우저를 사용하면서 동시에 음악을 듣는다고 가정해봅시다. 이 경우 웹 브라우저와 음악 재생 애플리케이션은 각각 독립적인 프로세스이며, CPU는 둘을 번갈아 가며 실행한다. 이때, 컨텍스트 스위칭이 일어나며 CPU는 각 애플리케이션의 상태를 기억하고 스위칭을 통해 사용자에게 동시에 실행되는 것처럼 보여진다.
컨텍스트 스위칭은 CPU가 여러 프로세스를 순차적으로 실행할 수 있게 해주는 중요한 기능으로, 시스템 자원을 효율적으로 관리하는 데 중요한 역할을 한다. 하지만 너무 빈번한 스위칭은 성능에 영향을 줄 수 있기 때문에 이를 최적화하는 것이 중요한다.