운영 체제의 선점 형 스케줄과 비 선점 형 스케줄링의 차이점

Anonim

PreemptiveNon와 같은 스케줄링 모델을 기반으로 프로세서 스케줄링 (또는 CPU Scheduling )은 CPU에 할당되고 CPU에서 제거되는 프로세스를 결정합니다. - 선행 스케줄링 ( 협동 스케줄링 이라고도 함). 오래된 시스템은 단순한 독립형 모드로 작동 할 수 있지만 응답 성이 뛰어난 유연한 시스템과 가상화의 필요성에 따라 다중 처리를 관리하면 모든 작업 처리 요청에 대해 신속하게 응답 할 수 있습니다.

예약 단위는 종종

작업

이라고도하며 스케줄러의 작업입니다 필요한 경우 언제든지 이러한 작업을 실행하고 관리 할 수 ​​있으며, Scheduler는 처리 할 작업을 CPU에 할당하고 제거하도록 작업을 선택합니다. 사용 된 스케줄링 모델로

스케줄러는 어떤 작업이 우선 순위인지 어떻게 알 수 있습니까?

스케줄러는 변수, 동적 처리 요청을 고려하여 CPU주기를 최대한 활용하여 공정하고 효율적인 선택 프로세스를 실행해야합니다.

작업이 처리하는 동안 두 가지 상태가 될 수 있습니다.

CPU 버스트

에서 CPU가 작업을 처리하기 위해 계산을 수행하는 경우 (CPU 버스트 기간은 작업마다 다릅니다. 프로그램을 프로그래밍).

  1. 시스템에서 데이터를 수신하거나 전송할 때까지 기다리는 입출력 (I / O) 버스트 .
  2. CPU가 유휴 상태 일 때 스케줄러는 준비 대기열
을 읽고 실행될 다음 작업을 선택합니다. 그런 다음 CPU의 선택된 작업 제어를 제공하는

Dispatcher 가 있으므로 빨리 처리해야합니다! Dispatcher가 처리 한 모든 시간은 Dispatch Latency 라고합니다. 준비 대기열 과 스케줄링 프로세스의 복잡성을 관리하는 데 사용할 수있는 여러 가지 방법을 정의하는 다양한 구조와 사용자 지정 매개 변수가 있습니다. 스케줄러는 다음 단계 중 하나에서 결정해야합니다.

작업이 실행 중 변경되면

일반적으로 CPU 사용률, 처리량 등을 최적화하고 최대화하는 것입니다.

Waiting State

  1. (예: I / O 요청 중 대기 중). 작업이 실행 중 에서 준비 중
  2. (예: 인터럽트에 응답)으로 변경됩니다. 작업이 대기 중 에서 대기 중
  3. (예: I / O 요청이 완료된 경우)로 변경됩니다. 작업 1 단계 또는 4 단계가 CPU의 전체 활용을 보장하기 위해 발생하고 2 단계 및 3 단계 모두에서 작업을 계속 실행하거나 새 작업을 수행해야하는 경우 새 작업을 선택해야합니다. 선택된. 작업 처리 방법을 이해 한 후 CPU 인터럽트를 처리하는 두 가지 스케줄링 모델을 살펴 보겠습니다.
  4. Non-Preemptive Scheduling 은 작업이 중지 될 때까지 (자발적으로) 또는 완료 될 때입니다. Windows®는 Windows 3.x에서 Non-Preemptive Scheduling을 수행 한 후 Windows 95에서 Preemptive로 변경되었습니다.

Preemptive Scheduling

는 CPU 인터럽트에 의해 강제로 일시 중단 될 수있는 곳입니다. 작업은 CPU 제어를 해제 할 때까지 실행됩니다.

비 선점 예약

  • 비 선제 시스템 내의 작업은 완료 될 때까지 실행됩니다. 스케줄러는 모든 작업의 ​​상태를 확인하고
  • 준비 완료 상태 인 다음 우선 순위 작업을 예약합니다. 비 - 선점 형 스케줄링을 사용하면, 일단 태스크가 CPU에 할당되면, 짧은 태스크가 더 긴 태스크가 완료 될 때까지 기다려야하는 경우에도이를 제거 할 수 없습니다.

모든 작업에 대한 일정 관리는 "공정"이며 응답 시간은 예측할 수 있습니다. 우선 순위가 높은 작업으로 대기중인 작업을 큐에 추가로 배치 할 수 없기 때문입니다.

스케줄러는 각 작업이 모든 작업 지연을 피하면서 CPU 점유율을 확보하도록 보장합니다. CPU에 할당 된 '시간 양'은 반드시 작업이 완료되는 데 걸리는 시간에 따라 달라질 수 있습니다.

선점 예약 (Preemptive Scheduling) 이 스케줄링 모델은 "완료까지 실행"방식을 갖는 비 선점 예약과 달리 작업이 중단되도록합니다. 외부 호출에서 시작될 수있는 인터럽트는 스케줄러를 호출하여 실행중인 작업을 일시 중지하여 다른 우선 순위가 높은 작업을 관리하므로 CPU 제어를 우선 할 수 있습니다.

Ready

상태에서 가장 우선 순위가 높은 작업이 실행되어 실시간 이벤트에 신속하게 응답 할 수 있습니다. 선점 스케줄링의 단점 중 일부는 인터럽트를 사용할 때 리소스에 대한 오버 헤드가 증가하고 공유 데이터 구조를 업데이트하는 동안 인터럽트 될 수 있고 데이터 무결성에 부정적인 영향을 미칠 수 있으므로 데이터를 공유하는 두 가지 태스크로 문제가 발생할 수 있습니다. 반면에 중요한 작업 일 수있는 다른 작업을 관리하기 위해 작업을 일시 중지 할 수있는 것이 현실적입니다.

개요

모든 작업 (우선 순위가 동일한)이 한 번 실행되는

"라운드 로빈 정책 [i]"

사용과 같이 다양한 정책의 많은 차이와 종속성을 정의 할 수 있습니다. 다음주기를 위해 대기열의 끝에 배치됩니다.

선입 선출, 최단 작업 우선

최단 작업 - 다음

,

최단 남은 시간 과거 데이터의 분석은 새로운 작업이 도착하는 속도, CPU 및 I / O 버스트 등의 측면에 대한 정보를 제공 할 수 있으므로 확률 분포가 작업 대기 시간의 특성을 계산하여 무장시킬 수 있습니다 스케줄링 모델을 정의하는 관련 데이터가있는 관리자.