문맥 교환(Context Switching)이란?
문맥이란 CPU가 지금 실행 중인 작업의 상태 정보다.
문맥 교환은 말 그대로, 작업 A를 하다 말고, 작업 B로 넘어가기 위해 A의 상태를 저장하고 B의 상태를 불러오는 것.
책을 읽다가 책갈피를 꽂아두고, 다른 책을 펼쳐 읽는 것과 같다.
그리고 나중에 다시 돌아와 책갈피를 확인하고 이어서 읽는 것
왜 문맥을 교환해야 할까?
현대의 운영체제는 사용자가 동시에 여러 프로그램을 실행할 수 있게 해준다.
하지만 CPU는 한 번에 하나의 작업만 처리할 수 있기 때문에,
운영체제는 CPU를 여러 작업 사이에 번갈아 배정해서 실행한다.
이때 현재 작업의 상태를 저장하고, 다음 작업의 상태를 불러오는 과정이 바로 문맥 교환이다.
문맥에는 뭐가 들어 있을까?
문맥 정보 | 설명 |
Program Counter (PC) | 다음에 실행할 명령의 주소 |
CPU 레지스터 값 | 연산에 사용되던 변수 값 등 |
Stack Pointer | 함수 호출 정보가 있는 스택 위치 |
프로세스 상태 값 | 실행 중인지, 대기 중인지 등 |
메모리 정보 | 가상 메모리 주소 등 |
운영체제는 모든 정보를 PCB(Process Control Block)에 저장해두고,
필요할 때 다시 불러와서 작업을 이어서 실행한다.
문맥 교환의 단점 (오버헤드)
문맥 교환은 시스템이 여러 작업을 효율적으로 처리하게 해주는 좋은 기능이지만,
매번 작업을 저장하고 불러오는 데는 비용이 든다. 즉, 오버헤드 발생
오버헤드 요소 | 설명 |
시간 낭비 | 상태 저장/복원 자체가 CPU 자원을 소모함 |
캐시 무효화 | CPU 캐시가 날아가면서 성능 저하 발생 |
과도한 교환 | 너무 자주 바뀌면 오히려 작업이 느려짐 (thrashing) |
요약하자면
정의: CPU가 다른 작업으로 전환할 때, 현재 작업 상태를 저장하고 다음 작업을 불러오는 과정
왜 필요??: 멀티태스킹, 응답성 향상, 자원 효율성
어떻게 작동하는데?: 운영체제가 문맥을 PCB에 저장/복원
단점은?: 오버헤드 존재 → 성능 저하 유발 가능
'운영체제' 카테고리의 다른 글
CPU 스케줄링 방식 (0) | 2025.06.14 |
---|---|
프로세스와 스레드의 차이점 (0) | 2025.06.12 |