Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com
Answertopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

 

Linuxtopia - Red Hat Enterprise Introduzione al System Administration - Memoria virtuale: Dettagli

4.4. Memoria virtuale: Dettagli

Introduciamo prima un nuovo concetto: Lo spazio dell'indirizzo virtuale. Tale spazio rappresenta la quantit� massima di spazio per l'indirizzo disponibile per una applicazione. Lo spazio dell'indirizzo virtuale varia a seconda dell'architettura del sistema e del sistema operativo. Esso dipande dall'architettura perch� � quest'ultima che definisce il numero di bit disponibili per l'indirizzo. Dipende anche dal sistema operativo e a seconda del modo con il quale � stato implementato il sistema operativo stesso potrebbe apportare dei limiti aggiuntivi, superiori o inferiori, a quelli imposti dall'architettura.

La parola "virtuale" nello spazio dell'indirizzo virtuale, st� ad indicare il numero totale di luoghi della memoria indirizzabili in modo unico disponibili per una applicazione, e non la quantit� di memoria fisica installata nel sistema o dedicata all'applicazione.

Nel caso del nostro esempio, lo spazio per l'indirizzo virtuale � di 15000 byte.

Per implementare la memoria virtuale � necessario, per il sistema del computer, avere un hardware speciale per la gestione della memoria. Questo hardware � spesso conosciuto come MMU (Memory Management Unit). Senza di esso, quando la CPU accede alla RAM, le posizioni della RAM non cambiano mai — l'indirizzo della memoria 123 rappresenta sempre la stessa posizione fisica all'interno della RAM.

Tuttavia, con una MMU, gli indirizzi della memoria attraversano una fase di traslazione prima dell'accesso alla memoria. Ci� significa che l'indirizzo 123 della memoria, potrebbe essere direzionato verso l'indirizzo fisico 82043 prima, e verso l'indirizzo privato 20468 poi, l'overhead nel seguire in modo individuale la traslazione virtuale e fisica per bilioni di byte di memoria, potrebbe essere troppo grande. Invece, l'MMU divide la RAM in pagine — sezioni contigue di memoria di misura predeterminata gestite dalla MMU come entit� singole.

Mantenere le informazioni di queste pagine e delle traslazioni dell'indirizzo, potrebbe sembrare una fase non necessaria e confusionaria. Tuttavia risulta molto importante implementare la memoria virtuale. Per questo motivo vi consigliamo di tenere in giusta considerazione questo punto.

Prendendo in considerazione la nostra ipotetica applicazione con uno spazio dell'indirizzo virtuale di 15000 byte, considerate che la prima istruzione dell'applicazione acceda i dati conservati nell'indirizzo 12374. Tuttavia, prendete in considerazione anche che il nostro computer possiede solo 12288 byte di RAM fisica. Cosa succede se la CPU cerca di accedere l'indirizzo 12374?

Quello che succede viene chiamato page fault.

4.4.1. Page Fault

Un page fault rappresenta una sequenza di eventi che si presentano quando un programma cerca di accedere i dati (o codice) presenti nel proprio spazio dell'indirizzo, ma che gli stessi non si trovano nella RAM del sistema. Il sistema operativo deve gestire le page fault facendo risiedere la memoria dei dati in questione, permettendo al programma di continuare le sue funzioni come se il page fault non fosse mai accaduto.

Nel caso della nostra ipotetica applicazione, la CPU presenta prima l'indirizzo desiderato (12374) alla MMU. Tuttavia, la MMU non ha alcuna transazione per questo indirizzo. Cos� interrompe la CPU e causa l'esecuzione del software, conosciuto come gestore della page fault. Tale gestore determina cosa si deve fare per risolvere tale problema. E cio�:

  • Trova sul disco dove risiede la pagina desiderata e la legge (questo � il caso se il page fault avviene per una pagina del codice)

  • Determina se la pagina desiderata � gi� nella RAM (ma non � assegnata al processo corrente), e riconfigura la MMU in modo da poterlo indicare

  • Indica una pagina speciale che contiene solo degli zeri, e assegna una nuova pagina solo se il processo cerca di scrivere sulla pagina speciale (tale processo viene chiamato copy on write, ed � spesso usato per pagine che non contengono alcun dato inizializzato)

  • Ottiene la pagina desiderata da un altro luogo (tale procedura viene affrontata in dettaglio pi� in avanti)

Mentre le prime tre fasi sono relativamente semplici, l'ultima non lo � affatto. Per questo motivo � necessario affrontare argomenti aggiuntivi.

4.4.2. Il working set

Il gruppo di pagine della memoria fisica attualmente dedicato ad un processo specifico � chiamato working set per il processo stesso. Il numero di pagine nel working set pu� aumentare o diminuire, a seconda della disponibilit� delle pagine stesse.

Il working set aumenta come un processo page fault. Al contrario esso diminuisce con la diminuzione delle pagine disponibili. Per evitare la consumazione completa della memoria, le pagine devono essere rimosse dai working set del processo e trasformate in pagine disponibili per un loro eventuale utilizzo. Il sistema operativo diminuisce i working set del processo nei seguenti modi:

  • Scrivendo su pagine modificate in un'area dedicata, su di un dispositivo di tipo mass storage (generalmente conosciuti come spazio di swapping o paging)

  • Contrassegnando pagine non modificate come libere (non vi � alcuna necessit� di scrivere queste pagine su disco in quanto queste non sono state modificate)

Per determinare i working set appropriati per tutti i processi, il sistema operativo deve possedere tutte le informazioni sull'utilizzo per tutte le pagine. In questo modo, il sistema operativo determina le pagine usate in modo attivo (risiedendo sempre nella memoria) e quelle non utilizzate (e quindi da rimuovere dalla memoria.) In molti casi, una sorta di algoritmo non usato di recente, determina le pagine che possono essere rimosse dai working set dei processi.

4.4.3. Swapping

Anche se lo swapping (scrittura delle pagine modificate sullo spazio swap del sistema) rappresenta una operazione normale della funzione di un sistema, � possibile che si verifichi uno swapping accessivo. Il motivo per il quale bisogna fare attenzione ad uno swapping eccessivo, � la possibilit� che si possa verificare, in modo costante, la seguente situazione:

  • Vengono scambiate le pagine di un processo

  • Il processo diventa eseguibile e cerca di accedere una pagina precedentemente scambiata

  • La pagina � erroneamente rientrata nella memoria (forzando probabilmente le pagine di un altro processo ad essere scambiata)

  • Dopo qualche istante, la pagina viene scambiata nuovamente

Se la sequenza di questi eventi � molto diffusa ecco che si verifica il thrashing, il quale indica una insufficienza di RAM per il carico di lavoro attuale. Il Thrashing � estremamente dannoso per le prestazioni del sistema, in quanto la CPU ed i carichi I/O che possono essere generati, possono avere il sopravvento sul carico imposto dal reale funzionamento del sistema. In casi estremi, il sistema potrebbe non funzionare utilmente, spendendo tutte le sue risorse spostando le pagine da e per la memoria.

 
 
  Published under the terms of the GNU General Public License Design by Interspire