[OSy] Ochrana mallocu

Josef Reidinger josef.reidinger at seznam.cz
Sun Dec 30 17:42:18 CET 2007


Dobry den,
delame na prvnim rozsirenem zadani. A pri zajistovani primitivy jsme se
dostali do situace ze ktere si nevim rady co s ni. Problem je
nasledujici: Malloc je chranen synchronizacnim primitivem. Jeden proces
si zamkne malloc. Kdyz se pokusi jiny proces taky mallocovat, tak se
uspi. Ale tady je kamen urazu, protoze tento jiny proces musi byt pridan
do fronty uspanych procesu a k tomu se opet pouziva malloc, takze se
program dostane do nekonecne smycky (spis ale deathlock, kvuli
zamknutemu mutexu).
rekurzivni synchronizacni primitiva nejsou reseni tohoto problemu,
protoze kazde dalsi se akorat prida do seznamu cekajicich a tim porad
vola malloc.
Ochrana spinlockem, krome toho ze neni efektivni, tak taky vzhledem k
tomu ze spinlock nezarucuje ferovost pristupu casto skonci uvaznutim
nektereho z cekajicich procesoru (stava se to vetsi u poctu procesoru
pres patnact).
Dalsi reseni mne moc nenapadaji (krome nejakych krkolomnych). Neni
nejake jednodusi reseni ochrany mallocu?
JR




More information about the NSWI004 mailing list