[OSy] Nekolik dotazu

Martin Decky decky at nenya.ms.mff.cuni.cz
Thu Nov 2 15:30:21 CET 2006


Hezky den,

> 1) Pripominka ohledne assignment testu a DEBUG_MUTEX symbolu.
> 
> Nasel jsem maly technicky problem v testu mutex5. Ve zdrojaku test.c tohoto testu se definuje symbol DEBUG_MUTEX s hodnotou 1. 
> To ma zajistit, ze nase implementace mutexu bude hlidat, aby mutex odemknulo pouze to vlakno, ktere ho zamknulo. Jinak se vypise panic.
> 
> Problem je v tom, ze definice tohoto symbolu musi byt viditelna pro zdrojovy soubor s implementaci mutexu. To ale zrejme nelze 
> zajistit jinak, nez natvrdo specialne pro tento test opravit nasi implementaci mutexu tim, ze do ni rucne vlozime 
> #define DEBUG_MUTEX 1 nebo vlozime pomoci #include nejaky specialni hlavickovy soubor, kde tato definice bude napsana. 
> To mi pripadne jako celkem neelegantni, nezapada to do automatizovaneho prekladu a spousteni vsech assignment testu a 
> chtel bych se proto ostatnich zeptat, zda nekdo nema nejaky lepsi navrh.

Lepsi navrh je nemenit implementaci na zaklade DEBUG_MUTEX, ale zmenit 
jen sadu funkci, ktera se bude volat. To lze udelat v hlavickovem souboru.

> 2) Dotaz ohledne delky testu.
> 
> Chtel bych se zeptat, jak dlouho ma u funkcniho kernelu trvat assignment test condvar1. Tento test vytvori 130 vlaken mezi nimiz jsou 
> producenti a konzumenti, kteri zamykaji a odemykaji mutexy a pouzivaji navic jeste podminkove promenne. Ani po 2 hodinach
> behu tento test na nasem kernelu neskoncil. Ale pro mensi pocet (napr. 52) vlaken probehne test behem par sekund a uspesne 
> skonci. Takze ted nevime, zda mame hledat chybu v nasem kernelu nebo vyzkouset cekat dele nez ty zminene 2 hodiny na 
> dobehnuti testu pro 130 vlaken.

Test i pri 130 vlaknech pobezi radove stejnou dobu jako pri tech 52 
vlaknech (na beznem dnesnim hardwaru ne dele nez desitky sekund), takze 
se nejspis jedna o problem ve Vasem kernelu.

> 3) Dotaz ohledne assignment testu timer1.
> 
> Z tohoto testu nelze poznat, jaky je mysleny vztah mezi casovaci (timery) a uspanym vlaknem. Nase implementace napriklad funguje
> tak, ze je-li vlakno zablokovane na synch. primitivu nebo je uspane pomoci thread_sleep/thread_usleep, pak se vyvolani casovacu,
> ktere si vlakno vytvorilo, odklada az do te doby, nez je opet odblokovano resp. probuzeno. Takze bych se chtel zeptat, jestli takove 
> chovani vyhovuje assignment testu timer1.

Tento problem je dost podobny tomu, ktery jsme zde jiz jednou 
diskutovali, viz 
http://nenya.ms.mff.cuni.cz/pipermail/osy/2006-October/000307.html

Osobne nemam na vec vyhraneny nazor, takze semantiku timeru, kterou jste 
implementovali, zdokumentujte.

> 4) Dotaz ohledne podivneho chovani gcc pro MIPS pri kompilaci funkce s promennym poctem parametru.
> 
> Resenim je samozrejme naalokovat si na zasobniku o 12 bytu vice, ale to neni systemove opatreni. Proto 
> by me zajimalo, zda je mozne toto podivne chovani gcc prekladace v prepinacich nejak nastavit nebo nejak jinak
> ovlivnit. Zadny odpovidajici prepinac jsem zatim nenasel.

Ten pozadovany prepinac je -fno-optimize-sibling-calls. Myslim si ale, 
ze nez menit chovani prekladace je lepsi precist si presnou specifikaci 
ABI pro volani funkci s promennym poctem parametru a podle toho pozmenit 
Vase inicialni nastaveni zasobniku.


M.D.



More information about the NSWI004 mailing list