[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