728x90
반응형
(개념)멀티 프로세스 환경에서 CPU를 다른 프로세스가 사용하도록 교환하기 위해 이전 프로세스 상태를 보관하고 새로운 프로세스 정보를 CPU에 적재(복구)하는 과정
 
CPU가 현재 실행하고 있는 프로세스의 상태를 PCB에 저장하고 다음 프로세스의 PCB로부터 context를 복원하는 작업
멀티프로세스 환경에서 실행 중인 프로세스의 상태를 PCB에 보관하고, 새로운 프로세스의 상태를 읽어 CPU에 적재하는 과정.

 

[필요성] Context 측면(PCB), CPU 측면(할당변경), Register 측면(TCP 스택 Push/Pop)
Dispatching(우선순위), Time Slicing(지정시간), Preemption(시간할당량 상태변경)
 
(목적) 멀티 프로그래밍, 멀티 프로세싱
(시점) 선점형 스케줄링에서 스케줄러에 의해 발생, 인터럽트에 의해 발생
(오버헤드) 현재 상태 PCB에 저장, 다음 프로세스를 준비 큐에서 선택, 다음 프로세스를 PCB에서 복구
(오버헤드 최소화 방안)
- 문맥 교환이 자주 발생하지 않도록 다중 프로그래밍 최소화
- 스택 포인터를 변경하여 프로세스간 문맥교환 수행(스택 중심의 시스템)
- Light Weight 프로세스인 스레드를 이용하여 문맥 교환 부하 최소화
 
[유형]
1)시스템 문맥: 커널에 할당된 자료구조 (Segment, PMT)
2) 메모리 문맥: Data,Stack,Heap 영역
3)HW 문맥: 문맥교환시 현재 위치 정보 유지
 
[과정] 대상 프로세스 정보를 PCB 통해 저장/복원
문맥교환 요구 -> 커널모드 전환-> Context Save -> Context Restore ->사용자모드 전환
 
문맥교환 절차
1) 인터럽트나 시스템 호출에 의해 문맥교환 요구
2) 사용자 모드 -> 운영체제 모드
3) 기존 프로세스의 현재 하드웨어상태 정보를 PCB에 저장
4) 다음에 실행할 프로세스의 상태 정보를 PCB에서 복구
5) 다음 프로세스를 실행
6) 운영체제 모드 -> 사용자 모드
 
[기법]
선점방식 - 우선순위가 높은 프로세스가 다른 프로세스를 중단시킬 수 있음
(RR, SRT(Short Remaining Time),  Multi level Queue, ML Feedback Queue)
비선점방식 - 프로세스가 CPU를 할당받으면 다른 프로세스가 못뺏어감
(SJF(Shortest Job First), Deadline, FIFO, HRN)
 
Context: System, Memory, HW
커널모드, 사용자모드, PCB, Context Save, Context Restore, Dispatch, Time run out, Block, Time slice, I/O, System call
 
[발생조건] 프로세스 상태전이도 Ready<->Run, Run->Wait 시 발생
Θ Scheduler Dispatch : Ready->Run
Θ time slice만료: Run -> Ready
Θ I/O 작업/ System Call: Run->Wait
 

Context Switch의 발생시점

4. Context Switch에 따른 오버헤드 대응방안
   1) 다중 프로그램의 정도를 낮춤
   2) 스택 중심 시스템에서는 스택 포인터 변경을 통한 프로세스간 문맥교환 수행
   3) 쓰레드를 이용한 Context Switching 부하 최소화

 

 

728x90
Posted by Mr. Slumber
,