Algoritmo di pianificazione delle priorità: preemptive, non preemptive

⚡ Riepilogo intelligente

La pianificazione a priorità è un metodo di pianificazione della CPU che seleziona i processi in base alla priorità, eseguendo prima le attività a priorità più alta. Può essere preemptive o non preemptive e i processi con la stessa priorità vengono gestiti secondo il principio "primo arrivato, primo servito" o "round-robin".

  • 🎯 Definizione: I processi vengono programmati in base alla priorità, con le attività a priorità più alta eseguite prima di quelle a priorità più bassa.
  • 🔢 Numero di priorità: Un numero più basso di solito indica una priorità più alta.
  • ⏸️ Preventivo: Un arrivo ad alta priorità può interrompere un processo a bassa priorità attualmente in esecuzione.
  • ▶ ️ Non preventiva: Il processo in esecuzione mantiene la CPU occupata fino alla sua terminazione o al cambio di contesto.
  • Vantaggio: I processi importanti vengono eseguiti rapidamente, adattando la loro importanza relativa al tempo di utilizzo della CPU.
  • ⚠️ Inconveniente: I processi a bassa priorità potrebbero rimanere inattivi e attendere indefinitamente.

Algoritmo di pianificazione delle priorità

Cos'è la pianificazione prioritaria?

Pianificazione prioritaria è un metodo di pianificazione dei processi basato sulla priorità. In questo algoritmo, lo scheduler seleziona le attività da eseguire in base alla priorità.

I processi con priorità più alta dovrebbero essere eseguiti per primi, mentre i lavori con priorità uguali vengono eseguiti su base round-robin o FCFS. La priorità dipende dai requisiti di memoria, dai requisiti di tempo, ecc.

Tipi di pianificazione prioritaria

La programmazione prioritaria si divide in due tipologie principali:

Programmazione preventiva

Nella pianificazione preventiva, le attività vengono per lo più assegnate con le relative priorità. A volte è importante eseguire un'attività con priorità più alta prima di un'altra attività con priorità più bassa, anche se l'attività con priorità più bassa è ancora in esecuzione. L'attività con priorità più bassa viene mantenuta per un certo periodo e riprende quando l'attività con priorità più alta termina l'esecuzione.

Pianificazione non preventiva

In questo tipo di metodo di pianificazione, la CPU viene assegnata a uno specifico processo. Il processo che mantiene la CPU occupata la rilascerà cambiando contesto o terminando. È l'unico metodo utilizzabile su diverse piattaforme hardware, poiché non richiede hardware speciale (ad esempio, un timer) come la pianificazione preemptive.

Caratteristiche della pianificazione prioritaria

  • Un algoritmo della CPU che pianifica i processi in base alla priorità.
  • È utilizzato in Operasistemi di automazione per l'esecuzione di processi batch.
  • Se due lavori aventi la stessa priorità sono PRONTI, si lavora su a PRIMO ARRIVATO, PRIMO SERVITO base.
  • Nella pianificazione prioritaria, a ciascun processo viene assegnato un numero che ne indica il livello di priorità.
  • Più basso è il numero, maggiore è la priorità.
  • In questo tipo di algoritmo di pianificazione, se arriva un processo più recente con una priorità più alta rispetto al processo attualmente in esecuzione, quest'ultimo viene interrotto.

Esempio di pianificazione prioritaria

Si considerino i seguenti cinque processi da P1 a P5. Ciascun processo ha una priorità, un tempo di esecuzione e un tempo di arrivo unici.

Processo Priorità Tempo di scoppio Orario di arrivo
P1 1 4 0
P2 2 3 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Passo 0) All'istante t=0, arrivano i processi P1 e P2. P1 ha priorità più alta di P2. L'esecuzione inizia con il processo P1, che ha un tempo di esecuzione di 4.

Pianificazione prioritaria

Passo 1) All'istante t = 1, non arriva alcun nuovo processo. L'esecuzione continua con P1.

Pianificazione prioritaria

Passo 2) Al momento 2 non arriva alcun nuovo processo, quindi puoi continuare con P1. P2 è in coda di attesa.

Pianificazione prioritaria

Passo 3) Al tempo 3, non arriva alcun nuovo processo, quindi puoi continuare con P1. Il processo P2 è ancora in coda di attesa.

Pianificazione prioritaria

Passo 4) Al momento 4 P1 ha terminato la sua esecuzione. P2 inizia l'esecuzione.

Pianificazione prioritaria

Passo 5) Al tempo = 5, non arriva alcun nuovo processo, quindi proseguiamo con P2.

Pianificazione prioritaria

Passo 6) Al tempo = 6, arriva P3. P3 ha una priorità più alta (1) rispetto a P2 che ha priorità (2). P2 viene interrotto e P3 inizia la sua esecuzione.

Processo Priorità Tempo di scoppio Orario di arrivo
P1 1 4 0
P2 2 1 su 3 in sospeso 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Pianificazione prioritaria

Passo 7) Al tempo 7, non arriva alcun nuovo processo, quindi proseguiamo con P3. P2 è in coda di attesa.

Pianificazione prioritaria

Passo 8) All'istante t=8 non arriva alcun nuovo processo, quindi possiamo proseguire con P3.

Pianificazione prioritaria

Passo 9) Al tempo = 9, non arriva alcun nuovo processo, quindi possiamo continuare con P3.

Pianificazione prioritaria

Passo 10) All'intervallo di tempo 10, non si verifica alcun nuovo processo, quindi proseguiamo con P3.

Pianificazione prioritaria

Passo 11) All'istante t=11, P4 arriva con priorità 4. P3 ha priorità più alta, quindi continua la sua esecuzione.

Processo Priorità Tempo di scoppio Orario di arrivo
P1 1 4 0
P2 2 1 su 3 in sospeso 0
P3 1 2 su 7 in sospeso 6
P4 3 4 11
P5 2 2 12

Pianificazione prioritaria

Passo 12) All'istante t=12, arriva P5. P3 ha priorità più alta, quindi continua l'esecuzione.

Pianificazione prioritaria

Passo 13) All'istante t=13, P3 completa l'esecuzione. Nella coda dei processi pronti sono presenti P2, P4 e P5. P2 e P5 hanno la stessa priorità. L'orario di arrivo di P2 è precedente a quello di P5, quindi P2 inizia l'esecuzione.

Processo Priorità Tempo di scoppio Orario di arrivo
P1 1 4 0
P2 2 1 su 3 in sospeso 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Pianificazione prioritaria

Passo 14) All'istante t=14, il processo P2 ha terminato la sua esecuzione. P4 e P5 sono in stato di attesa. P5 ha la priorità più alta e inizia l'esecuzione.

Pianificazione prioritaria

Passo 15) Al tempo = 15, P5 continua l'esecuzione.

Pianificazione prioritaria

Passo 16) All'istante t=16, P5 ha terminato la sua esecuzione. P4 è l'unico processo rimasto. Inizia l'esecuzione.

Pianificazione prioritaria

Passo 17) Al tempo t = 20, P4 ha completato l'esecuzione e non rimane alcun processo in corso.

Pianificazione prioritaria

Passo 18) Calcoliamo il tempo di attesa medio per l'esempio sopra riportato.

Tempo di attesa = ora di inizio – ora di arrivo + tempo di attesa per il burst successivo

P1 = 0 - 0 = 0
P2 = 4 - 0 + 7 = 11
P3 = 6 - 6 = 0
P4 = 16 - 11 = 5
Average Waiting time = (0 + 11 + 0 + 5 + 2)/5 = 18/5 = 3.6

Vantaggi della pianificazione prioritaria

Ecco i vantaggi/benefici dell'utilizzo del metodo di pianificazione prioritaria:

  • Metodo di pianificazione facile da usare.
  • I processi vengono eseguiti in base alla priorità, quindi quelli ad alta priorità non devono attendere a lungo, il che consente di risparmiare tempo.
  • Questo metodo fornisce un valido meccanismo che permette di definire con precisione l'importanza relativa di ciascun processo.
  • Adatto per applicazioni con requisiti di tempo e risorse variabili.

Svantaggi della pianificazione prioritaria

Ecco gli svantaggi della programmazione prioritaria:

  • Se il sistema alla fine si blocca, tutti i processi a bassa priorità andranno persi.
  • Se i processi ad alta priorità richiedono molto tempo della CPU, i processi a priorità più bassa potrebbero morire di fame e verranno posticipati per un tempo indefinito.
  • Questo algoritmo di pianificazione può lasciare alcuni processi a bassa priorità in attesa per un tempo indefinito.
  • Un processo verrà bloccato quando è pronto per essere eseguito ma deve attendere la CPU perché qualche altro processo è attualmente in esecuzione.
  • Se un nuovo processo con priorità più alta continua ad arrivare nella coda dei pronti, allora il processo che è nello stato di attesa potrebbe dover attendere per un lungo periodo di tempo.

DOMANDE FREQUENTI

Il problema della starvation si verifica quando i processi a bassa priorità attendono indefinitamente perché continuano ad arrivare processi a priorità più alta. L'invecchiamento risolve questo problema aumentando gradualmente la priorità dei processi che hanno atteso a lungo, in modo che ogni processo venga infine eseguito.

Nella maggior parte dei sistemi operativi, un numero di priorità inferiore indica una priorità maggiore. Ad esempio, un processo con priorità 1 viene eseguito prima di un processo con priorità 3. Tuttavia, alcuni sistemi invertono questa convenzione, quindi è sempre consigliabile verificarla.

La priorità può essere assegnata internamente in base a fattori quali il fabbisogno di memoria, i requisiti di tempo e i picchi di utilizzo della CPU, oppure esternamente dall'utente o dall'amministratore in base all'importanza, al costo o alle scadenze. Può essere statica (fissa) o dinamica (variabile in fase di esecuzione).

L'intelligenza artificiale può assegnare e regolare dinamicamente le priorità dei processi apprendendo i modelli di carico di lavoro e le scadenze. Ciò contribuisce a garantire che i lavori importanti vengano completati nei tempi previsti, riducendo il rischio di interruzione e migliorando la produttività complessiva e la reattività in sistemi complessi e in continua evoluzione.

Sì. L'IA può monitorare i tempi di attesa e aumentare automaticamente la priorità dei processi che attendono a lungo, agendo come un sistema di invecchiamento intelligente. Prevedendo la congestione, bilancia meglio equità e prestazioni rispetto alle regole fisse, in modo che i processi a bassa priorità non vengano ritardati indefinitamente.

Riassumi questo post con: