Page fault
Il page fault è un'eccezione di tipo trap, generata quando un processo cerca di accedere a una pagina che è presente nel suo spazio di indirizzamento virtuale, ma che non è presente nella memoria fisica poiché mai stata caricata o perché precedentemente spostata su disco di archiviazione. Tipicamente, il sistema operativo tenta di risolvere il page fault caricando la pagina richiesta nella memoria virtuale oppure terminando il processo in caso di accesso illegale. Il componente hardware che rileva i page fault è il memory management unit, mentre quello software di gestione delle eccezioni è generalmente parte del sistema operativo (kernel).
Il page fault è molto sconveniente, poiché la pagina che non viene trovata nella memoria virtuale deve successivamente essere cercata, con gli opportuni controlli, e caricata in essa: ciò implica l'accesso alla memoria di massa, comunemente un hard disk), che è molto costoso in termini di tempo. Inoltre un numero eccessivo di pagine mancanti può comportare fenomeni di thrashing, ossia di paginazione degenere, con conseguente degradazione delle prestazioni del sistema operativo.
Gestione
[modifica | modifica wikitesto]Dopo il verificarsi di un page fault, vengono eseguite le seguenti operazioni:
- Controllo della tabella interna del processo, solitamente salvata con il process control block: se l'accesso alla memoria era illegale, il processo viene arrestato, altrimenti si provvede al caricamento della pagina richiesta, ricercandola nella memoria di massa.
- Ricerca di un frame libero e caricamento della pagina nella memoria fisica: se ci sono frame liberi nella memoria fisica, in cui sono presenti le pagine utilizzate dai processi, la pagina mancante viene immediatamente copiata in essa e la tabella delle pagine aggiornata; in caso contrario il sistema operativo esegue un algoritmo di sostituzione delle pagine che sceglie la pagina da rimpiazzare ("vittima") secondo determinate politiche di sostituzione e la scambia con la pagina richiesta tramite swap: la pagina da rimpiazzare viene copiata sulla memoria di massa e al suo posto la pagina cercata viene caricata in memoria . Tra gli algoritmi di sostituzione delle pagine comunemente usati vi sono l'algoritmo FIFO (facile da implementare, ma che soffre dell'anomalia di Belady), l'algoritmo della seconda opportunità (o second-chance), l'algoritmo dell'orologio e l'algoritmo LRU (Least Recently Used).
- Riavvio dell'istruzione che era stata interrotta a causa del page fault.
Bibliografia
[modifica | modifica wikitesto]- Abraham Silberschatz, Peter Baer Galvin e Greg Gagne, Sistemi operativi - Concetti ed esempi, 7ª ed., Pearson Education Italia, 2006. ISBN 9788871922331
Collegamenti esterni
[modifica | modifica wikitesto]- Memoria virtuale: Dettagli, su web.mit.edu, Massachusetts Institute of Technology. URL consultato il 3 dicembre 2011 (archiviato dall'url originale il 9 agosto 2011).