Gestione della memoria Flashcards
Algoritmo Clock
Algoritmi di sostituzione delle pagine e allocazione della memoria tra processi
Sostituzione Locale e Globale delle Pagine
Quando si verifica un page fault, l’algoritmo di sostituzione delle pagine deve decidere quale pagina rimuovere dalla memoria. Esistono due approcci principali per questa scelta: la sostituzione locale delle pagine e la sostituzione globale delle pagine.
- Sostituzione Locale delle Pagine: Ogni processo ha una porzione fissa della memoria assegnata. L’algoritmo cerca di trovare la pagina usata meno recentemente solo tra le pagine attualmente allocate al processo che ha causato il page fault. Questo approccio è illustrato nella Figura 3.22(b), dove il processo A sostituisce la pagina A5.
- Sostituzione Globale delle Pagine: L’algoritmo considera tutte le pagine in memoria, indipendentemente dal processo a cui appartengono. La pagina con il valore di riferimento più basso viene sostituita. Questo è mostrato nella Figura 3.22(c), dove la pagina B3 viene sostituita.
Gli algoritmi globali generalmente funzionano meglio, soprattutto quando la dimensione del set di lavoro di un processo può variare durante la sua esecuzione. Gli algoritmi locali, invece, possono causare thrashing se il set di lavoro aumenta senza ottenere più frame, o sprecare memoria se il set di lavoro si restringe.
Algoritmo PFF (Page Fault Frequency)
Un modo per gestire l’allocazione della memoria tra processi è l’algoritmo PFF, che misura la frequenza dei page fault di un processo. Se la frequenza è troppo alta, vengono assegnati più frame al processo. Se è troppo bassa, vengono tolti dei frame.
La Figura 3.23 illustra come la frequenza dei page fault decresce al crescere dei frame assegnati. L’obiettivo del PFF è mantenere la frequenza di page fault entro limiti accettabili, assegnando dinamicamente più o meno frame a ciascun processo.
Thrashing e OOM Killer
Se la combinazione dei set di lavoro di tutti i processi supera la capacità della memoria, si verifica il thrashing. In questi casi, l’algoritmo PFF può indicare che alcuni processi necessitano di più memoria, ma nessuno può cederne. La soluzione può essere:
- Uccidere Processi (OOM Killer): Un processo speciale analizza tutti i processi in esecuzione e sceglie quelli meno importanti o che utilizzano più memoria per terminare e liberare risorse.
- Swapping: Spostare temporaneamente alcuni processi in memoria non volatile, liberando i loro frame per ridurre il thrashing.
Deduplicazione e Compressione
Per ridurre l’occupazione di memoria, tecniche come la deduplicazione possono essere utilizzate. La deduplicazione comporta la ricerca di pagine con lo stesso contenuto e la loro condivisione tra più processi. Se un processo modifica una pagina condivisa, viene generata una copia per mantenere l’integrità dei dati.
Paging Daemon
Un altro metodo per gestire la memoria è l’uso di un paging daemon, un processo in background che si attiva periodicamente per garantire che ci siano sempre frame liberi disponibili. Il paging daemon può:
- Scrivere Pagine Sporche: Scrivere su memoria non volatile le pagine modificate.
- Pulire Frame: Garantire che i frame liberi siano puliti e pronti per essere utilizzati.
Conclusioni
Gli algoritmi di sostituzione delle pagine e l’allocazione della memoria tra processi sono fondamentali per il funzionamento efficiente di un sistema operativo. L’uso combinato di algoritmi di sostituzione locali e globali, l’algoritmo PFF, e tecniche come la deduplicazione e il paging daemon, consente di ottimizzare l’uso della memoria, ridurre il thrashing e mantenere elevate le prestazioni del sistema.
Algoritmo FIFO
Algoritmo Least Recently Used
Algoritmo Seconda Chance
Algoritmo NRU
Algoritmo Working set
Algoritmo WSClock
File mappati
Concetto di Swapping
Memoria secondaria
Lo spazio degli indirizzi
Gestione della memoria libera
Memoria Virtuale
Paginazione