문맥 교환
운영체제가 현재 실행 중인 프로세스의 실행 상태( =문맥 )를 PCB에 저장하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 가져와 복원하는 과정을 말한다.
📌 운영체제는 문맥 전환을 통해 CPU를 여러 프로세스가 공유하도록 관리한다.
📌 문맥 교환의 과정
1️⃣ 현재 실행중인 프로세스의 PCB 저장
- 실행 중이던 프로세스의 레지스터 값, 프로그램 카운터 값, 상태 정보 등을 PCB에 저장
- 저장된 PCB는 프로세스 테이블에 보관된다.
2️⃣ 새로운 프로세스의 PCB 로드
- 실행할 프로세스의 PCB 정보를 읽어온다.
- 해당 프로세스의 프로그램 카운터와 레지스터 값을 복원한다.
3️⃣ CPU 제어권을 새로운 프로세스에 넘김
- 새로운 프로세스가 실행되도록 CPU를 할당한다.
- 문맥 교환 완료 후, 새로운 프로세스가 기존에 실행되던 위치부터 실행을 재개한다.
📌 문맥 교환이 발생하는 경우
1️⃣ 프로세스가 실행 시간을 초과했을 때 ( 타이머 인터럽트 )
- 라운드 로빈 스케줄링 방식에서 타임 슬라이스 시간이 끝나면 현재 프로세스의 PCB를 저장하고, 새로운 프로세스를 실행하는 문맥 교환이 발생한다.
2️⃣ 프로세스가 I/O 작업을 요청할 때
- 실행 중인 프로세스가 입출력 작업을 기다려야 하는 경우
- 현재 프로세스의 PCB를 저장하고, 다른 준비 상태의 프로세스를 실행하며 문맥 교환 발생
3️⃣ 높은 우선순위의 프로세스가 실행될 때
- 현재 실행중인 프로세스보다 우선순위가 높은 프로세스가 준비 상태에 있는 경우
- 현재 프로세스 PCB 저장, 우선순위 높은 프로세스 실행하면서 문맥 교환 발생
4️⃣ 프로세스가 종료될 때
- 현재 실행중인 프로세스가 실행을 마치면, PCB가 삭제되고 새로운 프로세스가 실행되며 문맥 교환 발생
📌 문맥 교환의 비용
문맥 교환은 앞서 언급한대로, 운영체제가 실행중인 프로세스에서 다른 프로세스로 전환할 때 발생하는 작업이다.
이 과정에서 발생하는 비용은 다음과 같은 요소들로 구성된다.
1️⃣ 레지스터 저장 및 복원
- cpu가 실행 중인 프로세스의 레지스터 값( PC, SP, 일반 레지스터 등 )을 저장하고, 새로운 프로세스의 레지스터 값으로 복원해야 한다.
- 당연하게도 레지스터 수가 많을수록 저장 및 복원의 비용이 증가한다.
2️⃣ 캐시 미스( Cache Miss ) 증가
- CPU 캐시는 현재 실행 중인 프로세스의 데이터들로 채워져 있다.
- 다른 프로세스로 전환이 되면 기존 캐시 데이터가 무효화되거나 덮어씌워지면서 '캐시 미스'가 발생할 확률이 높아진다.
- 캐시 미스는 메모리 접근 속도를 저하시키기 때문에 전체 성능에 영향을 준다.
3️⃣ 커널 모드 전환 비용
- 문맥 교환은 보통 운영체제 커널에서 수행된다.
- 일반적으로 유저 모드 ➡️ 커널 모드 ➡️ 유저 모드 전환이 필요하며, 이 과정에서 추가적인 오버헤드가 발생한다.
'CS > 혼공컴운' 카테고리의 다른 글
[CS] 프로세스 계층 구조 (0) | 2025.02.11 |
---|---|
[CS] 프로세스 상태 (0) | 2025.02.11 |
[CS] 프로세스의 메모리 영역 (0) | 2025.02.10 |
[CS] 프로세스 개요 (0) | 2025.02.10 |
[CS] C 언어 컴파일 과정 (0) | 2025.02.10 |