문맥교환 (Context Switching)

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

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

II. 문맥교환의 절차

가. 문맥교환 절차도

나. 문맥교환 절차

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

 

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

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

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

나. 문맥교환 필요한 상황

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

 

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

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

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^