2012년 6월 20일 수요일

Context Switch


I. Context switch 이해



가. 문맥교환의 정의
- Running 상태의 Task가 사용하던 context를 메모리 특정 영역에 저장한 후 새로이 수행될 Task의 context를 PCB 또는 Stack 에서 CPU의 레지스터 영역으로 복사하여 새로운 Task가 수행되도록 하는 일련의 작업

나. 관련 개념
- Dispatching : 준비 상태의 프로세스들 중에서 우선순위가 가장 높은 프로세스에게 CPU 할당
- Time Quantum : 특정 프로세스에게 할당되는 시간의 단위, 특정 프로세스의 CPU 독점 방지
- Preemption : 타임 퀀텀이 초과하면 인터럽트를 통해 CPU 사용권을 빼앗음

II. Context switch 개념도 및 진행과정

가. 개념도
 
 
나. 진행과정 


1) 인터럽트나 시스템 호출에 의해 문맥교환 요구
2) 사용자모드 -> 운영체제 모드
3) 기존 프로세스의 현재 HW상태 정보를 PCB에 저장
4) 다음에 실행할 프로세스의 상태 정보를 PCB에서 복구한 후 다음 프로세스를 실행
5) 운영체제 모드 -> 사용자 모드

III. Context switch 과정의 오버헤드와 해결방안


가. 오버헤드 발생시점
 
 나. 해결방안

- Context Switch가 자주 발생하지 않도록 다중 프로그래밍 정도 낮춤
- 스택 중심의 시스템에서는 스택 포인터를 변경하여 프로세스간 문맥교환 수행
- Light weight 프로세스인 스레드를 이용하여 Context switch 부하 최소화 

댓글 없음: