X

문맥교환 (Context Switching)

I. 자원 할당 시 정보교환, 문맥교환의 개념

  • 프로세스 실행 중 다른 프로세스의 CPU 사용 위해 작업 상태를 보관하고 새 프로세스 상태 적재 작업

II. 문맥교환의 절차

가. 문맥교환 절차도

나. 문맥교환 절차

단계 절차 설명
1 인터럽트/시스템 호출 – 운영체제에서 프로세스 스케쥴러에 의해 인터럽트 발생
2 커널 모드 전환 – 프로세스가 실행되는 사용자모드에서 커널 모드로 전환
3 현재 프로세스 상태 PCB 저장 – 기존 실행되는 프로세스 정보를PCB에 저장
4 다음 실행 프로세스 로드 – PCB에 있는 다음 실행 프로세스 상태 정보 복구
5 사용자 모드 전환 – 커널 모드에서 사용자 모드로 전환하여 프로세스 실행
  • 문맥교환 절차 중 dispatch, timeout 등 실행 상태가 전이되는 과정에서 문맥교환 발생

 

III. 문맥교환이 필요한 상황

가. 문맥교환 필요 상황 절차도

  • 준비→실행, 실행→준비, 실행→대기 전환 시 문맥 교환 발생

나. 문맥교환 필요한 상황

필요 상황 설명 전이 과정
dispatch Queue 우선 프로세스로 CPU 할당 받아 실행 상태로 전이 준비 → 실행
(dispatch)
CPU할당 시간 만료 CPU 사용 가능한 할당 시간 초과로 준비 상태로 전이 실행 → 준비
(Timeout)
I/O 작업 및 할당 I/O 작업이 필요하여 작업 완료 시 까지 대기 상태로 전이 실행 → 대기
(Sleep)
System Call 또 다른 서비스 호출이 필요한 경우 대기 상태로 전이 실행 → 대기
(Sleep)
  • 문맥교환으로 인한 정보 교환 작업은 오버헤드이므로 스레드 등을 이용하여 최소화 필요

 

IV. 문맥교환의 오버헤드 해결 방안

해결 방안 설명
프로그램 다중화 수준 낮춤 – 다중 프로그래밍 수준을 낮추어 문맥 교환 발생 빈도 감소
스레드 이용 – Light Weight 프로세스인 스레드를 이용하여 문맥 교환 부하 최소화
스택포인터 활용 – 스택 이용 프로그램의 경우 스택 포인터를 이용하여 문맥 교환 부하 최소화
  • 멀티프로세스 환경에서 문맥교환은 필수적이므로 정보교환의 최소화 및 최적화가 필요
Categories: CA/운영체제
도리:

View Comments (2)