La tecnica normale consiste nell'utilizzare una funzionalità del gestore memmory virtuale presente nella maggior parte dei cpus moderni.
Il modo in cui funziona l'hardware è che mantiene una lista di frammenti di memoria in una cache e un elenco degli indirizzi a cui corrispondono. Quando un programma tenta di leggere un po 'di memoria che non è presente in quella cache, la MMU non va solo a recuperare la memoria dalla ram principale, perché gli indirizzi nella cacher sono solo indirizzi "logici". Invece, richiama un altro programma che interpreterà l'indirizzo e recupererà quella memoria da dovunque dovrebbe essere.
Quel programma, chiamato un cercapersone, viene fornito dal kernel e i flag speciali nella MMU impediscono la sovrascrittura del programma.
Se quel programma determina che l'indirizzo corrisponde alla memoria che il processo dovrebbe utilizzare, fornisce alla MMU l'indirizzo fisico nella memoria principale che corrisponde all'indirizzo logico richiesto dal programma utente, l'MMU lo recupera nel suo cache e riprende a eseguire il programma utente.
Se quell'indirizzo è un indirizzo "speciale", come per un file mappato in memoria, il kernel recupera la parte corrispondente del file nella cache e lascia che il programma venga eseguito insieme a esso.
Se l'indirizzo si trova nell'intervallo che appartiene al kernel, o se il programma non ha ancora assegnato quell'indirizzo a se stesso, il cercapersone solleva un SEGFAULT, uccidendo il programma.
Poiché gli indirizzi sono indirizzi logici, non indirizzi fisici, diversi programmi utente possono utilizzare gli stessi indirizzi logici per indicare diversi indirizzi fisici, il programma di pager del kernel e la MMU rendono tutto questo trasparente e automatico.
Questo livello di protezione non è disponibile su CPU meno recenti (come cpus 80286) e alcuni dispositivi a potenza molto bassa (come CPU CortexM3 o Attiny) perché non c'è MMU, tutti gli indirizzi su questi sistemi sono indirizzi fisici, con un 1-1 corrispondenza tra RAM e spazio indirizzo
Significa MMU invece di VMU e CPU ARM senza MMU di solito hanno una MPU che consente di impostare alcune regioni di memoria (8 in ARM946E-S) con diritti di accesso per utente/kernel. – ninjalj