Pianificazione del processore (o Programmazione della CPU) determina quali processi sono assegnati e rimossi dalla CPU, in base a modelli di pianificazione come Preventivo e Pianificazione non preventiva (conosciuto anche come Pianificazione cooperativa).
I sistemi precedenti potrebbero operare in modalità stand-alone semplici ma con la crescente necessità di sistemi flessibili e reattivi, oltre alla virtualizzazione, la gestione multiprocessing fornisce in modo efficiente una risposta rapida a tutte le richieste di elaborazione delle attività.
Le unità di pianificazione sono spesso indicate come a compito ed è compito dell'Utilità di pianificazione eseguire e gestire queste attività quando richiesto; lo Scheduler seleziona l'attività da rimuovere e assegnata alla CPU per l'elaborazione, in base al modello di schedulazione utilizzato.
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:
Quando la CPU è inattiva, lo Scheduler legge il Coda pronta, e seleziona il prossimo compito da eseguire. Quindi, è il Dispatcher che dà il controllo del task selezionato della CPU, quindi deve essere veloce! Qualsiasi tempo impiegato dal Dispatcher è noto come Latenza di invio.
Ci sono diverse strutture e parametri personalizzati per definire il Coda pronta, così come 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:
È necessario selezionare una nuova attività se si verifica lo stadio 1 o 4 per garantire il pieno utilizzo della CPU e, in entrambi gli stage 2 e 3, l'attività può continuare a funzionare o ne viene selezionata una nuova..
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):
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 a Pronto stato.
Con 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 più avanti nella coda.
Lo Scheduler assicura che ogni task abbia 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.
Questo modello di pianificazione consente l'interruzione delle attività, in contrasto con la pianificazione non preventiva che ha un approccio "da eseguire a completamento".
Gli interrupt, che possono essere avviati da chiamate esterne, invitano lo Scheduler a mettere in pausa un'attività in esecuzione per gestire un altro task con priorità più alta, in modo che il controllo della CPU possa essere preventivato.
Il compito più prioritario in a Pronto lo stato viene eseguito, consentendo una risposta rapida agli eventi in tempo reale.
Alcuni dei contro con Preemptive Scheduling implicano l'aumento dei costi generali delle risorse quando si utilizzano gli interrupt e possono verificarsi problemi con due attività che condividono i dati, in quanto uno può essere interrotto durante l'aggiornamento delle strutture di dati condivise e può 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.
Possono essere definite molte varianze e dipendenze in diverse politiche, come l'uso di a "Round Robin Policy [i]" dove ogni compito (con uguale priorità) viene eseguito una volta e quindi posizionato alla fine della coda, per il ciclo successivo.
Altre politiche includono Il primo che entra è il primo ad uscire, Shortest-Job-First, Shortest-Job-Next, Il più breve tempo restante, eccetera.
L'analisi dei dati storici può fornire informazioni su aspetti, come la velocità con cui arrivano nuovi compiti, CPU e I / O Bursts ecc. Così le distribuzioni di probabilità possono calcolare le caratteristiche dei tempi di attesa delle attività, armando quindi gli amministratori con i dati rilevanti per definire i modelli di pianificazione.