[OSy] zadanie 3 - mutexy
Martin Decky
decky at dsrg.mff.cuni.cz
Thu Jan 3 18:28:14 CET 2008
> Hlavny je ten, ze predpokladame ze mutex_lock atd. by nemal byt len stub
> za nejaky syscall, ktory by volal priamo dane funkcie v jadre...
> Spravne? V opacnom pripade by to bolo vcelku trivialne :)
V drivejsich letech jsme implementace, kde vsechny operace nad
synchronizacnimi primitivy byly samostatne syscally, povazovali za
dostacujici. I tak to totiz neni uplne trivialni, napriklad je velmi
nevhodne, aby kernel daval uzivatelskemu procesu volne k dispozici
samotnou datovou strukturu synchronizacniho primitiva.
Elegantnejsi cesta (kterou ocenujeme lepsim bodovym ohodnocenim) je
implementovat synchronizacni primitiva v uzivatelskem prostoru prevodem
na kernelove prostredky pro planovani vlaken (povolovani/zakazovani
preempce, fronty cekajicich vlaken atd.). Pouziti spinlocku ma
opodstatneni az na viceprocesorovych systemech.
> Ale aj toto riesenie ma potom hacik - nie prilis lahke medziprocesove
> pouzitie (kedze "data" toho mutexu budu vo VMA toho jedneho procesu...)
> Nebude to vadit?
Zadani nehovori o zadnem sdileni pameti mezi uzivatelskymi procesy,
takze nevim, jak si presne predstavujete to meziprocesove pouziti a
k cemu by vlastne melo slouzit ..
> Este potom ostava problem (s cisto user mode mutexmi), ako poriesit
> casovace - kedze tie v zadani nie su, asi by sme si ich do neho museli
> pridat... Alebo to vyriesit cez nejake nove vlakno vyrabane pri zamykani
> cez mutex_lock_timeout - ale to mi pride dost nepekne riesenie :)
Vhodne pouziti kernelovych casovacu je v poradku. At uz je pouzijete
neprimo prostym prevodem uzivatelskych mutexu na kernelove, nebo nejakym
sofistikovanejsim zpusobem.
> Este jedna otazka - nevadi, ked thread_create() atd. su riesene ako
> stub-y za syscally, ze? Naprogramovat "dalsie" vlakna v user mode, to by
> asi dalo dalsich par dni prace... ;-(
User-managed vlakna skutecne nepozadujeme. Troufal bych si dokonce
tvrdit, ze pokud maji byt preemptivni, tak se bez nejake podpory v jadre
naprogramovat nedaji.
M.D.
More information about the NSWI004
mailing list