lab15 tugjrel

37
Түгжрэл Хичээл №7

Upload: haliuka-ganbold

Post on 26-Jul-2015

468 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Lab15 tugjrel

Түгжрэл

Хичээл №7

Page 2: Lab15 tugjrel

Түгжрэл

Хоорондоо харилцаж буй буюу нөөцийн төлөө хоорондоо өрсөлдөж буй процессууд цаашид ажиллах боломжгүй болох үзэгдлийг түгжрэл гэж нэрлэдэг.

Зайлсхийх, шийдэх төгс арга байдаггүйХоёр буюу түүнээс дээш тооны

процессод тохиолдно.

Page 3: Lab15 tugjrel

a) Òүãæðýë үүñýõ ìàãàäëàëòàé

á) Òүãæðýë үүññýí

Çóðàã 6.1 Òүãæðýëèéí æèøýý

Page 4: Lab15 tugjrel

Түгжрэлийн жишээ

. . .À Ïðîöåññ

. . .

. . .80Êá ñàíàõ îé õүñýõ

60Êá ñàíàõ îé õүñýõ

Á Ïðîöåññ

. . .70Êá ñàíàõ îé õүñýõ

80Êá ñàíàõ îé õүñýõ

Àëãîðèòì 6.1 Òүãæðýë үүñ÷ áîëîõ ïðîöåññóóä

Page 5: Lab15 tugjrel

Түгжрэлийн шалтгаан

Солбицол (mutual exclusion) Нөөцөд зөвхөн нэг зэрэг зөвхөн нэг л

процесс хандаж, ашиглаж байж болно.

Эзэмшээд хүлээх (Hold and Wait) Ямар нэгэн процесс нөөцийг эзэмшээд

бусад процессод нөөц хуваарилахыг хүлээж байж болно.

Page 6: Lab15 tugjrel

Түгжрэлийн шалтгаанХүчээр суллахгүй байх (No Preemption)

Процессын эзэмшиж буй нөөцийг нь хүчээр чөлөөлж болохгүй.

Эдгээр 3 нөхцөл нь түгжрэл үүсгэх магадлалтай ч ямагт түгжрэл үүсгэнэ гэж үзэж болохгүй. Харин дөрөв дэх нөхцөл үүссэнээр системд түгжрэл үүсдэг.

Тойрон хүлээх (Circular wait) Бусад процессод шаардлагатай байгаа нөөцийг эзэмшсэн

процессуудын битүү гинжин хэлхээ олдож байгаа үед тойрон хүлээлт үүссэн байна гэж үздэг. Энгийнээр тайлбарлавал А процссод шаардлагатай нөөцийг Б процесс эзэмшсэн, Б процессод шаардлагатай нөөцийг А процесс эзэмшсэн байхад тойрон хүлээлт үүсдэг

Page 7: Lab15 tugjrel

Түгжрэлийн шалтгаанТойрон хүлээх (Circular wait)

Page 8: Lab15 tugjrel

Түгжрэл үүсэх магадлалтай

Солбицол (mutual exclusion) Эзэмшээд хүлээх (Hold and Wait) Хүчээр суллахгүй байх (No

Preemption)

Page 9: Lab15 tugjrel

Түгжрэл үүссэн

Солбицол (mutual exclusion) Эзэмшээд хүлээх (Hold and Wait) Хүчээр суллахгүй байх (No

Preemption) Тойрон хүлээх (Circular wait)

Page 10: Lab15 tugjrel

Түгжрэлээс сэргийилэх

Солбицол Солбицлын асуудлыг бүрэн арилгах

боломжгүй. Зарим тохиолдолд солбицлыг арилгаж болдог ч ерөнхий тохиолдолд энэ нь боломжгүй. Иймээс ч солбицлын асуудлыг хэрхэн үүсгэхгүй байхыг бус харин энэ асуудлыг оновчтойгоор шийдэх арга хайх тал дээр судлаачид ажилладаг.

Page 11: Lab15 tugjrel

Түгжрэлээс сэргийилэх

Эзэмшээд хүлээх Энэ асуудлыг процесс өөртөө шаардлагатай

бүх нөөцийг нэг дор шаарддаг байхаар зохион байгуулснаар шийдэж болно.

Хүчээр суллахгүй байх Процессын эзэмшиж буй нөөцийг

төлөвлөлтийн ямар нэгэн шалгуур ашиглан үйлдлийн систем суллах боломжтой байснаар энэ нөхцөл байдлыг арилгаж болно

Page 12: Lab15 tugjrel

Түгжрэлээс сэргийилэх

Тойрон хүлээх Нөөцийг хүсэх шугаман дараалал

тогтоосноор тойрон хүлээх асуудлыг шийдэж болно.

Page 13: Lab15 tugjrel

Түгжрэлээс зайлсхийх

Процессыг үүсгэснээр түгжрэлд орох магадлалтай эсэхийг ҮСистемийн үйл ажиллагааны явцад динамикаар шалгана

Процессын нөөцийн хүсэлтийг урьдчилан мэдэж байх хэрэгтэй

Page 14: Lab15 tugjrel

Түгжрэлээс зайлсхийх

Процесс үүссэнээр систем түгжрэлд орох магадлалтай бол процессыг үүсгэх хүсэлтийг няцаах

Нөөц хуваарилах хүсэлтийг биелүүлснээр систем түгжрэлд орох магадлалтай бол нөөцийг хуваарилахгүй байх

Page 15: Lab15 tugjrel

Нөөц хуваарилах хүсэлтийг няцаах

Банкирын алгоритм гэж нэрлэдэгСистемийн төлөв – системл тухайн

мөчид нөөц хуваарилсан байдалАюулгүй төлөв - Түгжрэлд оролгүйгээр

бүх процессууд ажиллаж дуусах ядаж нэг боломж байх төлвийг аюулгүй төлөв гэе.

Аюултай төлөв - Аюулгүй биш төлөв

Page 16: Lab15 tugjrel

Нөөцийн хуваарилалтын граф

R вектор - Системд нөөцийн төрөл бүр нийт ямар хэмжээтэй байгааг (байсныг) заана

V вектор - Системд нөөцийн төрөл бүр яг одоо ямар хэмжээтэй байгааг заана.

С матриц - Процесс бүр ямар хэмжээний нөөц хүссэнийг илэрхийлнэ.

А матриц - Процесс бүр яг одоо ямар хэмжээний нөөц эзэмшиж байгааг илэрхийлнэ.

Page 17: Lab15 tugjrel

Анхны төлөв

Ñ ìàòðèö À ìàòðèö Ñ-À

R âåêòîð V âåêòîð

Çóðàã 6.3à Íөөö õóâààðèëñàí áàéäàë (àíõíû òөëөâ)

Page 18: Lab15 tugjrel

Р2 процесс ажиллаж дууссан

Ñ ìàòðèö À ìàòðèö Ñ-À

R âåêòîð V âåêòîð

Ð2 ïðîöåññ àæèëëàæ äóóññàí

Çóðàã 6.3á Ð2 ïðîöåññ àæèëëàæ äóóññàí áàéíà

Page 19: Lab15 tugjrel

Р1 процесс ажиллаж дууссан

Ñ ìàòðèö À ìàòðèö Ñ-À

R âåêòîð V âåêòîð

Ð1 ïðîöåññ àæèëëàæ äóóññàí

Çóðàã 6.3â Ð1 ïðîöåññ àæèëëàæ äóóññàí áàéíà

Page 20: Lab15 tugjrel

Р3 процесс ажиллаж дууссан

Ñ ìàòðèö À ìàòðèö Ñ-À

R âåêòîð V âåêòîð

Ð3 ïðîöåññ àæèëëàæ äóóññàí

Çóðàã 6.3ã Ð3 ïðîöåññ àæèëëàæ äóóññàí áàéíà

Page 21: Lab15 tugjrel

Аюулгүй төлөв

Р2, Р1, Р3 процессууд ажиллаж дууссаны дараа Р4 процесс ажиллаж дуусна.

Зураг 6.3а –д байгаа төлөв аюулгүй төлөв юм.

Page 22: Lab15 tugjrel

Анхны төлөв

Ñ ìàòðèö À ìàòðèö Ñ-À

R âåêòîð V âåêòîð

àíõíû òөëөâÇóðàã 6.4à Íөөö õóâààðèëñàí áàéäàë (àíõíû òөëөâ)

Page 23: Lab15 tugjrel

Р1 процессод нөөцийг хуваарилсан

Ñ ìàòðèö À ìàòðèö Ñ-À

R âåêòîð V âåêòîð

Ð1 ïðîöåññûí õүñýëòèéã áèåëүүëñýí áàéíàÇóðàã 6.4á Ð1 ïðîöåññûí õүñýëòèéã áèåëүүëñýí áàéíà

Page 24: Lab15 tugjrel

Төлвүүдийн хоорондын холбоо, хамаарал

àþóëãүé òөëөâ

àþóëòàé òөëөâ

òүãæðýëèéí

òөëөâ

Page 25: Lab15 tugjrel

Түгжрэлээс зайлсхийх

Процесс өөрийн эзэмших шаардлагатай нөөцийг байнга урьдчилан мэдэгдэж чадахгүй. Жишээ : Санах ойг динамикаар хүсэх тохиолдол байнга гардаг.

Хугацааны тодорхой интервалд л ажилладаг буюу өндөр хурд шаарддаг (жишээ : бодит хугацааны үйлдлийн систем) үйлдлийн системд банкирын алгоритмыг ажиллуулах боломжгүй.

Page 26: Lab15 tugjrel

Түгжрэлийг илрүүлэх

Q ìàòðèö À ìàòðèö

R âåêòîð

V âåêòîð

Çóðàã 6.6 Òүãæðýëèéã èëðүүëýõ àëãîðèòìàä àøèãëàõ өãөãäëèéí áүòöүүä

Page 27: Lab15 tugjrel

Түгжрэлийг илрүүлэх алгоритм

1. А матрицад, харгалзах мөр нь хоосон байх процессуудыг тэмдэглэ.

2. V вектортой анхны утга нь тэнцүү байх түр зуурын W вектор авна.

3. Өмнө нь тэмдэглэгдээгүй i дугаартай процессыг олж Q матрицад түүнд харгалзах i-р мөр нь QikWk (k=1,m) байх i-р мөрийг олно. Хэрэв шаардлага хангах мөр олдохгүй бол алгоритмыг төгсгөнө.

4. Хэрэв шаардлага хангах мөр 3-р алхамд олдсон бол i-р процессыг тэмдэглээд уг процессод оноосон нөөцийг сулласан гэж үз. (Wk=Wk+Aik, i=1,k). 3-р алхам руу шилж.

Page 28: Lab15 tugjrel

Түгжрэлийг илрүүлэх алгоритм

Алгоритм ажиллаж дуусахад тэмдэглэгдээгүй процессууд нь түгжрэлд орсон процесс юм.

Алгоритм нь нөөц хуваарилаагүй процесс түгжрэлд ороогүй гэж үзнэ.

Ямар нэг дарааллаар процессуудын нөөц хүсэх хүсэлтийг биелүүлсэн гэж үзээд, эцэст нь түгжрэлд орсон процессуудыг гарган ирдэг.

Page 29: Lab15 tugjrel

Алгоритмын жишээ

1. Р4 процессыг тэмдэглэ (Р4 процесс нь ямар ч нөөц эзэмшээгүй байна).

2. W=(0, 0, 0, 0, 1) утгатайгаар авна.3. Р3 процесс нь QW шаардлагыг

хангаж байгаа тул W=W+(0, 0, 0, 1, 0)=(0, 0, 0, 1, 1) болох ба Р3 процессыг тэмдэглэнэ.

4. Алгоритмыг төгсгө.

Page 30: Lab15 tugjrel

Түгжрэлээс гарах

Бүх түгжрэлд орсон процессуудыг таслах Процессуудын үйл ажиллагааг хугацааны

тодорхой давтамжтайгаар сануулж явах хэрэгтэй (сануулахад байсан төлвийг буцалтын цэг гэж нэрлэе) ба түгжрэлд орсон процессуудыг буцалтын цэгээс нь эхлэн ажиллуулах

Page 31: Lab15 tugjrel

Түгжрэлээс гарах

Түгжрэлд орсон процессуудыг ээлж дараалан, түгжрэлгүй болтол нь таслах. Энэ үед яг аль процессыг таслах нь сонголтын асуудалтай юм. Процессыг таслах болгонд түгжрэлийг илрүүлэх алгоритмыг ажиллуулж байх хэрэгтэй.

Нөөцүүдийг ээлж дараалан, түгжрэлгүй болтол нь суллах.

Page 32: Lab15 tugjrel

Түгжрэлээс гарах

3 –р аргад аль процессыг таслахыг шийдэх аргууд Процессорыг хамгийн бага хугацааанд

эзэмшсэн Гаралтын мэдээллийг хамгийн бага гаргасан Ажиллаж дуусахад хамгийн их хугацаа

үлдсэн Хамгийн бага нөөц эзэмшиж байгаа Хамгийн бага зэрэглэлтэй

Page 33: Lab15 tugjrel

Үл анхаарах

Орчин үеийн үйлдлийн системд түгжрэл үүсэх магадлал улам бүр багассаар л байна.

Тэмээн хяруулын алгоритм (ostrich algorithm) Түгжрэл үүсэх асуудлыг үл анхаарах Энд тэмээн хяруул нь элсэнд толгойгоо нуудагтай

адилаар түгжрэлийн асуудал үүсээгүй буюу огт ийм асуудал байхгүй мэтээр үйлдлийн системээ зохион бүтээдэг.

Page 34: Lab15 tugjrel

Хооллож буй философичдийн бодлого

5 философич хамт амьдардаг. Тэд амьдралынхаа турш бодох, идэх ажлыг л хийдэг ба хоолны ширээ нь тойрог хэлбэртэй. Ширээний голд том саванд гоймон (философичдод хамгийн тохирсон хоол гэж үзсэн) хийсэн ба 5 савхыг (хос савх бус нэг л ширхэг савх) ширээ тойруулан тавьсан

Page 35: Lab15 tugjrel

Хооллож буй философичдийн бодлого

Философич өлсвөл ширээ тойруулан тавьсан 5 суудлын нэгэнд суун (мэдээж уг суудал дээр өөр хүн сууж байгаа бол давхарлан сууж болохгүй) өөрийн баруун ба зүүн талд байгаа савхыг эхлээд зүүн талд байгаа савхаа дараа нь баруун талд байгаа савхаа аван (нэг зэрэг хоёр савх авч болохгүй) ширээний голд байгаа гоймонгоос иддэг.

Page 36: Lab15 tugjrel

Хооллож буй философичдийн бодлого

Хэрэв өөрийнх нь авах ёстой савхыг өөр хэн нэгэн авсан бол тэр савх сулрахыг хүлээнэ. Аль ч философич хоёр савхтай байж л хоол идэх боломжтой болдог. Бодлогын нөхцөлд өгсөн шаардлагыг хангахуйцаар философичид хоол идэх боломжийг хангах алгоритм зохио

Page 37: Lab15 tugjrel

Хооллож буй философичдийн бодлого

Çóðàã 6.7 Õîîëëîæ áóé ôèëîñîôè÷äèéí áîäëîãî