[OSy] Timer a zablokovane vlakno
Martin Decky
decky at nenya.ms.mff.cuni.cz
Tue Oct 24 11:37:49 CEST 2006
Hezky den,
obecna odpoved na dotazy tohoto typu je uvedena primo v zadani:
"Pokud zadani nespecifikuje nejaky detail, je zavazne chovani, ktere
ocekavaji testy. Pokud testy dane chovani netestuji, zadani si podle
uvazeni dodefinujte a sve rozhodnuti zdokumentujte."
> Mame vlakno, ktere si vytvori timer s dobou expirace napr. 200ms. Pak zavola sem_down() na nejaky existujici semafor a zablokuje se napr. na nekolik vterin. Za 200ms po jeho zablokovani by se vsak mela vyvolat obsluzna rutina timeru. Vyvola se i presto, ze vlakno je zablokovane na semaforu? Nebo se ma pockat az se vlakno odblokuje ze semaforu a vyvolat obsluznou rutinu timeru az pak?
>
> Dalsi otazkou je, zda mame predpokladat, ze v ramci obsluzne funkce timeru muze vlakno volat funkce pri kterych se opet muze zablokovat (napr. thread_join(), sem_down(), getc(), ...) ?
Odpoved zalezi na tom, jak se rozhodnete timery implementovat, tedy zda
pobezi timer v kontextu vlakna, ktere ho zaregistrovalo (v tom pripade
neni asi vhodne, aby handler prerusoval cekani na kritickou sekci, ale
je principielne mozne, aby se sam zablokoval), nebo v kontextu idle
vlakna (kdy se vyvola handler skutecne asynchronne na puvodnim vlaknu,
ale blokovat by nemel).
M.D.
More information about the NSWI004
mailing list