In quale parte dell’architettura del computer è memorizzata la tabella delle pagine?

La risposta dipende dall'architettura!

In un sistema con memoria virtuale paginata, la tabella delle pagine vive nella memoria virtuale di qualsiasi cosa sia responsabile della mappatura delle pagine (il sistema operativo/ypervisor). Questa, a sua volta, vive ovunque sia necessario (DRAM, per semplicità - si consideri cosa succede se la tabella delle pagine viene scambiata su disco; dovrebbe essere in DRAM per riportarsi in DRAM), e il suo indirizzo è dato da uno speciale registro di configurazione scritto dall'OS/Hypervisor.

La maggior parte dei sistemi moderni fornisce una certa accelerazione hardware per la traduzione degli indirizzi di pagina, e mantiene una cache on-chip delle traduzioni (il TLB, o translation lookaside buffer). Questa tabella non è la tabella delle pagine, ma è una cache per le voci della tabella delle pagine usate di recente. Si noti che il TLB assume una dimensione di indirizzo virtuale tipicamente utilizzata e quindi utile. Inoltre, le pagine mancanti e le evacuazioni sono gestite da un hardware speciale che aggiorna il TLB (il page table walker, o PTW).

La dimensione della tabella delle pagine varia con le architetture, e alcune supportano dimensioni di pagina non uniformi (pagine grandi / pagine enormi / ecc.). Convenientemente, in un tipico sistema con uno spazio di indirizzi di 32 bit e pagine di 4KB (la memoria all'interno di una pagina è indicizzata da 12 bit dell'indirizzo virtuale, poiché 2^12 = 4096), ci sono 20 bit rimanenti (32-12 = 20) per l'indice della tabella delle pagine, il che significa che un indirizzo virtuale di 32 bit può differenziare 2^20 pagine di 4KB. Se ogni voce della tabella delle pagine è lunga 1 parola (4 byte), l'intera struttura dei dati sta in 4MB (anche se la struttura dei dati della tabella delle pagine è spesso implementata in modo gerarchico). Realisticamente, diverse architetture, sistemi operativi, ipervisori, ecc. sono in qualche modo liberi di implementare le proprie versioni di memoria virtuale, finché configurano e usano correttamente l'hardware sottostante.

Alcuni computer non usano affatto la memoria virtuale, o usano schemi diversi dalle pagine mappate per implementare la memoria virtuale e non hanno bisogno di una tabella delle pagine.