Nell'informatica, spazzatura è la scarsa prestazione di un sistema di memoria virtuale (o di paging) quando le stesse pagine vengono caricate ripetutamente a causa della mancanza di memoria principale per mantenerle in memoria. A seconda della configurazione e dell'algoritmo, il rendimento effettivo di un sistema può peggiorare di più ordini di grandezza.
Nell'informatica, battendo si verifica quando le risorse di memoria virtuale di un computer sono sovrautilizzate, portando a uno stato costante di paginazione e errori di pagina, inibendo la maggior parte dell'elaborazione a livello di applicazione. Causa il peggioramento o il collasso delle prestazioni del computer. La situazione può continuare indefinitamente finché l'utente non chiude alcune applicazioni in esecuzione o i processi attivi non liberano ulteriori risorse di memoria virtuale.
Per conoscere più chiaramente il thrashing, dobbiamo innanzitutto conoscere l'errore di pagina e lo scambio.
Battendo è quando l'errore di pagina e lo scambio si verificano molto frequentemente a una velocità più elevata e quindi il sistema operativo deve dedicare più tempo allo scambio di queste pagine. Questo stato nel sistema operativo è noto come thrashing. A causa del thrashing, l'utilizzo della CPU sarà ridotto o trascurabile.
Il concetto di base è che se a un processo vengono allocati troppi pochi frame, si verificheranno troppi e troppo frequenti page fault. Di conseguenza, la CPU non svolgerebbe alcun lavoro prezioso e l'utilizzo della CPU diminuirebbe drasticamente.
Lo scheduler a lungo termine proverebbe quindi a migliorare l'utilizzo della CPU caricando più processi nella memoria, aumentando così il grado di multiprogrammazione. Sfortunatamente, ciò comporterebbe un’ulteriore diminuzione dell’utilizzo della CPU, innescando una reazione a catena di page fault più elevati seguita da un aumento del grado di multiprogrammazione, chiamato thrashing.
Algoritmi durante il Thrashing
Ogni volta che viene avviato il thrashing, il sistema operativo tenta di applicare l'algoritmo di sostituzione della pagina globale o l'algoritmo di sostituzione della pagina locale.
1. Sostituzione globale della pagina
Poiché la sostituzione globale della pagina può portare qualsiasi pagina, tenta di portare più pagine ogni volta che viene trovato un thrashing. Ma ciò che in realtà accadrà è che nessun processo riceverà abbastanza frame e, di conseguenza, il thrashing aumenterà sempre di più. Pertanto, l'algoritmo di sostituzione globale della pagina non è adatto in caso di thrashing.
2. Sostituzione della pagina locale
A differenza dell'algoritmo di sostituzione della pagina globale, la sostituzione della pagina locale selezionerà le pagine che appartengono solo a quel processo. Quindi c'è la possibilità di ridurre il thrashing. Ma è dimostrato che ci sono molti svantaggi se utilizziamo la sostituzione della pagina locale. Pertanto, la sostituzione della pagina locale è solo un'alternativa alla sostituzione della pagina globale in uno scenario di thrashing.
Cause del thrashing
Programmi o carichi di lavoro possono causare problemi di prestazioni e ciò comporta gravi problemi di prestazioni, come:
- Se l'utilizzo della CPU è troppo basso, aumentiamo il grado di multiprogrammazione introducendo un nuovo sistema. Viene utilizzato un algoritmo di sostituzione della pagina globale. Lo scheduler della CPU rileva la diminuzione dell'utilizzo della CPU e aumenta il grado di multiprogrammazione.
- L'utilizzo della CPU viene tracciato rispetto al grado di multiprogrammazione.
- All’aumentare del grado di multiprogrammazione aumenta anche l’utilizzo della CPU.
- Se il grado di multiprogrammazione viene ulteriormente aumentato, si verifica il thrashing e l’utilizzo della CPU diminuisce drasticamente.
- Quindi, a questo punto, per aumentare l’utilizzo della CPU e fermare il thrashing, dobbiamo diminuire il grado di multiprogrammazione.
Come eliminare il thrashing
Il thrashing ha alcuni impatti negativi sulla salute del disco rigido e sulle prestazioni del sistema. Pertanto, è necessario intraprendere alcune azioni per evitarlo. Per risolvere il problema del thrashing, ecco i seguenti metodi, come ad esempio:
Tecniche per prevenire il thrashing
La sostituzione della pagina locale è migliore della sostituzione della pagina globale, ma la sostituzione della pagina locale presenta molti svantaggi e quindi a volte non è utile. Pertanto di seguito sono riportate alcune altre tecniche utilizzate per gestire il thrashing:
1. Modello di località
Una località è un insieme di pagine che vengono utilizzate attivamente insieme. Il modello di località afferma che mentre un processo viene eseguito, si sposta da una località all’altra. Pertanto, un programma è generalmente composto da diverse località che possono sovrapporsi.
Ad esempio, quando viene chiamata una funzione, essa definisce una nuova località in cui vengono fatti riferimenti di memoria alle istruzioni di chiamata della funzione, alle variabili locali e globali, ecc. Allo stesso modo, quando si esce dalla funzione, il processo lascia questa località.
2. Modello del working set
Questo modello si basa sul concetto sopra esposto del Modello di Località.
Il principio di base afferma che se assegniamo abbastanza frame a un processo per adattarsi alla sua località attuale, esso genererà errori solo ogni volta che si sposta in una nuova località. Ma se i frame allocati sono inferiori alla dimensione della località corrente, il processo è destinato a bloccarsi.
Secondo questo modello, in base al parametro A, il working set è definito come l'insieme di pagine nei riferimenti alla pagina 'A' più recenti. Pertanto, tutte le pagine utilizzate attivamente finirebbero sempre per far parte del set di lavoro.
Java esegue il ciclo while
La precisione del working set dipende dal valore del parametro A. Se A è troppo grande, i working set potrebbero sovrapporsi. D’altro canto, per valori minori di A, la località potrebbe non essere coperta interamente.
Se D è la domanda totale di telai e WSSioè la dimensione del working set per il processo i,
D = ⅀ WSSio
Ora, se 'm' è il numero di fotogrammi disponibili in memoria, ci sono due possibilità:
- D>m, ovvero la domanda totale supera il numero di frame, si verificherà un thrashing poiché alcuni processi non otterrebbero abbastanza frame.
- D<=m, then there would be no thrashing.< li> =m,>
Se ci sono abbastanza frame aggiuntivi, è possibile caricare in memoria alcuni processi in più. D'altra parte, se la somma delle dimensioni del working set supera la disponibilità dei frame, alcuni processi devono essere sospesi (scambiati fuori memoria).
Questa tecnica previene il thrashing e garantisce il massimo grado di multiprogrammazione possibile. Pertanto, ottimizza l'utilizzo della CPU.
3. Frequenza degli errori di pagina
Un approccio più diretto per gestire il thrashing è quello che utilizza il concetto di frequenza di errore di pagina.
Il problema associato al thrashing è l'elevato tasso di errori di pagina e quindi il concetto qui è quello di controllare il tasso di errori di pagina.
Se il tasso di errore della pagina è troppo alto, indica che al processo sono assegnati troppo pochi frame. Al contrario, un basso page fault rate indica che il processo ha troppi frame.
È possibile stabilire i limiti superiore e inferiore sul tasso di errore di pagina desiderato, come mostrato nel diagramma.
Se il tasso di errore della pagina scende al di sotto del limite inferiore, i frame possono essere rimossi dal processo. Allo stesso modo, se il tasso di errori di pagina supera il limite superiore, è possibile allocare più frame al processo.
In altre parole, lo stato grafico del sistema dovrebbe essere mantenuto limitato alla regione rettangolare formata nel diagramma dato.
Se il tasso di errore della pagina è elevato senza frame liberi, alcuni processi possono essere sospesi e ad essi assegnati possono essere riallocati ad altri processi. I processi sospesi potranno riprendere successivamente.