Context Switching (문맥교환) 이란?
Context Switching(문맥교환)은 프로세스를 실행하는 중에 다른 프로세스를 실행하기 위해
실행 중인 프로세스의 상태를 저장하고 다른 프로세스의 상태값으로 교체하는 작업이다.
콘텍스트 스위칭이 일어날 때 PCB의 내용이 변경된다.
실행 중인 프로세스의 작업 내용을 PCB에 저장하고
실행될 기존 프로세스의 PCB의 내용대로 CPU가 다시 세팅된다.
Context Switching 이 일어날 때 PCB에 변경하는 값들로는
프로세스 상태, 다음 실행할 명령어의 주소를 담고 있는 프로그램 카운터,
각종 레지스터 값 등이 존재한다.
Context Switching (문맥교환) 과정
프로세스 두 개가 문맥교환하는 상황을 살펴보자.
프로세스 A 가 실행을 하는데 CPU 점유 시간을 초과하였다.
운영체제는 프로세스 A 기 CPU를 너무 오래 사용했다고 판단하고 인터럽트를 발생시킨다.
프로세스A 는 하던 일을 멈춘다.
그리고 나중에 현재 상태에서 시작되어야 하기 때문에,
현재 CPU의 레지스터 값 등을 PCB A에 저장한다.
이제 PCB B를 참조해서 이전 프로세스 B의 상태로 CPU의 레지스터 값을 설정한다.
여기에는 다음 실행할 명령어의 주소를 가지고 있는 프로그램 카운터(PC)를 가지고 있기 때문에
바로 프로세스 B의 명령어를 실행할 수 있다.
프로세스 B가 점유시간 동안 CPU를 사용하다가
점유시간이 다되면 운영체제는 다시 인터럽트를 발생시킨다.
그리고 프로세스 B의 현재상태를 PCB B에 저장하고
PCB A에서 프로세스 A의 상태를 가져오고 다시 프로세스 A를 실행시킨다.
이런 식으로 메모리에 있는 모든 프로세스들은 콘텍스트 스위칭을 한다.
컨텍스트 스위칭을 하는 이유는 다양하다.
CPU 점유시간이 다 되거나,
I/O 요청이 있거나 다른 종류의 인터럽트가 있을 때 발생할 수 있다.
'운영체제' 카테고리의 다른 글
[운영체제] Thread (쓰레드) (0) | 2024.05.22 |
---|---|
[운영체제] 프로세스의 생성/종료 (0) | 2024.05.21 |
[운영체제] 프로세스 상태 (Process Status) (0) | 2024.05.16 |
[운영체제] PCB(Process Control Block) (0) | 2024.05.14 |
[운영체제] 프로그램과 프로세스 (0) | 2024.05.10 |