konspekt - Tartu Ülikool
konspekt - Tartu Ülikool
konspekt - Tartu Ülikool
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
T T tegevus U U tegevus<br />
ÇÔÒÌ ÖÒ× ØÓÒ<br />
ÐÒ Ê lukku<br />
Ï ÖØ ÐÒ ÇÔÒÌ ÖÒ× ØÓÒ<br />
ÐÒ Ê lukku<br />
Ï ÖØ ÐÒ <br />
ÐÒ Ê lukku<br />
ÐÒ Ê omab jagatud<br />
lukku<br />
Ï ÖØ ÐÒ oota U järgi<br />
Ï ÖØ ÐÒ oota T järgi<br />
Tabel 12.4: Näide tupiksituatsioonist<br />
Tupiksituatsioon on transaktsioonidegrupi olek, milles grupi iga liige ootab, et<br />
mõni teine antud transaktsioonide grupi liige vabastaks luku.<br />
Transaktsioonidevahelisi suhteid (ootamisi) saame esitada graafina, mille tippudeks<br />
on transaktsioonid ja kaarteks oota-suhted.<br />
T U<br />
(a) Transaktsioonide graaf<br />
hoiab<br />
T<br />
A<br />
ootab<br />
C<br />
B<br />
hoiab hoiab<br />
(b) Koos andmetega<br />
Joonis 12.1: Tabelis 12.4 toodud näite ootegraafid<br />
U<br />
hoiab<br />
Kui üks joonisel 12.1 näidatud transaktsioonidest katkestab töö, on tsükkel<br />
graafis lõhutud ja tupiksituatsioon lahendatud.<br />
Olgu meil transaktsioonidel T, U ja V jagatud lukk andmetel ning transaktsioonil<br />
W lukk andmetel . Transaktsioon V ootab lukustamist.<br />
Kui T ja W soovivad kirjutamislukku kasutamiseks, tekib tupik, kus T ootab<br />
U ja V järgi, V ootab W järgi ning W ootab T, U ja V järgi.<br />
123<br />
T<br />
V<br />
U<br />
(a) Transaktsioonide<br />
graaf<br />
W<br />
C<br />
hoiab<br />
hoiab<br />
hoiab<br />
V<br />
T<br />
U<br />
ootab<br />
(b) Koos andmetega<br />
Joonis 12.2: Kahe tsükliga ootegraafid<br />
W<br />
B<br />
hoiab<br />
Kuigi iga transaktsioon ootab korraga ühe luku järgi, on meil tegu kahe tsükliga:<br />
V W T VjaV W V. Kui nüüd V katkestab, siis katkevad<br />
mõlemad tsüklid.<br />
Tupikute vältimine Kindel meetod: transaktsioon lukustab kohe kõik kasutatavad<br />
ressursid. Paraku pole alati teada, milliseid andmeid kasutatakse.<br />
Kasutada võib ka lukustamist mingisettedefineeritud järjekorras. Oht enneaegseks<br />
lukustamiseks, tulemuseks paralleelsuse vähenemine.<br />
Tupikute tuvastamine Tupikute tuvastamiseks saame kasutada tsüklite otsimist<br />
ootegraafides. Kui tsükkel lon olemas ja seega tupiksituatsioon tuvastatud, tuleb<br />
valida transaktsioon, mida katkestada. Ootegraafi tuleb uuendada iga lukustamise<br />
ja lahtulukustamise operatsiooniga. Tsüklite tekkimist võib kontrollida iga kord,<br />
kui kaar lisatakse graafi, või harvem.<br />
üks võimalus tupikute vältimiseks on kasutada luku seadmisel maksimaalse<br />
ooteaja määramist. Kui ressurss on juba lukustatud, jäädakse ootama ressursi vabanemist.<br />
Kui ootamise algusest on möödunud etteantud aeg, katkestatakse ootamine<br />
ja transaktsioon kas katkestab oma töö või realiseerib alternatiivse tegevuse.<br />
Paralleelsuse suurendamine lukustamisskeemides<br />
Isegi, kui me piirdume ainult lukkudega konfliktsete lugemise ja kirjutamis operatsioonide<br />
vahel ja granulaarsus on võimalikult hea, on meil ikkagi võimalik veelgi<br />
paralleelsust tõsta. Vaatleme siinkohal kaht juhtu:<br />
124