프로세스 = 실행 중인 프로그램 = 메모리에 적재됨
기본 정보(전제) : 메모리에 적재된 프로세스들은 한정된 시간동안 번갈아가며 실행됨
프로세스가 실행된다 = 운영체제에 의해 자원을 할당받았다
프로세스 A가 OS로부터 CPU를 할당받아 실행되다가, 타이머 인터럽트가 발생해 프로세스 B로 CPU 사용을 양보해야하는 상황
프로세스 A 입장에서는 잘 실행되고 있다가, 갑자기 할당받은 자원을 빼앗기는 상황 → 나중을 위해 각종 레지스터 값, 메모리 정보, 실행을 위해 열었던 파일, 사용한 입출력장치 등 지금까지의 중간 정보를 백업 필요
이때, 백업 대상이 되는 중간 정보(= 프로세스 수행을 재개하기 위해 기억해야 할 정보)를 **문맥(Context)**이라 함
<aside> 🥕
참고) 하나의 프로세스를 구성하는 메모리 내 정보
커널 영역
사용자 영역
프로세스의 문맥은 해당 프로세스의 PCB에 명시 프로세스의 CPU 사용 시간이 다 되거나 인터럽트가 발생하면 운영체제는 해당 프로세스의 PCB에 문맥을 백업하고, 뒤이어 실행할 프로세스의 문맥을 복구
프로세스는 하나만 실행되지 않음. 운영체제는 메모리에 적재된 다수의 프로세스를 관리하기 위해서 프로세스를 식별 가능한 커널 영역 내 정보(= PCB)를 이용
PCB(프로세스 제어 블록)은 프로세스와 관련된 다양한 정보를 내포하는 구조체의 일종 :
<aside> 🥕
보통 다음과 같은 정보들이 PCB에 담겨있음(운영체제마다 약간의 차이 존재) :
프로세스의 CPU 사용 시간이 다 되거나 인터럽트가 발생하면 운영체제는 해당 프로세스의 PCB에 문맥을 백업하고, 뒤이어 실행할 프로세스의 문맥을 복구
이처럼 기존 프로세스의 문맥을 PCB에 백업하고, PCB에서 문맥을 복구해 새로운 프로세스를 실행하는 것이 문맥 교환(즉, 문맥 교환이란, 여러 프로세스가 끊임없이 빠르게 번갈아 가며 실행되는 원리)