View Single Post
Old 29-02-2008, 14:10   #17
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Conner Guarda i messaggi
X gugoXX
lo spazio di indirizzamanto virtuale ( i 64 Tb che citavi) e la memoria virtuale suno 2 cose completamente diverse anche se i nomi possono trarre in inganno.
.
Non e' cosi' diverso come pensi, se leggi la seguente nota Microsoft
http://support.microsoft.com/kb/555223

Quote:
All processes (e.g. application executables) running under 32 bit Windows gets virtual memory addresses (a Virtual Address Space) going from 0 to 4,294,967,295 (2*32-1 = 4 GB), no matter how much RAM is actually installed on the computer.

In the default Windows OS configuration, 2 GB of this virtual address space are designated for each process’ private use and the other 2 GB are shared between all processes and the operating system.
Fin qui per dire quanto mi sembra di aver capito hai recepito anche tu, ovvero che lo spazio di indirizzamento virtuale e' alto, appunto 64TB,
ma se continui...

Quote:
RAM is a limited resource, whereas virtual memory is, for most practical purposes, unlimited. There can be a large number of processes each with its own 2 GB of private virtual address space. When the memory in use by all the existing processes exceeds the amount of RAM available, the operating system will move pages (4 KB pieces) of one or more virtual address spaces to the computer’s hard disk, thus freeing that RAM frame for other uses
E da qui io capisco che sono la stessa cosa. Soprattutto c'e' scritto unlimited.
E non ultimo si fa esplicitamente riferimento al file di scambio e alla paginazione su hard disk.

Riusciamo a fare chiarezza?
La domanda e': perche' mai un 386 non dovrebbe riuscire a gestire un file di scambio piu' grande di 4GB?
Una apparente risposta potrebbe essere che il 386 ha solo 32 linee di indirizzo, e quindi non avrebbe modo di chiedere al "mondo esterno" indirizzi che superano i 4GB.
Ma in realta' sta chiedendo al mondo esterno un aiuto apposta. L'unita' di paginazione emettera' un interrupt di page fault (INT 14) quando dovesse essere chiesta una pagina tra le 64TB virtuali non presente in memoria fisica. Come dati dell'interrupt 14, presumo nello stack,verranno messe le informazioni necessarie al sistema operativo per andare a recuperare proprio la pagina (da 4Kb, 4MB o 2MB a seconda della granularita' scelta) dal file di scambio.

Altrimenti, come ce lo spieghiamo questo schema, che fra l'altro contraddice quanto da te detto nel post precedente?

http://www.microsoft.com/windowsxp/6...cts/top10.mspx

Quote:
Address space 32-bit Windows
Virtual memory
4 GB

Paging file
16 terabytes


Paged pool
470 MB

Non-paged pool
256 MB

System cache
1 GB
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso