Proverò a iniziare lentamente, e poi metterò tutto insieme per te. È così:
La memoria virtuale, come comunemente usata, si riferisce al "paging". Come suggerisce il nome, il paging è come un blocco note umano.
Quando si elaborano somme semplici o si imparano informazioni semplici, si fa tutto in testa: si caricano tutte le informazioni, le si elabora e si ottiene la risposta. È come un computer che carica file dal disco rigido: carica i programmi o le immagini o altre informazioni necessarie per lavorare nella sua "memoria reale" (o "memoria fisica") e ci lavora con il suo "cervello" ( il suo processore).
Tuttavia, quando stai imparando informazioni complesse o lavorando con somme complesse, potresti non essere in grado di adattarti a tutto ciò nella tua testa in una volta. Ti confondi, inizi a rallentare, non riesci a tenere tutto lì dentro in una volta e devi dimenticare qualcosa per ricordare qualcos'altro.
La soluzione umana è usare un blocco note. Annotiamo sulle pagine tutte le cose che non possiamo ricordare in una volta, ma ci riferiamo a loro mentre facciamo le somme. Potremmo non essere in grado di ricordare un enorme elenco di dati sulle vendite per il mese, ma possiamo guardare le pagine, ottenere le informazioni un po 'alla volta ed elaborare ogni bit. È come se il computer "impaginasse" la sua memoria: scrivesse pagine piene di informazioni e le mettesse in "memoria virtuale" per riferimento futuro, e realizzasse che aveva bisogno di una pagina e caricando quella pagina dalla memoria virtuale nella memoria reale. Su Linux e Unix, il luogo in cui sono memorizzate queste pagine è letteralmente chiamato "file di paging", e le pagine di dati in memoria sono letteralmente chiamate "pagine". Sistemi diversi hanno nomi diversi per queste cose, ma il concetto generale è più o meno lo stesso.
Quindi davvero, il paging è molto semplice. Tutte le pagine di informazioni non si adattano alla memoria, quindi alcune pagine vengono inserite sul disco e caricate di nuovo in seguito.
Ora, dove diventa sempre più complicato, i moderni sistemi dispongono della mappatura della memoria e della protezione della memoria, che di solito è gestita dallo stesso sistema hardware nel computer: l'unità di gestione della memoria o MMU.
In un (moderno) computer multitasking, che può eseguire molti programmi contemporaneamente e dotato di protezione della memoria, ogni programma è solitamente separato da altri programmi in esecuzione sullo stesso sistema. In questo modo, un programma non può alterare un altro programma semplicemente accedendo alla sua memoria - la MMU separa fisicamente lo spazio di indirizzi di un programma da quello di altri. In altre parole, i programmi dell'utente non vedono i programmi di altri utenti o anche altri programmi. Non vedono la "memoria reale", vedono la loro "memoria virtuale".
Ora, questo concetto di isolamento della memoria e il concetto di file di paging sono due cose concettualmente diverse, motivo per cui sei confuso. Tuttavia, la chiave è che entrambi funzionano utilizzando la MMU, l'unità di gestione della memoria, che divide la memoria in pagine e mappa le pagine su uno spazio di indirizzi virtuale.
Pertanto, quando un programma richiede la memoria in corrispondenza di un determinato "indirizzo di memoria", ciò che accade realmente è che le pagine di memoria per quel programma e i loro indirizzi corrispondenti (lo "spazio degli indirizzi" del programma) vengano cercate e la pagina che corrisponde a quel blocco di memoria è stato trovato. Quella pagina può essere caricata da qualche parte nella memoria reale, nel qual caso il programma ha accesso, oppure può essere pagata su un disco. Se viene eseguito il paging, viene attivato un "errore di pagina": si accede al disco e la pagina viene caricata in memoria. Quindi il programma funziona anche quando non c'è abbastanza memoria, ma funziona LENTAMENTE, se deve usare il disco per quello che normalmente sarebbe un accesso alla memoria molto veloce.
Ora, se non c'è abbastanza spazio per caricare quella pagina in memoria, allora hai un problema. In tal caso, alcune ALTRE pagine che sono già in memoria devono essere "scambiate" su disco, in modo da poter caricare la prima pagina del programma. Oppure potrebbero essere ugualmente pagine dello stesso programma. Questo si vede a volte nei programmi di grafica, ad esempio, su sistemi pesantemente caricati, quando parte dell'immagine viene caricata lentamente e disegnata rapidamente, quindi la parte successiva viene caricata altrettanto lentamente e disegnata rapidamente e quando torni a lavorare con la prima parte, è di nuovo lento. Questo perché vengono caricati per essere elaborati, quindi scambiati di nuovo, quindi è possibile lavorare su qualcos'altro. Ovviamente, questo è un modo molto lento di lavorare e ciò di cui hai davvero bisogno è più memoria REALE.