1. Pianificazione basata sulla priorità con invecchiamento:
* Il problema: I processi ad alta priorità possono monopolizzare continuamente le risorse, impedendo ai processi di priorità inferiore di avere la possibilità di funzionare e potenzialmente causando la fame.
* La soluzione - Invecchiamento:
* Concetto: Nel tempo, aumenta la priorità dei processi che hanno aspettato da molto tempo per acquisire una risorsa.
* Implementazione: Il sistema operativo aumenta periodicamente la priorità dei processi di attesa. Ciò garantisce che anche i processi a bassa priorità alla fine diventeranno idonei a correre.
* Esempio: Un processo in attesa del tempo della CPU potrebbe avere la sua priorità aumentata ogni pochi zecche. Alla fine, diventerà il processo di priorità più elevato e sarà programmato.
2. Firing in coda e coda equo ponderata:
* Il problema: I processi che richiedono la stessa risorsa possono ricevere allocazioni imprevedibili, favorendo potenzialmente alcune su altri ripetutamente.
* The Solution - Fair Yauing:
* Concetto: Garantire ogni processo una quota equa di una risorsa nel tempo.
* Implementazione:
* I processi in attesa di una risorsa sono posti in coda.
* La risorsa è assegnata ai processi in modo equo, spesso utilizzando algoritmi di pianificazione rotondi o simili.
* Ogni processo viene data una fetta di tempo (o altra quota di risorse) prima che un altro processo ottiene un turno.
* Codatura equa ponderata (WFQ):
* Concetto: Una variazione della coda equa in cui a ciascun processo viene assegnata un peso che determina la sua quota relativa della risorsa.
* Implementazione:
* I processi con pesi più alti ricevono fette proporzionalmente più grandi della risorsa.
* Ciò consente di dare la priorità ai processi importanti, garantendo comunque che altri processi ricevano un certo accesso.
3. Allocazione delle risorse con prevenzione/evitamento di deadlock:
* Il problema: Deadlock può portare alla fame. Se i processi sono bloccati in attesa reciproca delle risorse, alcuni potrebbero essere bloccati indefinitamente. Anche se il deadlock è rotto, gli stessi processi potrebbero essere ripetutamente scelti come vittime, portando alla fame.
* La soluzione:
* Prevenzione del deadlock: Progettare strutturalmente il sistema di allocazione delle risorse per eliminare le condizioni che causano deadlock. Questo potrebbe comportare:
* Eliminazione reciproca dell'esclusione (di solito non fattibile): Consentire che le risorse vengano utilizzate da più processi contemporaneamente.
* Hold and Wait Prevention: Richiedi un processo per richiedere tutte le sue risorse contemporaneamente o rilasciare tutte le risorse detenute prima di richiedere di più.
* Nessuna precettazione: Consenti al sistema operativo di togliere forzatamente le risorse da un processo (se il processo sta detenendo una risorsa di cui un altro processo ha bisogno e sta aspettando un'altra risorsa).
* Prevenzione di attesa circolare: Imporre un ordinamento totale sui tipi di risorse e richiedere processi per richiedere risorse in ordine crescente.
* Evitamento del deadlock: Monitorare dinamicamente lo stato di allocazione delle risorse ed evitare di allocare le risorse se farlo potrebbe portare a una situazione di stallo. L'algoritmo del banchiere è un esempio comune.
* Perché questo aiuta la fame: Evitando i deadlocks, il sistema operativo garantisce che le risorse vengano infine liberate e messe a disposizione dei processi di attesa, riducendo la probabilità di blocco indefinito.
4. Sistemi basati sulla prenotazione:
* Il problema: I processi potrebbero essere continuamente superati da altri per l'accesso alle risorse.
* La soluzione:
* Concetto: Consenti ai processi di riservare le risorse in anticipo.
* Implementazione:
* Un processo può richiedere un'allocazione garantita di una risorsa per un periodo specifico.
* Il sistema operativo garantisce che la risorsa sia disponibile quando il processo ne ha bisogno.
* Perché questo aiuta la fame: La prenotazione impedisce che un processo venga ripetutamente negato l'accesso perché non può competere con le esigenze immediate di altri processi. Garantisce un certo livello minimo di servizio.
5. Pianificazione della lotteria:
* Il problema: I processi potrebbero essere costantemente sfortunati negli schemi di allocazione casuale.
* La soluzione:
* Concetto: Fornisci i processi "biglietti della lotteria" per una risorsa. Il sistema operativo seleziona casualmente un biglietto e il processo che detiene quel ticket ottiene la risorsa.
* Implementazione:
* A ogni processo viene assegnato un numero di biglietti proporzionali alla sua importanza o necessità.
* Il sistema operativo ha una lotteria per determinare quale processo ottiene la risorsa.
* Perché questo aiuta la fame: Mentre è ancora possibile che un processo diventasse sfortunato in un'unica lotteria, nel tempo, i processi con più biglietti riceveranno statisticamente una quota maggiore della risorsa, impedendo la negazione del servizio permanente. Più biglietti ha un processo, maggiore è la possibilità di vincere. Anche i processi con pochi biglietti hanno una possibilità diversa da zero di vincere, prevenendo la fame completa.
6. Meccanismi di feedback:
* Il problema: Gli algoritmi di pianificazione statica potrebbero non adattarsi bene alle mutevoli condizioni del sistema.
* La soluzione:
* Concetto: Monitorare le prestazioni dei processi e regolare di conseguenza l'allocazione delle risorse.
* Implementazione:
* Il sistema operativo tiene traccia di quanto tempo i processi sono in attesa di risorse.
* Se un processo è stato in attesa di un tempo eccessivo, il sistema operativo potrebbe aumentare la sua priorità, allocare più risorse o passare a un diverso algoritmo di pianificazione.
* Perché questo aiuta la fame: I meccanismi di feedback consentono al sistema operativo di rispondere dinamicamente alle situazioni di fame e intraprendere azioni correttive.
Considerazioni chiave:
* Overhead: Tutte queste soluzioni sono dotate di un po 'di sovraccarico. La complessità dell'algoritmo influisce sull'utilizzo della CPU e il monitoraggio dei tempi di attesa richiede memoria.
* Equità vs. Efficienza: Spesso, c'è un compromesso tra equità (prevenzione della fame) e l'efficienza complessiva del sistema. Un sistema perfettamente giusto potrebbe non essere il più efficiente in termini di throughput.
* Specifico del contesto: L'approccio migliore per prevenire la fame dipende dalla risorsa specifica allocata, dalla natura dei processi e dagli obiettivi complessivi del sistema. Un sistema operativo in tempo reale (RTOS) ha requisiti più severi rispetto a un sistema operativo per scopi generali.
In sintesi, i sistemi operativi impiegano una varietà di tecniche, spesso in combinazione, per prevenire la fame e garantire che tutti i processi alla fine ricevano le risorse di cui hanno bisogno per completare i loro compiti. La chiave è bilanciare l'equità, l'efficienza e i requisiti specifici del sistema.
hardware © www.354353.com