[OSy] Timer blokovani

Martin Decky decky at dsrg.mff.cuni.cz
Mon Oct 15 17:14:31 CEST 2007


>   Smi obsluzna rutina casovace (ORC) zblokovat ostatni naplanovane ulohy
>   (napr. si vyzada pismenko z klavesnice pomoci getc a ceka dokud
>   si uzivatel nevsimne, ze ma neco napsat) a nebo muzeme smele tyto
>   blokovaci funkce v ORC zakazat? (at uz konvenci, nebo primo nejakou
>   funkci "neblokuj" s tim ze pak treba getc bud vrati co je v bufferu
>   a nebo vrati EOF apod).

Uvazujete spravne, typicke osetreni casovace (ale i dalsich vyjimek a
preruseni) je skutecne takove, ze v nich neni prilis smysluplne provadet
blokujici operace, nekdy se dokonce kladou pozadavky, aby doba obsluhy
vyjimky byla shora casove omezena. Obsluhy vyjimek totiz vzdy bezi na
ukor casu urceneho pro planovani vlakna.

Obvykle staci tuto vec osetrit zavedenim konvence. Menit semantiku
funkci z blokujicich na neblokujici podle toho, v jakem kontextu bezi,
uz prilis obvykle nebyva, ale je mozne pri spousteni funkce, ktera muze
blokovat, z kontextu, ktery se zablokovat nema, vypsat nejakou chybovou
hlasku.

>   Pokud smi casovac zblokovat, bylo by to sice pouzitelne na
>   konstrukci viru typu "dej mi susenku" (viz historie viru) ale pro
>   prakticke pouziti nam to neprijde uzitecne...

Nejen, ze to je neprakticke, ale taky bychom se dostali do trochu jine
kategorie "operacnich systemu". Meli byste vytvorit robustni a moderni
preemptivni kernel, ne task switcher pro DOS ;)

>   S tim souvisi otazka, jake je planovane typicke pouziti
>   casovace pokud pomineme planovac.

Krome preemptivniho planovani se casovac pouziva pro evidenci casu (wall
time), spousteni uzivatelskych timeru (ktere se zase staraji napr. o
probouzeni vlaken, ktera jsou zablokovana na sychronizacnich primitivech
s nejakym timeoutem) apod.

>   Dalsi vec je, v jakem kontextu ma jet ORC, v kontextu procesu, ktery
>   ji vytvoril? Tzn na jakou pamet ma sahat, jake ma najit registry
>   procesoru apod.

Aha, takze tady uz nemluvite o obecne obsluze vyjimky casovace, ale o
uzivatelskych timerech .. Timer muze bezet jak v kontextu vlakna, ktere
jej zaregistrovalo (a na ukor jeho planovaciho casu), tak v samostatnem
vlakne, ktere je dedikovano pro obsluhu timeru.

Obe varianty jsou mozne a davaji dobry smysl, takze se pro nejakou
rozhodnete a vse zdokumentujte.


M.D.




More information about the NSWI004 mailing list