컨텍스트 스위칭이란 무엇인지 정리를 해보자.
컨텍스트 스위칭이 무엇인가에 대해서 알아보기전에 컨테스트가 무엇인지 알고가자.
컨텍스트(Context) 란
운영체제에서 컨텍스트란 어떤 프로그램이 실행중인 일체의 상황을 말한다. 그 일체의 상황은 메모리와 CPU레지스터들에 고스란히 담겨 있는데 메모리에는 프로그램의 코드와 전역 변수 데이터, 힙(동적 할당받아 저장한 데이터), 그리고 호출된 함수들의 매개변수와 지역변수 등이 저장된 스택이 있다. 그리고 CPU의 PC레지스터에는 현재 실행 중인 코드의 메모리 주소가, 데이터 레지스터에는 이전에 실행된 결과 값이나 현재 실행에 사용될 데이터 값들이, 상태 레지스터에는 현재 CPU의 상태 정보가, SP레지스터에는 스택의 톱 주소가 저장되어 있다.
컨텍스트 스위칭이란?
아래의 그림과 같이 운영체제가 현재 실행중인 프로그램 A의 컨텍스트를 저장해두고, 다른 프로그램 B을 실행시키기 위해 프로그램 B의 저장된 컨텍스트들 CPU로 옮기는 것을 컨텍스트 스위칭이라고 한다.
즉, 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업을 Context Switch(Context Switching)라고 한다.
운영체제가 프로그램 A의 실행을 중단시키고 프로그램 B를 실행시키기 위해 이루어지는 컨텍스트 스위칭 과정이다.
- 운영체제는 먼저 프로그램 A의 컨텍스트들 구성하는 현재 CPU 레지스터들의 값을 메모리의 특정 영역에 저장한다. 컨텍스트 정보들은 운영체제만 접근할 수 있는 메모리 영역에 저장되는데 구체적으로는 프로세스 제어 블록(PCB)라고 불린다.
- 프로그램 B의 저장된 컨텍스트 정보를 CPU에 적재한다. 이때부터 CPU의 PC레지스터는 프로그램 B가 실행을 재개할 코드의 주소를 가리키게 되고, SP레지스터 역시 프로그램 B의 스택 영역을 가르키게 된다.
- CPU가 실행을 시작하면 중단되기 전과 동일한 상태에서 프로그램 B가 실행된다.
'Computer Science > OperatingSystem' 카테고리의 다른 글
[OS] 프로세스와 스레드는 어떤 차이점이 있나요? (0) | 2023.06.30 |
---|---|
[OS] 요구 페이징 (0) | 2023.04.19 |
[OS] CPU 스케줄링이란? (0) | 2023.04.17 |
[OS] 참조의 지역성과 참조 집합 (0) | 2023.03.05 |
[OS] 가상 메모리(Virtual Memory System) 란? (0) | 2023.02.23 |