Re: gestione dinamica della memoria (algoritmo)
Von: Jack (jack4747@gmail.com) [Profil]
Datum: 10.07.2008 15:39
Message-ID: <12f48986-e9b0-4b9f-b319-a3e6c18a0ac4@2g2000hsn.googlegroups.com>
Newsgroup: it.comp.lang.c
Datum: 10.07.2008 15:39
Message-ID: <12f48986-e9b0-4b9f-b319-a3e6c18a0ac4@2g2000hsn.googlegroups.com>
Newsgroup: it.comp.lang.c
On Jul 10, 3:06 pm, vittorio.beninte...@googlemail.com wrote: > ma a questo punto la domanda è: "usando la funzione malloc, il SO > (linux in particolare) restituisce un blocco fisico di memoria oppure > un blocco di memoria virtuale?" un blocco di memoria virtuale. O meglio: ogni applicazione in linux ha uno spazio di memoria dedicato (contiguo, ad esempio dall'indirizzo 0x0000 all'indirizzo 0xFFFF). Questo spazio di memoria viene mappato dal kernel nella memoria virtuale del sistema (in pagine di 4k credo, le pagine non necessariamente sono contigue) . Le pagine di memoria virtuale vengono mappate all'occorrenza nella RAM. > mi spiego meglio... > > se ad esempio nella memoria fisica non esiste un blocco tanto grande, > ma di per se in memoria lo spazio ci sarebbe (anche se frammentato), > il sistema operativo consente comunque l'allocazione del blocco? Si. Il programma non vede in nessun caso la frammentazione della memoria fisica o virtuale(neanche la malloc, che chiede semplicemente all'OS della memoria). Al limite vede la frammentazione dello spazio di memoria dedicato (l'heap), ma non sono sicuro. Credo ci sia un limite alla quantita' memoria che puoi allocare, prima che il sistema ritorni un out of memory, ma sinceramente non so quant'e'. Ad esempio sono quasi certo che su un sistema a 32bit non si possono allocare piu' di 4GB di ram (perche' finiscono gli indirizzi), anche se probabilmente il limite e' piu' basso (normalemente una parte degli indirizzi servono a mappare registri e periferiche HW e quindi non possono essere usati dalla RAM. Tutto questo e' AFAIK. Potrei sbagliarmi o non essere completamente esatto su alcune cose. I dettagli inoltre dipendono dall'OS e anche dall'HW. Ciao Jack[ Auf dieses Posting antworten ]
