Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as Plain Text by PB152 ( 6 years ago )
Uváznutí je situace, kdy nějaká množina vláken nemůže pokračovat ve výpočtu, protože každé čeká na nějakou událost, která již nemůže nastat (například proto, že ji má vyvolat některé z čekajících vláken). Důvodem uváznutí je vždy čekání na zdroje: uvázlá vlákna čekají na zdroj, který vlastní některé jiné uvázlé vlákno.
Uvažujme případ, kdy dojde k uváznutí na zdrojích, které dokážeme detekovat. Je-li některý ze zdrojů, který se uváznutí účastní, odnímatelný (preemptible), lze situaci vyřešit dočasným odebráním tohoto zdroje jeho současnému vlastníkovi, čím se cyklus přeruší a výpočet může pokračovat. V opačném případě je jedinou možností restart celého systému.
Vypořádat se s uváznutím není vždy jednoduché, nicméně identifikovat, že k uváznutí došlo, nemusí být příliš složité. Zejména v případě, kdy je důvodem uváznutí čekání na zdroje, lze provést jednoduchou kontrolu vzájemného vyloučení a uváznutí tak odhalit: operační systém má informaci o tom, které vlákno vlastní které zdroje, a zda tyto zdroje podmínce vzájemného vyloučení podléhají.
Jednou z možností, jak uváznutí předejít, je stanovit na zdrojích globální lineární uspořádání, kdy vlákna mají dovoleno o zdroje žádat pouze v monotonním pořadí (např. zleva doprava). Jedná se o relativně schůdný kompromis, i když zahrnuje určité omezení pohodlí programátora: proces, který už nějaký zdroj vlastní, a zároveň chce zažádat o jiný zdroj (který nevyhovuje požadovanému pořadí), se může svého stávajícího zdroje dočasně zřeknout a vyžádat jej znovu, tentokrát již ve správném pořadí.
Revise this Paste
Parent: 107803
Children: 107805