12.08.2013 Views

konspekt - Tartu Ülikool

konspekt - Tartu Ülikool

konspekt - Tartu Ülikool

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!