Oppure

Loading
02/08/09 14:06
theprogrammer
Sono due concetti diversi, anche se espressi con medesimi termini.

Gli "indirizzi virtuali" di cui abbiamo parlato rappresentano lo "spazio di indirizzamento" del processo. Questi indirizzi sono convertiti in indirizzi fisici se corrispondono a dati/codice caricato in memoria in un determinato momento. Altrimenti il sistema carica da disco le porzioni di dati/codice necessari che prima sono stati swappati dalla memoria.

Con l'impostazione a 0 della memoria virtuale tu stai dicendo che il sistema deve solamente usare la memoria fisica e non il disco per lo swap ma il concetto di "indirizzo virtuale" convertito in "fisico" rimane inalterato.
aaa
02/08/09 14:10
puffin
i buchi tra dati ad esempio di tipo double e int che si vengono a creare, dipendono da come il compilatore alloca i dati?
aaa
02/08/09 14:16
theprogrammer
Di che "buchi" parli?
aaa
02/08/09 14:19
puffin
se compili ed esegui questo


#include <iostream>

using namespace std;

int main(){
    int a=0;
    double b;
    int  c;
    double   d;
    cout<<&a<<endl<<&b<<endl<<&c<<endl<<&d<<endl;
    system("pause");
    
    
    }





tra un int e double c'è un buco di 4 byte

OUTPUT

0x22ff44
0x22ff38
0x22ff34
0x22ff28
aaa
02/08/09 14:27
puffin
forse ho fatto male i conti,
Ho considerato gli indirizzi in ordine crescente invece di decrescente, puo essere?
xke se procedo in ordine crescente i buchi c sono, al contrario no
aaa
02/08/09 14:35
puffin
Allora da capo!!!

ho modificato leggermente il programma e inserito un intero, cosi facendo sono sicuro che sia in ordine crescente , quindi i buchi ci sono, guarda l'output

#include <iostream>

using namespace std;

int main(){
    int a=0;
    int k=0;
    double b;
    int  c;
    double   d;
    cout<<&a<<endl<<&k<<endl<<&b<<endl<<&c<<endl<<&d<<endl;
    system("pause");
    
    
    }




OUTPUT


0x22ff44  1  
0x22ff40  2(intero che ho inserito)
0x22ff38  3
0x22ff34  4
0x22ff28  5



Tra la 4 5 la 5 c'è ne uno da 4 byte
essedo un double 8 byte a partire da 22ff28 aggiungo 7=22ff2f
poi un buco da 22ff30 a 22ff33
e poi l'intero a riga 4 che parte da 22ff34
Ultima modifica effettuata da puffin 02/08/09 15:12
aaa
02/08/09 14:35
theprogrammer
Ah ... in questo senso ... sì, dipende dal compilatore e dal codice di prologo che viene inserito ...

Alcuni compilatori permettono di controllare con degli switch tale comportamento ma non tutti ...

Ma a che ti serve tutto cio' praticamente?
Ultima modifica effettuata da theprogrammer 02/08/09 14:36
aaa
02/08/09 14:42
puffin
La mia era solo curiosità
Lo so troppo pignolo, ma in quanto studente ne voglio sapere il più possibile.
Che posso dire...amo queste cose.
Ultima modifica effettuata da puffin 02/08/09 14:43
aaa