컨텍스트 스위칭(Context Switching)
Q. 컨텍스트 스위치(Context Switching)이 무엇인지 설명해주세요.
먼저 컨텍스트란 CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보를 말합니다. 컨텍스트 스위치란 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스 상태 또는 레지스터 값을 교체하는 작업입니다. 이러한 컨텍스트 스위칭은 커널(Kernel)에 의해 수행되며, 대표적인 예시로 여러 프로세스와 스레드들을 동시에 실행하는 것처럼 보이기위해 사용됩니다.
Q. 컨텍스트 스위칭이 발생할 때 프로세스의 정보는 어디에 저장되나요?
프로세스의 정보는 PCB(Process Control Block)라고 하는 자료구조에 저장됩니다. PCB는 운영체제가 프로세스를 관리하기 위해 프로세스 마다 하나씩 가지고 있는 데이터 구조입니다. PCB에는 프로세스 상태, 프로그램이 다음에 실행할 명령어의 주소, CPU 레지스터 값과 스케줄링 정보 등 다양한 정보를 저장하고 있습니다. 이러한 PCB는 운영체제 커널 영ㅇ역에 존재하며, 컨텍스트 스위칭이 발생할 때마다 현재 실행 중인 프로세시의 상태를 PCB에 저장하고, 새로운 PCB 정보를 CPU에 복원하는 작업이 이루어집니다.
Q. 컨텍스트 스위칭이 자주 일어나면 어떤 문제가 발생할 수 있나요?
첫번째로 메모리 사용량이 증가하고 시스템 성능 저하가 발생합니다. 각 프로세스의 컨텍스트 정보를 PCB에 저장하고 관리하고, 컨텍스트 스위칭이 일어날 때마다 CPU는 실행 중이던 프로세스의 상태를 저장하고 새로운 프로세스의 상태를 불러와야 하는데, 이 과정에서 상당한 리소스가 필요합니다. 둘째, 캐시 적중률(Cache Hit Rate)이 감소합니다. 프로세스가 바뀔 때마다 캐시 메모리에 저장된 데이터가 무효화되고 새로운 프로세스의 데이터로 채워져야 하기 때문에, 캐시의 효율성이 떨어지게 됩니다. 셋째, CPU가 실제 작업을 처리하는 시간보다 컨텍스트 스위칭에 소요되는 시간이 더 많아질 수 있어, 전반적인 시스템의 처리량(Throughput)이 감소하게 됩니다. 이런 문제들을 "스레싱(Thrashing)"이라고 하며, 시스템의 실제 작업 처리 능력을 크게 저하시킬 수 있습니다.
Last updated