Divne chovani mallocu

Martin Macok macok na kocour.ms.mff.cuni.cz
Čtvrtek Říjen 28 22:38:16 CEST 1999


On 19 Oct 1999, Cejka Rudolf wrote:

> Martin Macok <macok na kocour.ms.mff.cuni.cz> wrote:
> >> Neni to trochu divne chovani? Kdyz nemuzu pamet naalokovat, tak se z
> >> toho vetsinou muzu nejak vzpamatovat, ale kdyz program najednou dostane
> >> signal, ze pamet, do ktere zrovna pristoupil, uz nedostane, tak s tim uz
> >> asi tezko neco nadela??
> 
> > Na druhou stranu to brutalne urychli praci s pameti, take je obvykle, ze
> 
> Proc? Co kdyz je naopak rychlejsi jednorazove namapovat stranky
> pameti, nez pri prvnim pristupu na kazdou stranku extra vyvolavat
> akci pro jeji namapovani?

Ja myslim, ze praxe ukazala, ze to neni rychlejsi a dalo by se najit mnoho
protiprikladu, kdy alokovat neni vyhodne delat najednou, programy se
proste obecne chovaji tak, ze je vyhodnejsi, aby operacni system byl ten,
kdo je chytry - to je zaklad myslenky virtualizace pameti ... Jiste
existovaly nejake puvodni jednoduche implementace memory managementu pod
Linuxem, ale casem byly nahrazeny lepsimi ...

> > programy zadaji o dost vetsi pamet, nez pak vyuziji, dale se takto
> 
> Nevim, proc by se mel operacni system zamerovat na spatne napsane
> programy, ktere si alokuji pamet a pak ji nepouziji (tj. neprovedou ani
> jeji inicializaci). Kdyz uz program neco alokuje, tak to urcite nekdy
> pouzije, i kdyz treba jen k jednomu zapisu cehokoli. Leda ze by chtel
> vyuzivat der podobne jako u souboru - jenze ani v pameti a ani v souboru
> se nejedna o prenositelnou zalezitost a jeji vyuzivani bude zcela
> urcite pusobit nekde problemy (stejne jako problemy s prenosem der
> v souborech).

Toto proste setri praci programatorovi ... samozrejme, pokud pisu nejaky
program, ktery musi byt extra rychly, tak zachazim setrne se vsemi
systemovymi prostredky, ale byva to dost pracne.

Pokud budu vzdy programovat tak, ze budu porad volat malloc a free, podle
toho, kolik zrovna aktualne pouzivam pameti (mnoho programu proste nemuze
predem rozhodnout, zda jim bude stacit 1MB, nebo 100MB), tak ten program
bude jeste pomalejsi, nez kdyz OS zajisti "dynamickou alokaci" sam (na
nizsi urovni). Programy takove proste jsou ...

> > alokovana pamet jednoduseji (rychleji) mapuje, swapuje .. =>
> 
> Tomu vubec nerozumim. Proc se jednoduseji (rychleji) mapuje?
> A hlavne - z ceho usuzujete, se ze rychleji swapuje? Prave
> pri swapovani se nejvice projevi divokost mapovani pametovych
> stranek + jejich swapovani. A kdyz dojde Linuxu pamet i se swapem, to
> je pak skutecne jedinecny zazitek pro vytrvale.

Mate pravdu, ze jsem napsal v podstate nesmysl :)
Mysleno to bylo spise takhle: kdyz se mapuje a swapuje takto alokovana
pamet, tak se obvykle mapuje/swapuje mnohem mene stranek ...

Vezmete to i z druhe strany ... proc by si autori MM zbytecne pridelavali
praci a psali ho sloziteji?

Momentalne jsem nejak chudy na konkretni priklady, ale napada me tento:
Napriklad pri spousteni binarnich souboru, se fyzicky nealokuje vubec nic,
proste hned dojde k vypadku a do pameti se natahuje kod z disku jen po
kouskach a jen ten, ktery je potreba ... diky tomu lze i ohromne binarni
soubory spoustet relativne rychle a s mensi pametovou narocnosti ...

-- 
< Martin Mačok    (e) martin.macok na underground.cz  <ISO-8859-2-compatible> 
 \ (h) http://kocour.ms.mff.cuni.cz/~macok/  (w) http://underground.cz/ /
   \\\\\            any OS that doesn't make me look              /////
     \\\  like a random mouse-clicking idiot is a Good Thing (c)  ///






Další informace o konferenci Linux