Sì, questo è effettivamente uno scambio. Citando le note di rilascio per 0.12:
Memoria virtuale.
Oltre al programma "mkfs", ora c'è un programma "mkswap" sul disco di root. La sintassi è identica:"mkswap -c /dev/hdX nnn", e ancora:questo scrive sulla partizione, quindi fai attenzione. Lo scambio può quindi essere abilitato cambiando la parola all'offset 506 nell'immagine di avvio nel dispositivo desiderato. Usa lo stesso programma usato per impostare il filesystem root (ma cambia l'offset 508 a 506 ovviamente).
NOTA! Questo è stato testato da Robert Blum, che ha una macchina 2M, e permette di eseguire gcc senza molta memoria. TUTTAVIA, ho dovuto smettere di usarlo, poiché il mio spazio su disco è stato divorato dalla beta-gcc-2.0, quindi mi piacerebbe sapere che funziona ancora:da circa periodo natalizio. Quindi le nuove modifiche potrebbero essersi ritorcendo contro la VM, ma ne dubito.
Nella versione 0.12, il paging viene utilizzato per una serie di funzioni, non solo per lo scambio su un dispositivo:caricamento su richiesta (solo caricamento di pagine da file binari man mano che vengono utilizzate), condivisione (condivisione di pagine comuni tra processi).
Sì, questo è esattamente il concetto noto come paging o scambio. (Molto tempo fa questi termini avevano significati leggermente diversi, ma nel 21° secolo sono sinonimi, tranne forse nel contesto di alcuni sistemi operativi non Unix.)
Per essere chiari, lo scambio non era una caratteristica innovativa:la maggior parte dei sistemi Unix “seri” l'avevano, e la caratteristica è più vecchia di Unix. Ciò che lo scambio ha fatto per Linux è stato trasformarlo in un Unix "serio", mentre MINIX era pensato per scopi educativi.
Lo scambio oggi è ancora lo stesso concetto. L'euristica per decidere quali pagine salvare e quando salvarle è diventata molto più complessa, ma il principio di base rimane.
Lo scambio è un concetto che precede la memoria virtuale e persino la protezione della memoria:significa semplicemente mettere un processo su disco per fare spazio a un altro. L'Unix originale aveva due stranezze al riguardo:programmi di "testo condiviso" che mantenevano il codice del programma solo una volta in memoria e scambiavano solo la sezione dei dati. E aveva la chiamata di sistema "fork" che scambiava un processo su disco senza sostituire l'immagine della memoria e mantenendo invece una copia (il figlio) in esecuzione.
La pagina su disco, al contrario dello scambio, consente l'esecuzione di processi che non si adattano alla memoria fisica. Richiede tutta la memoria proteggibile, la mappatura della memoria degli indirizzi virtuali agli indirizzi fisici e un meccanismo di errore di pagina riavviabile che consentirà di modificare la mappatura da un indirizzo virtuale non mappato a un indirizzo fisico ragionevolmente selezionabile e riprendere il comando che doveva essere interrotto perché della mappatura mancante.
UNIX era in grado di funzionare su processori 68000 (incluso lo scambio) senza MMU, e faceva buon uso di una MMU se disponibile per la protezione della memoria, ma ci voleva il 68010 per avere effettivamente i meccanismi che consentissero di riprendere un programma dopo un errore di pagina. /P>
L'80386 era per molti aspetti un design scadente e obsoleto. Ma la sua MMU incorporata e la capacità di eseguire correttamente il page fault lo hanno reso immediatamente più praticabile per i sistemi simili a UNIX che non erano solo in grado di scambiare ma anche di page-to-disk.
È una specie di ironia storica che questo grande sacrificio del silicio (una MMU a tutti gli effetti e il design di una CPU con capacità virtuale richiedessero un bel po' di spazio per il die) agli dei dei sistemi moderni sia stato fatto principalmente da un hobbista, e il " grandi pesci" come Xenix e OS/2 alla fine caddero nel dimenticatoio.
Anche se puoi chiamare "niente inserito nella pagina e non pianificato per l'esecuzione" allo stesso modo di "scambiato", non è davvero una proposta tutto o niente come lo era il significato originale di "scambiato".
La differenza si è persa nei decenni trascorsi da allora, poiché il demand-paging era molto più utile e ridimensionato meglio dello scambio ordinario che lo ha sostituito una volta che le necessarie funzionalità di CPU e MMU sono diventate comuni, ma il rallentamento e il thrashing associati a entrambi hanno creato un simile look-and-feel.