Memoria virtuale: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Eskimbot (discussione | contributi)
m robot Aggiungo: ca:Memòria virtual
Riga 48:
 
Ad esempio supponiamo che in un dato momento la memoria fisica sia satura e contenga esattamente la località del sistema e che in questa situazione viene avviato un nuovo programma. Il [[processo (informatica)|processo]] che viene creato ha bisogno di allocare della memoria. Dato però che la memoria principale è piena il sistema operativo provvede a liberare parte dello spazio memorizzando parte delle informazioni nella memoria secondaria. Successivamente, quando il controllo torna al processo i cui dati sono stati appena spostati, viene nuovamente richiesta un'operazione di swapping per ricaricare in memoria principale gli stessi. Dato che tutte le informazioni contenute nella memoria principale sono indispensabili questo fenomeno avviene molto spesso. Essendo la memoria secondaria molto più lenta (centinaia o migliaia di volte) rispetto alla memoria principale, questo causa un considerevole rallentamento del sistema, che è impegnato quasi esclusivamente in operazioni di I/O, e diventa presto inutilizzabile e poco, o per nulla, responsivo ai comandi dell'utente. Tale fenomeno è chiamato '''thrashing'''.
 
Tecnicamente,quando la memoria fisica libera (e quindi il numero di frame liberi) è insufficiente a contenere il working set corrente di un processo, quest’ultimo
comincerà presto a generare parecchi page fault, rallentando considerevolmente la propria velocità d’esecuzione. Quando parecchi processi cominciano ad andare in thrashing, '''ovvero a spendere più tempo per la paginazione che per l’esecuzione''', il sistema operativo potrebbe erroneamente essere indotto a dedurre che sia necessario aumentare il grado di multiprogrammazione (dato che la CPU rimane per la maggior parte del tempo inattiva a causa dell’intensa attivita di I/O). In questo modo vengono avviati nuovi processi che però, a causa della mancanza di frame liberi, cominceranno a loro volta ad andare in thrashing: in breve le prestazioni del sistema collassano fino ad indurre l’operatore a dover terminare forzatamente
alcuni processi.
 
== Algoritmi di swapping ==