[OSy] Read/write zamky

Petr Tuma petr.tuma at dsrg.mff.cuni.cz
Sun Dec 23 19:05:33 CET 2007


Dobry den,

> 1) ze jsou rekurzivni znamena, ze pokud si je nekdo zamkne napriklad pro
> zapis, a pak to udela znovu, tak mu to povoli mu je dvakrat zamknout,
> ale potom je musi dvakrat odemknout? (jen abych dobre pochopil co se tim
> mysli)

Ano.

> 2) kdyz sem rozmyslel ty zamky, tak nutne musi dojit k urcitemu obchodu
> v situaci kdy je zamek zamcen pro cteni a chce ho zamknout vlakno pro zapis.
> a) prestanu povolovat dalsi zapisy pro cteni (tedy budu jen cekat dokud
> neskonci vsichni ctenari) a pak zamknu pro zapis - tohle nevim jestli ma
> ocekavane chovani
> b) dal budu povolovat ctenare a az ve chvili kdy zadnej nebude, tak
> zamknu pro cteni - tady je zase problem hladoveni vlakna co chce
> zapisovat, protoze ctenari muzou stale pribyvat
> Zajimalo by mne tedy jake je ocekavane chovani techto zamku?

Ocekavane je rozumne chovani :-) vedle proste prednosti pisaru pred 
ctenari, kterou popisujete jako variantu A, muzete vymyslet jeste 
spoustu jinych smysluplnych variant lepsich nez vase varianta B.

Napriklad muzete mit konfigurovatelny max pocet predbehnuti pisare 
pozdejsimi ctenari.

Nebo muzete monitorovat prumerny pocet ctenaru a pisaru za jednotku casu 
a heuristicky uprednostnovat ctenare ci pisare podle toho, zda soucasna 
situace vykazuje nadprumerny pocet jednech nebo druhych.

Nebo jde treba pridat do konfigurace zamku default deadlines pro ctenare 
a pisare a delat deadline driven planovani nebo nejakou variantu na 
takove chovani.

Rozmyslete si, co dava smysl :-) jake jsou prakticke situace, ktere je 
dobre podporovat ? Co treba "potrebuji, aby vsechny zapisy byly ctenari 
videt co nejdrive", dava takovy pozadavek smysl ? Nebo "chci, aby bez 
ohledu na zatez systemu zadny klient zamku nehladovel", pripadne spojeno 
s "chci i pri velke zatezi systemu, kde mezi kazdymi dvema ctenari 
prijde nejaky pisar, zachovat rozumny stupen paralelismu" ?

Atd.

Petr Tuma





More information about the NSWI004 mailing list