문맥 전환
설명 영상 문맥 전환 · 2:23
왜 배우는가: 문맥 전환은 멀티태스킹 운영체제가 CPU를 여러 프로세스에 나눠 주는 핵심 동작이며, 스케줄링·인터럽트·동기화 문제의 공통 기반이다. 실무에서는 성능 오버헤드와 응답시간을 좌우하고, 시험에서는 문맥의 내용, 전환 절차, 발생 조건, 스택·SP·레지스터 관계를 묻는 문제로 반복해 출제된다.
출제 이력: 제110회 4교시 2번, 제108회 2교시 4번, 제98회 3교시 3번
1. 한 줄 정의와 핵심 키워드
문맥 전환은 CPU를 점유하던 프로세스의 문맥을 PCB에 저장하고 다음 프로세스의 문맥을 복원해 CPU 제어권을 넘기는 동작이다.
- 문맥 전환(Context Switch)
- 문맥(Context)
- 프로세스 제어 블록(PCB)
- 프로그램 카운터(PC)
- 스택 포인터(SP)
- 레지스터 상태
- 준비 큐(Ready Queue)
- 오버헤드
2. 개념 풀이
쉽게 말하면 CPU는 한 번에 한 프로세스만 실행한다. 여러 프로세스를 번갈아 실행하려면, 지금까지 하던 일의 진행 상태를 잠시 보관하고 다른 프로세스의 보관된 상태를 꺼내 이어 가야 한다. 이 교체 과정이 문맥 전환이다.
정식 정의로는 문맥 전환이란 운영체제가 한 프로세스(또는 스레드)의 실행 문맥을 저장하고, 다른 프로세스의 실행 문맥을 복원하여 CPU의 제어권을 이양하는 과정이다. 문맥은 프로세스가 실행을 재개하는 데 필요한 모든 정보의 집합이다.
문맥은 프로그램 카운터, 범용 레지스터 값, 스택 포인터, 상태 레지스터(플래그), 메모리 관리 정보(페이지 테이블 기준 주소 등)를 포함한다. 이 정보는 프로세스 제어 블록(PCB, Process Control Block)에 저장된다. PCB는 커널의 자료 구조로, 프로세스 식별자, 상태, 우선순위, 스케줄링 정보, 메모리 정보, 저장된 레지스터 값을 담는다.
문맥 전환에서 저장과 복원은 쌍을 이룬다. 현재 프로세스의 CPU 레지스터 값을 자신의 PCB에 쓰고, 다음 프로세스의 PCB에서 레지스터 값을 CPU로 읽어 들인다. 그 결과 CPU는 다음 프로세스가 중단된 바로 그 지점부터 실행을 이어 간다.
스택(Stack)은 프로세스마다 독립적으로 가진다. 함수 호출의 복귀 주소, 지역 변수, 임시 값이 여기에 쌓인다. 스택 포인터는 현재 스택의 꼭대기 주소를 가리키는 레지스터다. 문맥에 스택 포인터가 포함되므로, 전환 후 복원된 SP가 가리키는 스택을 따라 프로세스가 이전 호출 상태로 돌아간다.
3. 등장 배경과 필요성
초기 컴퓨터는 한 번에 한 작업만 처리하는 단일 작업(단일 프로그래밍) 방식이었다. 입출력을 기다리는 동안 CPU가 놀았기 때문에 활용률이 낮았다. 이를 해결하려고 여러 작업을 메모리에 올려 두고 CPU를 나눠 쓰는 멀티태스킹이 도입되었다.
멀티태스킹에서는 프로세스가 입출력을 요청하면 봉쇄(대기) 상태로 들어가고, 그동안 CPU를 다른 준비 상태 프로세스에게 넘겨야 한다. 이때 CPU가 유휴 상태로 낭비되지 않도록 문맥 전환이 필요해졌다. 타이머 인터럽트로 일정 시간마다 CPU를 빼앗는 선점형 스케줄링도 문맥 전환을 자주 일으킨다.
문맥 전환이 없으면 프로세스 하나가 CPU를 독점하거나, 대기 중인 프로세스가 영원히 실행되지 못한다. 따라서 응답성과 공정성을 확보하려면 문맥 전환이 반드시 필요하다. 다만 전환 자체도 CPU 시간을 쓰는 오버헤드이므로, 전환 빈도와 비용 사이의 균형이 설계 쟁점이 된다. 타이머 인터럽트 간격을 지나치게 짧게 잡으면 전환이 너무 잦아 오버헤드가 커진다.
이어지는 내용
- 4. 구성요소·원리·절차
- 5. 관련 법령·기준·표준
- 6. 유형과 비교
- 7. 장단점·한계와 개선 방향
- 8. 사례 또는 계산 예제
- 9. 최근 동향과 쟁점
- 10. 흔한 실수와 채점 포인트
- 11. 암기 정리
- 12. 답안 구성 예시
- 13. 예상 변형 문항
로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.
앱에서 이 단원 읽기