Page fault

Da Wikipedia, l'enciclopedia libera.

Il page fault è un'eccezione di tipo trap, generata quando un processo cerca di accedere ad una pagina che è mappata nello spazio di indirizzamento virtuale, ma non è ancora caricata nella memoria fisica. Tipicamente, il sistema operativo tenta di risolvere il page fault rendendo accessibile la pagina richiesta in una locazione della memoria fisica oppure terminando il processo in caso di accesso illegale. Il componente hardware che si occupa del rilevamento di un page fault è il memory management unit, mentre quello software di gestione delle eccezioni è generalmente parte del sistema operativo.

Un page fault è molto sconveniente, poiché la pagina che non viene trovata nella memoria fisica deve successivamente essere cercata (con gli opportuni controlli) e caricata in essa: ciò implica un 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 sorgente]

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 frames liberi nella memoria fisica (nella quale 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 (in pratica, la pagina da rimpiazzare viene copiata sulla memoria di massa, mentre 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 sorgente]

  • 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 sorgente]