malloc & free

Libor Chocholaty libor_ml1 na mts.cz
Pondělí Leden 30 15:21:52 CET 2006


Jiri Kosina wrote:

>On Mon, 30 Jan 2006, Dalibor Straka wrote:
>
>  
>
>>>tych 500 mega chces v jednom bloku? mozno nemas volnych 500 mega v kuse...
>>>      
>>>
>>Kernel by mel pridelit 500MB z virtualni pameti a jak si ji rozstrankuje
>>a rozhaze je interni zalezitost. 
>>    
>>
>
>To sice ano, ale pokud virtualni adresni prostor procesu je fragmentovany 
>tak, ze v nem neni zadny souvisly blok pozadovane velikosti, tak se neda 
>nic moc delat, i presto ze v souctu je volne pameti jeste dostatek.
>  
>
Mam pocit, ze proces od kernelu muze pamet jen dostat nikoli vratit. Na 
to by melo slouzit volani brk(2). Programu pak malloc dava pozadovanou 
pamet z pameti alokovane procesu. Kdyz si ji proces prilis rozseka 
(fragmentace) nezbyva nez aby malloc(3) pozadal kernel o dalsi kus 
pameti pomoci brk(2). Pokud pozadovany kusanec je k dispozici a 
nepresahne limit procesu, tak ji dostane, v ostatnich pripadech...
man brk
man malloc

Libor





Další informace o konferenci Linux