Per rispondere a questa domanda, visiterò alcune informazioni preliminari. Il paging della domanda pura non può essere realizzato senza il supporto hardware. Tutte le architetture informatiche moderne supportano il paging, tuttavia molti hanno dettagli di implementazione diversi.
I processori x86 usano quella che viene chiamata tabella delle pagine per tenere traccia degli spazi degli indirizzi virtuali e delle mappature delle pagine, nonché dei bit sui privilegi di accesso e, più rilevante, indipendentemente dal fatto che quella pagina sia presente o meno nella memoria fisica. Le violazioni attivano errori di pagina intrappolati dal sistema operativo.
Per ulteriori informazioni a riguardo, consulta questo articolo .
Per rispondere alla domanda di scambio di pagine, dobbiamo prima visitare la domanda su come il sistema operativo tiene traccia di quali pagine vengono utilizzate da quale processo e come vengono allocate. Esistono molte diverse strutture dati che possono essere utilizzate per questo. Un array di bit piatti che indica se un frame è allocato o meno è unidirezionale. Elenchi collegati o pile è un altro. Con il paging della domanda pura, le pagine allocate non vengono effettivamente contrassegnate come presenti quando vengono allocate. Ciò ha l'effetto che nessun ariete fisico viene accantonato per un processo fino a quando non lo scrive. Una volta fatto, l'hardware genera un errore intercettato dal sistema operativo, quindi il sistema operativo utilizza un algoritmo di scambio se non ci sono pagine fisiche disponibili da assegnare alla pagina virtuale già allocata.
Per ulteriori informazioni sull'assegnazione dei frame di pagina, vedere qui . Lì vedrai una panoramica generale di alcune strutture dati adeguate.
Una volta implementato un algoritmo adatto per l'allocazione della pagina, è necessario sceglierne un altro per allocare spazio su disco per lo scambio. Windows, ad esempio, ha storicamente utilizzato un file flat nel filesystem per lo scambio di pagine. Immagino che per ogni nodo nella struttura dati che tenga traccia delle pagine allocate sia presente un puntatore associato a un offset nel file, indicando la posizione della pagina nel disco. I sistemi operativi simili a Unix hanno tradizionalmente utilizzato partizioni separate per lo scambio di pagine, che è probabilmente più veloce poiché non esiste un livello di filesystem.
È anche possibile separare le strutture di dati dell'algoritmo di scambio da quelle dell'algoritmo di allocazione, tuttavia i due sono correlati, quindi probabilmente ciò non avviene spesso.
Spero che risponda alla tua domanda nonostante la relativa brevità con cui l'ho trattata. Ho scoperto che il modo migliore per conoscere i sistemi operativi è quello di immergersi nei dettagli specifici dell'architettura a volte sgradevoli che possono essere trovati in siti come wiki.osdev.org e www.osdever.net che si occupano specificamente della creazione di sistemi operativi per hobby e offrono eccellenti tutorial su tali dettagli.