Sono molto confuso con queste domande.Memoria virtuale?
Su un processore a 32 bit, ogni processo ha 4 GB di memoria virtuale. Tuttavia, se il processo evey ha uno spazio di 4 GB rispetto a quello che sarà ogni enorme quantità se 100 processi sono in esecuzione, questo è maggiore dell'area di swap. Qualcuno può spiegare questo per favore; Sono molto confuso.
In che modo il sistema operativo assegna la memoria a un processo? Supponiamo che un processo abbia
a = malloc(2)
. Chi assegnerà questa memoria al processo? Il sistema operativo fornirà questi 2 byte di memoria al processo.
(Accediamo a [2] genera l'errore di segmentazione).Dove rimangono le diverse parti del processo (Codice, Dati, Catasta, Mucchio) nella memoria principale o nella memoria secondaria.
prego di darmi qualche buon collegamento in modo che possa anche comprendere la memoria virtuale e tutto il suo meccanismo, come i link che ho trovato non spiegare completamente la memoria virtuale.
Dal momento che nessuno ha notato questo prima, va sottolineato che se si assegna un array a 2 byte, un [2] non farà parte di tale array, solo un [0] e un [1] saranno. –
Malloc darà la segmentazione ogni volta.? come malloc allocherà lo spazio dall'heap e quindi la dimensione dell'heap è normalmente molto grande, quindi perché non siamo in grado di accedere a [2]? dovrebbe dare qualche valore casuale. segmentazione significa che non siamo in grado di accedervi. correggimi se sbaglio – RATHI
Dipende davvero dalla tua macchina e dal compilatore. Ma la linea di fondo è che se non hai assegnato la memoria per il tuo programma da usare, non dovresti accedervi o cambiarla. –