Il kernel di Mac OS è uguale a quello di Linux? Qual è la differenza?

MacOS/BSD ha gli swap-out. Linux ha l'OOM Killer. Prima un po' di background.

Unix ha iniziato a funzionare su minicomputer come il DEC PDP-11. Non c'era memoria virtuale, piuttosto interi processi venivano copiati ("swappati") tra la RAM e l'area di swap sul disco. Arrivò il DEC VAX-11 con l'hardware della memoria virtuale. Bill Joy e gli amici dell'Università della California a Berkeley scrissero le modifiche di maggior successo al kernel Unix per supportare la memoria virtuale. Lasciarono nel codice la possibilità di scambiare interi processi (e non solo pagine) quando il sistema si impantanava. Ricordate, questo era nei giorni in cui molti studenti condividevano diversi Vaxen che sarebbero diventati pesantemente carichi alla fine del semestre.

Bell Labs' Unix era disponibile solo per le università ed era gratuito per loro. Gli studenti imparavano la semplicità e la potenza di Unix. Non c'era un equivalente al di fuori dell'università, così la gente scrisse dei cloni, soprattutto per i PC. Ce n'erano diversi, ma Linux divenne di gran lunga il più popolare. L'i386 aveva un hardware per la memoria virtuale, quindi praticamente tutti questi cloni di Unix avevano la memoria virtuale; tuttavia, dato che si trattava per lo più di sistemi desktop, a singolo utente, non si preoccupavano dello swapping.

In qualsiasi sistema operativo a memoria virtuale (Unix, Linux, Windows, ecc.) il kernel può ritrovarsi senza memoria quando riceve un page fault. Il sottosistema di memoria virtuale lavora duramente per evitare che questo accada, ma può accadere su un sistema sovraccarico. Su Unix, decide di swappare abbastanza processi per alleviare la pressione. Tipicamente un processo swappato non è considerato in esecuzione per almeno 20 secondi. Quindi alcuni processi diventano davvero lenti - si spera non quelli interattivi.

Inversamente, Linux attiva l'OOM Killer (Out Of Memory Killer) quando è criticamente a corto di risorse. L'OOM Killer cerca grandi processi "non importanti" e li uccide per recuperare risorse. I processi con permessi da superutente possono contrassegnarsi come immuni all'OOM Killer, ma questo significa solo che qualche altro processo sta per morire.

Ricordate, questi problemi di out-of-resource accadono solo quando il sistema è molto carico e probabilmente inutilizzabile interattivamente.