문맥 교환

운영체제가 현재 실행 중인 프로세스의 실행 상태( =문맥 )를 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

+ Recent posts