1-0) CPU Scheduling (CPU 스케쥴링)이란?
* 준비 큐(Ready Queue)에 있는 프로세스들 중에 어떤 프로세스를 선택하여 CPU 서비스를 받게 할 것인가를 결정하는 방식.
* 프로세서의 효율성 높이기 위해, 시스템의 작업 처리 능력을 향상시키기 위해,
작업의 응답 시간을 최소화하기 위해 필요.
* 다중 프로그램(Multiprogram) 시스템에서 시스템 성능에 큰 영향을 미치게 됨.
* 다음 그림에서 아래쪽 처리 방식이 위쪽 처리 방식보다 훨씬 효율적이고 빠른 처리가 되는 것을 볼 수 있다.
1-1) Preemptive Scheduling (선점 스케쥴링)
* 현재 어떤 프로세스가 CPU 서비스를 받고 있는 상태이지만 이후에 더 중요한 혹은 더 우선한 프로세스가 대기하게 되면 현재 서비스를 받고 있는 프로세스를 강제로 내보내고 더 우선한 프로세스를 CPU가 처리하는 방식
* 강제로 문맥 교환(Context Switching) 발생
: 시분할 시스템에서 할당된 시간 소진이되었을 때, 인터럽트나 시스템 호출 종료시에 더 높은 우선 순위 프로세스가 발생 되었을 때 현 실행 프로세스로부터 강제로 CPU를 회수.
1-2) Non-preemptive Scheduling (비선점 스케쥴링)
* 선점 방식과는 달리 이미 서비스를 받기 시작한 프로세스는 이후에 어떤 중요한 프로세스가 대기하더라도 스위칭되지 않는 방식.
* 강제로 문맥 교환(Context Switching) 불가. 스스로 반납할 때까지 CPU 사용.
: I/O 처리가 필요한 경우 문맥 교환
참고) 일반적으로 병원은 비선점 스케쥴링 방식임.
그러나 응급실의 경우는 선점 스케쥴링 방식임. 즉, 현재 치료받고 있는 환자의 뜻과 상관없이 의사는 보다 응급한 환자를 치료하기 시작함.
댓글 없음:
댓글 쓰기