[ LUGOS ] Memory

Andra` Tori andraz.tori1 na guest.arnes.si
Pon Avg 7 13:16:09 CEST 2000


y

On Mon, 7 Aug 2000, Metod Kozelj wrote:

> Howdy!
> 
> On Sun, 6 Aug 2000, Andra` Tori wrote:
> 
> > Kernel MORA nekaj ukrenit v trenutku ko zazene kmalloc in ne dobi zase
> > dovolj spomina. Za procese, ko zmanjka spomina je zelo jasno kaj se dogaja
> > in sploh ne vidim problema... malloc vrne NULL .. basta, zdaj je pa
> > problem procesa kaj bo storil, bo ponavljal malloc v zanki ali se bo
> > terminiral ali kaj tretjega...
> 
> Ne, ne. Nisi me prav razumel. Imas en proces, ki alocira 192M RAMa. In
> drugi proces, ki istocasno alocira 128M RAMa. Ampak kernel se vedno pusti
> oba procesa teci, ker de-facto alocira pomnilnik sele, ko ga proces
> uporabi (mislim, da po straneh). In tezava je, ce oba procesa istocasno
> potem tudi uporabita ves pomnilnik naenkrat. Takrat se malloc-a sploh ne
> klice in je stvar kernela, da razresi kolobocijo. In pri tem sploh ni
> nujno, da kernel klice kaksen kmalloc.


Aha, zanimivo (ceprav po mojem mnenju je to flawed obnasanje, vsaj kar se
tice userspacea.... mislim, ce mi je system reku da imam zdaj tistih
192mb potem pricakujem da ga bom imel...)
No sicer pa tako obnasanje podpira tudi linux, vendar ne wem ali dovoli da
se spomin predimenzionirano allocira.. beri: dejanska dodelitev potece
sele v trenutku uporabe, ampak verjetno kernel ne dovoli da bi bilo
kadarkoli niti alociranih vec kot toliko prostora kot je na voljo
 
> > Ce sem te prav razumel tvoj digital unix naredi posebno zadevscino in
> > stvar ustavi (blocking) v malloc klicu in caka da kdo drug sprosti ram?..
> > sej to se mi sploh ne zdi neumno, samo po moje spada to v userspace, saj
> > je vcasih nedopustno da bi malloc bil blockable...
> 
> Ne, digital unix enostavno ne zazene procesa, ki ima code+data+bss vecji,
> kot je prostega virtualnega pomnilnika. Pri ne cisto najnovejsih programih
> (beri: pisanih za F77) so vsa polja (matrike, ...) 'staticna', torej v
> data segmentu. Proces v tem primeru dobi enostavno SIGSEGV ali nekaj
> takega. Pri mallocu se v vsakem primeru obnasa kot linux, torej ti malloc
> vrne NULL.
> 

Aha...torej govoris samo o staticno alociranem pomnilniku (tu lezi
catch... jaz skoz govorim o pomnilniku ki ga proces dinamicno alocira med
izvajanjem)

Zdaj razumem kaj mislis ... :)

Lep Pozdrav
Andraz Tori




Dodatne informacije o seznamu Starilist