Telefonino.net network
Win Base Win Adv Win XP Vista Windows 7 Registri Software Manuali Humor Hardware Recensioni Blog Download Foto
INDICE SEZIONE NEWS WEB NEWS SOFTWARE PUBBLICITA'
Memoria Virtuale e paginazione

Made by Gianluca Mattiuzzi

Principio di funzionamento della memoria virtuale

Un problema che ha sempre afflitto qualsiasi utente e programmatore della "notte dei tempi" è stata la quantità di memoria fisica.
Era molto frequente infatti che un programma fosse troppo grande per essere caricato in RAM e quindi, la soluzione generalmente adottata, era quella di dividerlo in parti più piccole dette overlay. L'esecuzione iniziava dunque dall'overlay 0 per poi proseguire con i successivi fino al termine dell'esecuzione. Gli overlay venivano continuamente caricati e scaricati dalla memoria. Inutile dire che l'onere della suddivisione del programma fosse a completo carico dello sviluppatore, il quale non trovava ne creativa ne appagante questa operazione, peraltro dispendiosa in termini di tempo.
Nel 1961 Fotheringham pensò di automatizzare il processo e delegare l'intero lavoro al personal computer.
L'idea di base è che la terna "codice compilato-dati-stack", che sono gli elementi che servono per far girare un programma, possa eccedere alla dimensione della memoria fisica (RAM) o che comunque possa eccedere allo spazio riservatogli. Spetta allora al Sistema Operativo il compito di tenere in RAM le parti di programma in uso e mantenere su disco le parti temporaneamente inutilizzate. Tale situazione porta dunque ad un inevitabile e continuo scambio (SWAP) di dati tra memoria di massa (Disco rigido) e memoria fisica (RAM). La tecnica di swapping funziona anche in sistemi multiprogrammati, come ad esempio Windows o Linux, nei quali vengono tenuti in memoria fisica mozziconi di programma in uso e in memoria di massa le parti momentaneamente inutilizzate.


Funzionamento di swap file e paginazione

Diventa ora chiaro che un sistema operativo che utilizzi memoria virtuale deve provvedere ad organizzare i dati in memoria di massa e memoria fisica al fine di caricare e far girare un programma che ecceda dalla pura memoria Hardware disponibile (RAM). Il più comune sistema di organizzazione dei dati è la paginazione. Sostanzialmente non si fa altro che suddividere logicamente la memoria RAM e la memoria di massa in pagine di grandezza fissa e affidare ad una unità di gestione di memoria (MMU) il compito di maneggiare le pagine. Le pagine in memoria di massa (Disco) verranno memorizzare nello swap file, un particolare file il cui formato dipende dal sistema operativo. La MMU è una unità implementata nel sistema operativo che ridefinisce la politica di gestione della memoria. Infatti ogni richiesta di accesso che fa un programma alla memoria, deve passare per la MMU. La richiesta di accesso può generare due comportamenti

1: la pagina che contiene l'informazione richiesta del programma è già in RAM
In questo caso la MMU non fa altro che elaborare l'indirizzo e dirottare la richiesta sul bus della memoria RAM.

2: la pagina non è in RAM
In questo secondo caso si verifica un fault di pagina. È in questo momento che avviene lo scambio (swap) di pagina tra memoria fisica (RAM) e memoria di massa (Disco). La pagina in cui è contenuta l'informazione richiesta dal programma verrà trasferita in RAM sostituendo la pagina meno utilizzata che verrà trasferita nello swap file. È evidente che l'operazione di scambio è dispendiosa in quanto coinvolge processore, disco rigido e RAM. Viene infatti occupata la CPU (processore), e lavora il disco, che è senz'altro la periferica di memorizzazione più lenta per motivi meccanici le tre principali coinvolte nel meccanismo.


Ottimizzazione della Memoria Virtuale

Ora che sono stati forniti dei piccoli chiarimenti sul funzionamento della memoria virtuale si può pensare a come ottimizzarla.
Le seguenti riflessioni sono per lo più indipendenti dal sistema operativo in cui si opera, ma prenderemo in analisi il sistema operativo Windows.


 

 In evidenza Registrare la TV da iPhone e iPad



Nel Web in WinTricks
Copyright © 1999-2012 Master New Media s.r.l. p.iva: 02947530784
COPYRIGHT . PRIVACY . REDAZIONE . STORIA . SUPPORTA
 

Warning: include(/mnt/host/www/wintricks/wintricks.it/www/bottom.php) [function.include]: failed to open stream: Permission denied in /mnt/host/www/wintricks/wintricks.it/www/faq/mem_virt1.html on line 172

Warning: include() [function.include]: Failed opening '/mnt/host/www/wintricks/wintricks.it/www/bottom.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /mnt/host/www/wintricks/wintricks.it/www/faq/mem_virt1.html on line 172