본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Context Switching; 문맥 전환, 컨텍스트 스위칭
실행 중인 프로세스의 상태 정보를 저장해 두고 다른 프로세스의 저장된 상태를 복구하여 CPU 의 실행 대상을 바꾸는 작업
  • 다중 프로그래밍 환경에서 CPU 는 하나인데 실행할 프로세스는 여럿이므로, 운영체제가 CPU 를
 번갈아 나누어 준다. 그 교대가 일어날 때마다 문맥 교환이 필요하다.
  • 문맥(context) 이란 그 프로세스를 나중에 중단된 지점부터 다시 이어 실행하는 데 필요한
 모든 정보다. 프로그램 카운터, 레지스터 값, 스택 포인터, 메모리 관리 정보 등이 들어간다.
 PCB 에 쓰고, 들어오는 프로세스의 PCB 에서 문맥을 읽어 레지스터에 채운다.
  • 제어권은 운영체제의 인터럽트 처리 루틴(ISR)으로 넘어가며, 그 안에서 스케줄러가
 다음에 실행할 프로세스를 고른다.
  • 시간 할당량(time quantum) 이 끝났을 때
  • 입출력 요청 등으로 프로세스가 대기 상태로 바뀔 때
  • 인터럽트 나 시스템 호출이 발생했을 때
  • 더 높은 우선순위의 프로세스가 준비 상태가 되어 현재 프로세스를 선점할 때
  1. 인터럽트나 시스템 호출로 커널 모드에 진입한다
  2. 현재 프로세스의 레지스터·프로그램 카운터를 그 프로세스의 PCB 에 저장한다
  3. 현재 프로세스의 상태를 준비(ready) 또는 대기(waiting)로 바꾼다
  4. 스케줄러가 준비 큐에서 다음 프로세스를 선택한다
  5. 선택된 프로세스의 PCB 에서 문맥을 읽어 레지스터에 복구한다
  6. 메모리 관리 정보를 갱신하고 사용자 모드로 돌아가 실행을 재개한다
  • 문맥 교환 자체는 유용한 작업을 하지 않는 순수한 오버헤드다. 교환이 잦을수록
 CPU 가 실제 작업에 쓰는 시간이 줄어든다.
  • 캐시와 TLB 에 들어 있던 이전 프로세스의 내용이 쓸모없어져 교환 직후 적중률이 떨어진다.
 이 간접 비용이 저장·복구 자체보다 큰 경우가 많다.
  • 시간 할당량이 너무 짧으면 문맥 교환 횟수가 늘어 처리율이 떨어지고, 너무 길면 응답 시간이
 나빠진다. 할당량 결정은 이 둘의 절충이다.
  • 스레드 사이의 교환은 같은 주소 공간을 쓰므로 메모리 관리 정보를 바꿀 필요가 없어
 프로세스 사이의 교환보다 가볍다.