[OSy] interval casovace

Petr Tuma petr.tuma at dsrg.mff.cuni.cz
Sun Oct 28 10:03:10 CET 2007


Dobry den,

prominte, ale vase uvahy jsou dosti zasadne ohnute tak, aby podporovaly
vase argumenty. Dovolim si nektere z nich ilustrovat:

> no dobre, ale my nejsme na MIPS, my sme na MSIM. Abych mohl 
> mikrosekundovat, potreboval bych pocet tiku za mikrosekundu, coz 
> pomoci dtime udelam, ale - tech tiku moc nebude, protoze simulace
> trva dlouho (a co takovej wigum teprve ...) - druhak nemam FPU ->
> zaokrouhleni -> velka chyba

Pocet tiku za mikrosekundu urcite nebude na beznych pocitacich velke 
cislo, nebude ani prilis stabilni. To vsak vubec nebrani tomu udelat 
casovace, ktere pouzivaji jako jednotky pro timeout mikrosekundy. Jak uz 
tu kolega Decky drive uvedl, timeout nelze z principu chapat jako cas, 
kdy presne nastane volani casovace, ale cas, kdy nejdrive nastane volani 
casovace. Tedy i kdybyste argument v mikrosekundach vnitrne prevedl na 
tiky se zaokrouhlenim smerem nahoru, budou vase casovace stale v 
principu splnovat zadani.

Vedle toho je nutne podotknout, ze zejmena pokud jste si vedom toho, ze 
tiku za mikrosekundu bude malo a mate pouze celociselnou aritmetiku, 
postupovat stylem "TikuZaMikroSekundu = TikuZaSekundu DIV 1000000" a pak 
"TikuDoTimeoutu = MikrosekundDoTimeoutu * TikuZaMikrosekundu" je velmi 
hloupe reseni. Cely vypocet se da snadno upravit tak, aby nepresnost zde 
vznikajici celociselnym vyjadrenim konstanty TikuZaMikrosekundu byla 
odstranena.

> Pokud v jednom z predchozich mailu bylo, ze pro nase ucely by se 
> uznalo i hardcoded tick, tak by imho mohlo byt povoleno nedelat se s 
> mikrosekundama - imho to nema smysl na simulatoru.

Na simulatoru nema smysl snazit se dosahnout absolutni presnosti. Obecne 
vsak ma smysl nabadat vas k pouziti rozhrani, ktere ma rozumne 
parametry. Kdyz se napriklad podivate na Linux a jeho volani sleep, 
usleep a nanosleep, ktera jsou zcasti ilustraci toho, jak navrhari 
nejprve nestastne zvolili spatne jednotky a pak museli pridavat dalsi 
volani (podobne jako treba u time, ftime, gettimeofday).

I po technicke strance se da ve vasem reseni vymyslet spousta veci pro 
zlepseni presnosti, tedy rozhodne to neni tak, ze by v principu neslo 
naimplementovat nic rozumneho, co by vyhovovalo zadani.

Petr Tuma




More information about the NSWI004 mailing list