GNU/Linux >> Linux Esercitazione >  >> Linux

Differenza tra pagina virtuale e frame di pagina?

La memoria fisica è organizzata in PAGE FRAMES. La dimensione di un frame di pagina è una potenza di 2 in byte e varia tra i sistemi.

La memoria logica è organizzata in PAGINE. La dimensione della pagina corrisponde a una cornice di pagina.

Un indirizzo logico è diviso in un selettore di pagina e un offset nella pagina.

Le pagine logiche sono mappate ai frame di pagina utilizzando le tabelle delle pagine. La struttura di una tabella delle pagine varia tra i sistemi. Il selettore di pagine di un indirizzo logico funge da indice in una tabella di pagine.

Nella maggior parte dei sistemi, le tabelle delle pagine possono specificare indirizzi logici validi a cui non è associato alcun frame di pagina. Questo è un sistema di memoria virtuale. Se un'applicazione tenta di accedere a tale pagina, attiva un'eccezione di errore di pagina. Il gestore degli errori di pagina del sistema operativo deve allocare un frame di pagina fisico, caricare il frame di pagina utilizzando i dati dalla memoria secondaria, aggiornare la tabella delle pagine per mappare la pagina logica al frame di pagina fisico appena allocato e infine riavviare l'istruzione che ha causato l'errore.

Il sistema operativo gestisce le tabelle delle pagine. La CPU (in modo trasparente all'applicazione) traduce i frame di pagina logici in frame di pagina fisici utilizzando la tabella delle pagine.


La cornice della pagina è una proprietà fisica della memoria principale. Invece, la pagina virtuale è... virtuale.

frame 0  frame 1  frame 2  frame 3  frame 4
----------------------------------------------
|        |        |        |        |        |
|        |        |        |        |        |
---------------------------------------------- Main Memory

Una pagina (o pagina di memoria, o pagina virtuale, o pagina logica) è un blocco contiguo di memoria virtuale di lunghezza fissa.

Un frame (o frame di memoria, o pagina fisica, o frame di pagina) è un blocco di RAM di lunghezza fissa (cioè memoria fisica, esiste - come in "fisico". La memoria virtuale è stata inventata affinché la nostra matematica funzioni correttamente ed efficientemente per gestire in modo sicuro la memoria).

Si noti che la cornice potrebbe non essere contigua, ma la pagina lo sarà. Vogliamo che il processo, il sistema operativo, gestisca indirizzi consecutivi in ​​​​quanto rende tutto più semplice. Lascia che un chip hardware dedicato (la MMU) corrisponda all'indirizzo virtuale all'indirizzo fisico corretto e viceversa.

Gli indirizzi virtuali vengono utilizzati dal processo, mentre gli indirizzi fisici vengono utilizzati dall'hardware, ad es. la CPU (mettendo l'indirizzo nel suo bus degli indirizzi per richiedere un accesso alla memoria) e il sottosistema RAM (MMU, tabelle delle pagine ecc.). Quando un programma viene compilato, il compilatore converte un codice di programma in codice comprensibile dalla macchina e tra questo processo, gli spazi sono impostati sotto forma di indirizzi virtuali. Quando vengono elaborati dal processore, vengono nuovamente mappati nelle posizioni fisiche disponibili nella memoria, che si tratti di RAM o HDD, con l'aiuto della MMU.

PS.Non perdono l'uso del termine frame di pagina. Probabilmente ti rendi conto che è fonte di confusione. Attenersi a 'pagina' e 'cornice', due parole molto semplici con un significato chiaro.


Linux
  1. La differenza tra [[ $a ==Z* ]] e [ $a ==Z* ]?

  2. Differenza tra utente Sudo e utente root?

  3. Differenza tra Snat e Masquerade?

  4. La differenza tra Nss e Pam?

  5. Differenza tra GNUWin32 e cygwin

Differenza tra apt e apt-get spiegato

Differenza tra dimensione del blocco e dimensione del cluster?

Differenza tra tubazioni ed espansione dei comandi?

Differenza tra CLOCK_REALTIME e CLOCK_MONOTONIC?

Differenza tra $HOME e '~' (tilde)?

differenza tra netstat e ss in linux?