Re:[OSy] PyJaMaS - zaplaty - oprava cond.c a nova obsluha casovacu

Tomas Tuma tom.tuma at seznam.cz
Sun Nov 19 12:28:46 CET 2006


Ahoj vsem,

    Jirkuv email me inspiroval, abych jeste uvedl par informaci k semantice casovacu v kernelu Sirius.

Pisu to predevsim proto, ze jsme o casovacich mnohokrat diskutovali uvnitr tymu a pripadne mi,
ze to je jedna z mala veci, ktere zadani nedefinovalo moc presne a asi se v ruznych kernelech dost lisi.

V zasade jde o to, kdy obsluhu casovace detekujeme:
a) hned, jak vyprsi jeho cas
b) az prijde cas na kontrolu

A kdy ho spustime:
a) hned, jak detekujeme vyprseni casu
b) az prijde rada na vlakno, v jehoz kontextu ma casovac bezet

Sirius si nastavi vyvolani preruseni casovace tak, aby vzdy detekoval nejblizsi dalsi spusteny timer
presne v okamziku jeho vyprseni (varianta a) prvniho bodu).

Potom se rozhodne podle typu timeru, ktery vyprsel. Jedna se bud o
a) kernel timer, pak je obsluha vyvolana okamzite v kontextu kernelu
b) user timer, pak je vlaknu, kteremu casovac patri, zarazena obsluha timeru do fronty

Kernel timery se daji pouzit uvnitr kernelu napr. pro timeoutovani synchronizacnich primitiv,
kdy je akce jednoducha a chceme zabranit zbytecnym prodlevam. Vykonani handleru se
"vlozi" mezi casove useky pridelene jednotlivym vlaknum, odehrava se tedy v "zemi nikoho". Nikomu
neubira casove kvantum.

Obsluha takoveho casovace se vsak musi chovat slusne.

Na druhou stranu, user timery bezi na ukor casoveho kvanta vlakna, kteremu patri. Kernel takovy
casovac vlaknu "vnuti", jakmile na vlakno prijde rada a casovac uz mel byt proveden.
Jeden nas kolega spravne podotknul, ze timto implementujeme mozna uz trochu vyssi uroven
spravy casovacu - napr. nasi frontou timeru nahrazujeme posilani zprav vlaknum (ala Windows), kdy informace
o vyvolanem casovaci se proste jen vlozi do nejake fronty a vlakno samo se postara, aby si casovac osetrilo.

Jirko, jak resite situaci, kdyz vlaknu prijde pozadavek na obsluhu dalsiho casovace, kdyz nektery jeste bezi?
Resite to taky nejakou frontou, nebo to povazujete spis za ukol vyssich vrstev jadra?

Preju vsem pekny den
 Tom

> ------------ Původní zpráva ------------
> Od: Jiri Svoboda <jirik.svoboda at seznam.cz>
> Předmět: [OSy] PyJaMaS - zaplaty - oprava cond.c a nova obsluha casovacu
> Datum: 19.11.2006 11:37:05
> ----------------------------------------
> Zdravim vsechny,
> 
> Vsem, co si vybrali nas kernel PyJaMaS s potesenim posilam zaplaty odstranujici
> jeho nejvetsi nedostatky. Bud si jenom stahnete cond.c.diff ktery spravi chybku
> v cond.c (pouzijite "patch cond.c cond.c.diff"), nebo, jeste lepe si stahnete
> pyjamas-1.0_to_1.1.tar.gz, ktery udela totez a navic obsahuje zlepsenou obsluhu
> casovacu.
> 
> Casovace se nyni obsluhuji v kontextu vlakna, ktere je vytvorilo, cimz se
> zaruci, ze se casovace jednotlivych vlaken navzajem nezdrzuji. Pokud vlaknu
> jeste nebezi obsluha zadneho casovace, je obsluha casovace spustena nejpozdeji
> do dvou planovacich otocek (2x naplanovani vsech vlaken) - 1 otocka, nez se
> detekuje vyprseni, 2. otocka - nez se naplanuje vlakno.
> 
> Obe zaplaty, a mozna casem dalsi, tez najdete na webu (nadrazeny adresar
> vzhledem k nasi referencni dokumentaci) - URL zde neuvadim, pry sem zadne nemame
> davat ;)
> 
> Dalsi zaplaty (snad) budou, a pripominam, ze rad poradim s cimkoliv tykajicim se
> naseho jadra.
> 
> S pozdravem
>     Jirka
> 
> 



More information about the NSWI004 mailing list