Poiché questo è principalmente il lato del sistema operativo, una delle quattro cose che accadono
Primo, quando si raggiunge la memoria bassa la maggior parte dei sistemi operativi standard basati sul kernel, tra cui Windows, MacOS, iOS, Linux e Android invierà ai programmi un segnale di "pressione della memoria". Questo significa che i programmi che ascoltano questo segnale rimuoveranno le cose in memoria di cui non hanno bisogno, come la cache del browser, o i dati del livello precedente nel vostro gioco. Alcune attività in background completamente opzionali possono scegliere di uscire e rilanciare alla loro prossima operazione programmata quando questo accade.
Dopo questo il sistema operativo sceglierà una o entrambe le seguenti se c'è ancora sotto una quantità sicura di memoria extra:
1.
1. Gli elementi "evitabili" come la cache, i buffer e i programmi in stato di cache ibernata (se il sistema operativo ne è capace) saranno espulsi dalla memoria.
2. Gli elementi "stantii" che non sono stati letti o scritti possono essere compressi o messi in swap. (Tecnicamente la compressione è una forma di swap su un RAMDisk.)
Tutti questi comportamenti rallenteranno sostanzialmente il vostro computer, ma altrimenti non lo noterete.
Infine, se tutte queste opzioni non liberano abbastanza memoria, e poi un programma cerca di chiedere della memoria, opererà una funzione chiamata "OOM" task killer. Questo forzerà l'uscita di uno dei seguenti a seconda del design del sistema operativo:
1. 1. Il task che ha richiesto memoria.
2. Il più grande occupante di memoria.
3. Il task inattivo più stantio che non ha fatto nulla per molto tempo.
Ovviamente tutte queste scelte hanno problemi, e potrebbero facilmente uccidere il task sbagliato e mandare in crash il sistema. Inutile dire che non c'è una buona opzione a questo punto, è una questione di avere il sistema operativo configurato per scegliere l'opzione meno cattiva.
Ora d'altra parte i "sistemi operativi stupidi" che sono sostanzialmente più piccoli del BIOS su un tipico desktop, che si trovano tipicamente in dispositivi come microonde, TV non intelligenti, il computer che gestisce le cose nelle auto, e anche il computer che gestisce le cose negli aerei non avranno questi meccanismi di gestione.
Una delle due cose accadrà qui.
1. Il sistema entrerà in uno stato di Soft-reboot fault-handler, dove mantiene rapidamente le sue impostazioni correnti di base nella memoria non volatile, si riavvia in una sequenza standard di standby e poi ripristina le impostazioni in un tempo così breve che non lo noterete mai.
2. Il sistema tenterà di allocare il prossimo blocco incrementale di memoria, e troverà via software che non esiste, o darà un errore al processore, innescando il caso 1.
Come potete vedere, tali sistemi sono molto a prova di errore. Questo è il modo in cui gestiscono quasi ogni errore di questo tipo.
Tuttavia, molti di questi sistemi sono così semplici che non usano affatto la memoria allocata dinamicamente. Non stanno caricando nuovi programmi, e non stanno creando o distruggendo variabili. Le variabili sono impostate in posizioni prestabilite nella memoria, facendo sì che il sistema non sia mai a corto di memoria.