[OSy] Preruseni handleru timeru jinym timerem

Martin Decky decky at dsrg.mff.cuni.cz
Thu Oct 18 12:56:22 CEST 2007


> zajimalo by mne, jake je ocekavane chovani, pokud bezi jedna obsluzna
> rutina, ktera se zavolal po uplynuti casu usec v timeru, a jiny timer
> take vyprsi a mela by se volat jeho obsluzna rutina.

Opet silne zavisi na tom, jak si cely subsystem casovacu navrhnete.
Neexistuje zadne principielne nejlepsi reseni. Pokud mate pro obsluhy
casovacu dedikovane vlakno (nebo vlakna), tak proste sekvencne
zpracujete vsechny ty casovace, kterym jiz vyprsel cas.

Pokud spoustite obsluzne rutiny v kontextu vlakna, ktere jej
zaregistrovalo, muzete (ale nemusite) se pokusit o jejich reentrantni
spousteni. Osobne bych to prilis nedoporucoval, protoze se muzete dostat
do neprijemneho konfliktu s druhym typickym pozadavkem -- obsluzna
rutina nic nezamyka, protoze nesmi spat.

Obecne lze rici, ze casovace by mely garantovat, ze se obsluzna rutina
vyvola "nejdrive za n milisekund", nikoliv "prave za n milisekund".

> V pripade ze by musela ta dalsi pockat na obsluhu, tak da se nejak
> zjistit cas o ktery se toto volani zpozdilo

Tohle je trochu RTFM dotaz .. Cas si prece musite evidovat stejne, jinak
nemate sanci casovace vubec naimplementovat.


M.D.




More information about the NSWI004 mailing list