Differenza tra pianificazione preventiva e non preventiva nei sistemi operativi Differenza tra

Anonim

Programmazione processore (o Programmazione CPU ) determina quali processi sono assegnati e rimossi dalla CPU, in base a modelli di pianificazione come Preemptive e Non -Preemptive Scheduling (noto anche come Scheduling Co-operative ).

I vecchi sistemi potevano operare in modalità stand-alone semplici ma con l'aumento necessità di sistemi reattivi e flessibili, così come la virtualizzazione, la gestione multiprocessing fornisce in modo efficiente una risposta rapida a tutte le richieste di elaborazione delle attività.

Le unità di pianificazione vengono spesso definite come attività ed è il lavoro dell'Utilità di pianificazione per eseguire e gestire queste attività quando richiesto, lo Scheduler seleziona l'attività da rimuovere e assegnata alla CPU per l'elaborazione, in accordo al modello di schedulazione utilizzato.

In che modo lo Scheduler sa quali attività sono prioritarie?

Lo Scheduler deve eseguire un processo di selezione equo ed efficiente, tenendo conto delle richieste di elaborazione variabili e dinamiche e sfruttando al meglio i cicli della CPU.

Le attività possono essere in due stati durante l'elaborazione:

  1. In una CPU Burst in cui la CPU sta eseguendo calcoli per elaborare l'attività (il periodo per una CPU Burst varia da un'attività all'altra, e programma da programmare).
  2. In un Ingresso / uscita (I / O) Burst in attesa che i dati vengano ricevuti o inviati dal sistema.

Quando la CPU è inattiva, l'Utilità di pianificazione legge la coda Pronto e seleziona l'attività successiva da eseguire. Quindi, è il Dispatcher che fornisce il controllo del task selezionato della CPU, quindi deve essere veloce! Qualsiasi tempo impiegato dal Dispatcher è noto come Latenza di invio .

Esistono diverse strutture e parametri personalizzati per definire la coda Pronto, oltre a diversi metodi che possono essere utilizzati per gestire le complessità del processo di pianificazione.

In generale, si tratta di ottimizzare e massimizzare l'utilizzo della CPU, il throughput, ecc.

Lo Scheduler deve prendere una decisione durante una delle seguenti fasi:

  1. Quando l'attività cambia da In esecuzione a Stato di attesa (ad esempio, in attesa durante una richiesta di I / O).
  2. Quando l'attività cambia da In esecuzione a Pronto (ad esempio rispondendo a un interrupt).
  3. Quando l'attività cambia da In attesa a Pronto (ad esempio una richiesta I / O è completata).
  4. Quando la Attività

Una nuova attività deve essere selezionata se la fase 1 o 4 si verifica per garantire il pieno utilizzo della CPU, e in entrambe le fasi 2 e 3, l'attività può continuare a funzionare o una nuova è selezionato.

Dopo aver compreso come viene elaborata un'attività, esaminiamo due modelli di pianificazione che trattano gli interrupt della CPU.

Entrambi hanno caratteristiche simili con attività, stati di attività, code e priorità (statiche o dinamiche):

  • Pianificazione non preventiva è quando un'attività viene eseguita finché non si arresta (volontariamente) o termina. Windows® prevedeva la pianificazione non preventiva fino a Windows 3. x, dopo di che è passata a Preemptive da Windows 95.
  • Preemptive Scheduling è dove un'attività può essere forzatamente sospesa da un interrupt della CPU, diversamente da Non-Preemptive dove il l'attività viene eseguita fino a quando non rilascia il controllo della CPU.

Schedulazione non preventiva

Le attività all'interno di un sistema non preventivo verranno eseguite fino al completamento.

Lo Scheduler controlla quindi tutti gli stati delle attività e pianifica il successivo compito con priorità più alta con uno stato Pronto.

Con la pianificazione non preventiva, una volta che un'attività ha la sua assegnazione alla CPU, non può essere portata via, anche se le attività brevi devono attendere il completamento di attività più lunghe.

La gestione della pianificazione di tutte le attività è "equa" e i tempi di risposta sono prevedibili in quanto le attività ad alta priorità non possono contrastare le attività in attesa lungo la coda.

Lo Scheduler assicura che ogni task ottenga la sua 'parte della CPU, evitando qualsiasi ritardo con qualsiasi attività. La 'quantità di tempo' assegnata alla CPU potrebbe non essere necessariamente uguale, in quanto dipende da quanto tempo ci vuole per completare il compito.

Schedulazione preventiva

Questo modello di pianificazione consente l'interruzione delle attività, a differenza della pianificazione non preventiva con un approccio "da eseguire a completamento".

Gli interrupt, che possono essere avviati da chiamate esterne, invitano l'Utilità di pianificazione a sospendere un'attività in esecuzione per gestire un'altra attività con priorità più alta, in modo che il controllo della CPU possa essere anticipato.

Viene eseguito il task con priorità più alta in uno stato Pronto, consentendo una risposta rapida agli eventi in tempo reale.

Alcuni dei contro con Preemptive Scheduling implicano l'aumento delle spese generali sulle risorse quando si utilizzano gli interrupt e si possono verificare problemi con due attività che condividono i dati, come si può interrompere durante l'aggiornamento delle strutture di dati condivise e potrebbero influire negativamente sull'integrità dei dati.

D'altra parte, è possibile essere in grado di mettere in pausa un'attività per gestirne un'altra che potrebbe essere critica.

Nel sommario

È possibile definire molte varianze e dipendenze in diverse politiche, ad esempio utilizzando un "Round Robin Policy [i]" in cui ogni attività (con uguale priorità) viene eseguita una volta, quindi posto alla fine della coda, per il ciclo successivo.

Altri criteri includono First-In-First-Out , Shortest-Job-First , Shortest-Job-Next , Shortest Remaining Time , ecc.

L'analisi dei dati storici può fornire informazioni sugli aspetti, come la frequenza con cui arrivano nuovi compiti, la CPU e le I / O Bursts ecc. Così le distribuzioni di probabilità possono calcolare le caratteristiche dei tempi di attesa delle attività, quindi armare amministratori con dati rilevanti per definire i modelli di pianificazione.