-
9. 문맥전환, 선점과 비선점운영체제/운영체제 정리 2019. 10. 13. 22:30
문맥 전환
-Scheduler
-dispatcher
-context switch overhead
문맥 전환 ( Context Switching ) 이란?
CPU는 하나고 프로세스가 여러 개이기 때문에 어느 시점에는 하나의 프로세스에게 서비스를 할당하고 있을 것이다.
그때 한 프로세스에서 다음 프로세스로 서비스 할당이 넘어가면 이를 문맥 전환이라 한다.
전에 말했듯이 Ready Queue안에 프로세스들은 CPU의 서비스를 받기 위해 기다리고 이를 결정해 주는 것이
CPU scheduler라고 하였다.
ex ) p1을 서비스했다면 그다음 p2를 서비스해줄 것인가 p3를 서비스 해줄 것인가?
(즉 OS 안에 프로세스 관리 영역에 있는 scheduler는 어떤 프로세스에게 CPU 서비스를 받게 해 줄 것인가 결정해주는 역할을 한다. )
DIspatcher란?
scheduler가 선택한 프로세스를 실행하도록 여러 상태나 레지스터 값을 바꿔주는 역할을 한다.
p1에서 p2로 문맥 전환되려면 다시 p1으로 올 때를 대비해서 p1의 상태를 저장해 놓아야 하는데 (mmu값이나, 레지스터
값 등) 이는 p1의 PCB에 저장되며 그 후에 p2의 상태를 restore 하여 p2가 실행되게 된다.
이러한 일들을 OS 안 프로세스 관리부서에 dispatcher가 하게 되며 저장과 restore 같은 일들을 담당한다.
Context Switch Overhead
: 이러한 잦은 저장과 복원과 같은 문맥 전환이 많아지면 오버헤드를 불러일으킬 수 있다.
CPU Scheduling
선점과 비선점
선점 (Preemptive) : CPU가 한 프로세스에게 서비스를 실행하는 도중 아직 끝나지도 않고 I/O 도 만나지 않은 프로세스
를 강제로 끌어내는 것.
비선점 (Non-Preemptive) : 이미 한 프로세스가 실행 중이라면 끝나거나 I/O를 만나기 전까지는 CPU에 서비스 할당을 끝
내지 않는 것.
스케쥴링 기준은?
: 레디큐에 있는 프로세스들 중 어느 프로세스를 먼저 CPU 서비스받게 해야 할까
CPU 이용률(CPU Utillization) : CPU가 많이 이용될수록 좋은 것
처리율(Throughput) : 단위 시간당 몇 개의 작업이 끝나는가 jobs / sec
반환시간(Turnaround time) : 작업이 메인 메모리에 레디 큐로 들어간 시간부터 terminated 된 시간까지 sec
대기시간(Waiting time) : 레디큐에서 CPU에 서비스를 받기 위해 얼마나 기다렸는가 sec
응답 시간(Response time) : 처음 응답이 나올 때까지 걸리는 시간
'운영체제 > 운영체제 정리' 카테고리의 다른 글
11. 프로세스와 쓰레드 (0) 2019.11.11 10. CPU 스케쥴링 (0) 2019.10.28 8. 프로세스 관리 (0) 2019.10.07 7. 운영체제의 주요 기능들 (0) 2019.10.04 6. mmu란? (31) 2019.09.24