Dunque, la domanda è effettivamente un po' OT, ho chiesto ai piani alti e non siamo sicuri se lasciarla qui o spostarla (ma non ci sono sezioni adatte in effetti), comunque per ora terrei qui, al limite si fa sempre a tempo a spostare.
Comunque, letto l'articolo di Wikipedia? Cosa non ti è chiaro dell'argomento?
In generale parlando di paginazione nei sistemi operativi moderni si parla di uno schema di implementazione della memoria virtuale: ad ogni processo viene associato uno spazio di indirizzi virtuale, facendogli credere in un certo senso di avere una "ram tutta sua". In realtà questo spazio di indirizzi è diviso in tante pagine di memoria, gestite dal sistema operativo. Ogni pagina di memoria può essere tenuta effettivamente in RAM (cosa che accade quando il programma effettivamente la sta usando) oppure può essere copiata su disco quando la RAM "vera" serve per altre pagine (dello stesso o di altri programmi); il mapping tra un indirizzo nei vari spazi di indirizzi virtuali e la pagina corrispondente è gestito dal sistema operativo.
Quando un programma cerca di accedere ad una certa locazione di memoria accade una cosa di questo genere:
- se l'indirizzo corrisponde ad una pagina che è già in RAM, l'indirizzo virtuale viene convertito in indirizzo fisico (in genere direttamente dal processore, grazie alla MMU) e l'accesso ai dati procede "normalmente";
- in caso contrario, viene richiamata una routine del memory manager del sistema operativo; questo verifica se l'indirizzo corrisponde ad una pagina effettivamente esistente (il paging consente di avere spazi di indirizzi "a buchi") ma temporaneamente copiata su disco;
- se la pagina non esiste (o esiste ma il programma sta tentando un accesso che non gli è consentito) viene sollevato un errore (le famose "access violation");
- se la pagina invece esiste ma è stata messa su disco per fare spazio ad altre pagine in RAM, il sistema operativo si occupa se necessario di fare spazio in memoria fisica (spostando altre pagine su disco) e di piazzare la pagina richiesta in RAM; si prosegue quindi come al punto 1.


Rispondi quotando