lab15 tugjrel
TRANSCRIPT
Түгжрэл
Хичээл №7
Түгжрэл
Хоорондоо харилцаж буй буюу нөөцийн төлөө хоорондоо өрсөлдөж буй процессууд цаашид ажиллах боломжгүй болох үзэгдлийг түгжрэл гэж нэрлэдэг.
Зайлсхийх, шийдэх төгс арга байдаггүйХоёр буюу түүнээс дээш тооны
процессод тохиолдно.
a) Òүãæðýë үүñýõ ìàãàäëàëòàé
á) Òүãæðýë үүññýí
Çóðàã 6.1 Òүãæðýëèéí æèøýý
Түгжрэлийн жишээ
. . .À Ïðîöåññ
. . .
. . .80Êá ñàíàõ îé õүñýõ
60Êá ñàíàõ îé õүñýõ
Á Ïðîöåññ
. . .70Êá ñàíàõ îé õүñýõ
80Êá ñàíàõ îé õүñýõ
Àëãîðèòì 6.1 Òүãæðýë үүñ÷ áîëîõ ïðîöåññóóä
Түгжрэлийн шалтгаан
Солбицол (mutual exclusion) Нөөцөд зөвхөн нэг зэрэг зөвхөн нэг л
процесс хандаж, ашиглаж байж болно.
Эзэмшээд хүлээх (Hold and Wait) Ямар нэгэн процесс нөөцийг эзэмшээд
бусад процессод нөөц хуваарилахыг хүлээж байж болно.
Түгжрэлийн шалтгаанХүчээр суллахгүй байх (No Preemption)
Процессын эзэмшиж буй нөөцийг нь хүчээр чөлөөлж болохгүй.
Эдгээр 3 нөхцөл нь түгжрэл үүсгэх магадлалтай ч ямагт түгжрэл үүсгэнэ гэж үзэж болохгүй. Харин дөрөв дэх нөхцөл үүссэнээр системд түгжрэл үүсдэг.
Тойрон хүлээх (Circular wait) Бусад процессод шаардлагатай байгаа нөөцийг эзэмшсэн
процессуудын битүү гинжин хэлхээ олдож байгаа үед тойрон хүлээлт үүссэн байна гэж үздэг. Энгийнээр тайлбарлавал А процссод шаардлагатай нөөцийг Б процесс эзэмшсэн, Б процессод шаардлагатай нөөцийг А процесс эзэмшсэн байхад тойрон хүлээлт үүсдэг
Түгжрэлийн шалтгаанТойрон хүлээх (Circular wait)
Түгжрэл үүсэх магадлалтай
Солбицол (mutual exclusion) Эзэмшээд хүлээх (Hold and Wait) Хүчээр суллахгүй байх (No
Preemption)
Түгжрэл үүссэн
Солбицол (mutual exclusion) Эзэмшээд хүлээх (Hold and Wait) Хүчээр суллахгүй байх (No
Preemption) Тойрон хүлээх (Circular wait)
Түгжрэлээс сэргийилэх
Солбицол Солбицлын асуудлыг бүрэн арилгах
боломжгүй. Зарим тохиолдолд солбицлыг арилгаж болдог ч ерөнхий тохиолдолд энэ нь боломжгүй. Иймээс ч солбицлын асуудлыг хэрхэн үүсгэхгүй байхыг бус харин энэ асуудлыг оновчтойгоор шийдэх арга хайх тал дээр судлаачид ажилладаг.
Түгжрэлээс сэргийилэх
Эзэмшээд хүлээх Энэ асуудлыг процесс өөртөө шаардлагатай
бүх нөөцийг нэг дор шаарддаг байхаар зохион байгуулснаар шийдэж болно.
Хүчээр суллахгүй байх Процессын эзэмшиж буй нөөцийг
төлөвлөлтийн ямар нэгэн шалгуур ашиглан үйлдлийн систем суллах боломжтой байснаар энэ нөхцөл байдлыг арилгаж болно
Түгжрэлээс сэргийилэх
Тойрон хүлээх Нөөцийг хүсэх шугаман дараалал
тогтоосноор тойрон хүлээх асуудлыг шийдэж болно.
Түгжрэлээс зайлсхийх
Процессыг үүсгэснээр түгжрэлд орох магадлалтай эсэхийг ҮСистемийн үйл ажиллагааны явцад динамикаар шалгана
Процессын нөөцийн хүсэлтийг урьдчилан мэдэж байх хэрэгтэй
Түгжрэлээс зайлсхийх
Процесс үүссэнээр систем түгжрэлд орох магадлалтай бол процессыг үүсгэх хүсэлтийг няцаах
Нөөц хуваарилах хүсэлтийг биелүүлснээр систем түгжрэлд орох магадлалтай бол нөөцийг хуваарилахгүй байх
Нөөц хуваарилах хүсэлтийг няцаах
Банкирын алгоритм гэж нэрлэдэгСистемийн төлөв – системл тухайн
мөчид нөөц хуваарилсан байдалАюулгүй төлөв - Түгжрэлд оролгүйгээр
бүх процессууд ажиллаж дуусах ядаж нэг боломж байх төлвийг аюулгүй төлөв гэе.
Аюултай төлөв - Аюулгүй биш төлөв
Нөөцийн хуваарилалтын граф
R вектор - Системд нөөцийн төрөл бүр нийт ямар хэмжээтэй байгааг (байсныг) заана
V вектор - Системд нөөцийн төрөл бүр яг одоо ямар хэмжээтэй байгааг заана.
С матриц - Процесс бүр ямар хэмжээний нөөц хүссэнийг илэрхийлнэ.
А матриц - Процесс бүр яг одоо ямар хэмжээний нөөц эзэмшиж байгааг илэрхийлнэ.
Анхны төлөв
Ñ ìàòðèö À ìàòðèö Ñ-À
R âåêòîð V âåêòîð
Çóðàã 6.3à Íөөö õóâààðèëñàí áàéäàë (àíõíû òөëөâ)
Р2 процесс ажиллаж дууссан
Ñ ìàòðèö À ìàòðèö Ñ-À
R âåêòîð V âåêòîð
Ð2 ïðîöåññ àæèëëàæ äóóññàí
Çóðàã 6.3á Ð2 ïðîöåññ àæèëëàæ äóóññàí áàéíà
Р1 процесс ажиллаж дууссан
Ñ ìàòðèö À ìàòðèö Ñ-À
R âåêòîð V âåêòîð
Ð1 ïðîöåññ àæèëëàæ äóóññàí
Çóðàã 6.3â Ð1 ïðîöåññ àæèëëàæ äóóññàí áàéíà
Р3 процесс ажиллаж дууссан
Ñ ìàòðèö À ìàòðèö Ñ-À
R âåêòîð V âåêòîð
Ð3 ïðîöåññ àæèëëàæ äóóññàí
Çóðàã 6.3ã Ð3 ïðîöåññ àæèëëàæ äóóññàí áàéíà
Аюулгүй төлөв
Р2, Р1, Р3 процессууд ажиллаж дууссаны дараа Р4 процесс ажиллаж дуусна.
Зураг 6.3а –д байгаа төлөв аюулгүй төлөв юм.
Анхны төлөв
Ñ ìàòðèö À ìàòðèö Ñ-À
R âåêòîð V âåêòîð
àíõíû òөëөâÇóðàã 6.4à Íөөö õóâààðèëñàí áàéäàë (àíõíû òөëөâ)
Р1 процессод нөөцийг хуваарилсан
Ñ ìàòðèö À ìàòðèö Ñ-À
R âåêòîð V âåêòîð
Ð1 ïðîöåññûí õүñýëòèéã áèåëүүëñýí áàéíàÇóðàã 6.4á Ð1 ïðîöåññûí õүñýëòèéã áèåëүүëñýí áàéíà
Төлвүүдийн хоорондын холбоо, хамаарал
àþóëãүé òөëөâ
àþóëòàé òөëөâ
òүãæðýëèéí
òөëөâ
Түгжрэлээс зайлсхийх
Процесс өөрийн эзэмших шаардлагатай нөөцийг байнга урьдчилан мэдэгдэж чадахгүй. Жишээ : Санах ойг динамикаар хүсэх тохиолдол байнга гардаг.
Хугацааны тодорхой интервалд л ажилладаг буюу өндөр хурд шаарддаг (жишээ : бодит хугацааны үйлдлийн систем) үйлдлийн системд банкирын алгоритмыг ажиллуулах боломжгүй.
Түгжрэлийг илрүүлэх
Q ìàòðèö À ìàòðèö
R âåêòîð
V âåêòîð
Çóðàã 6.6 Òүãæðýëèéã èëðүүëýõ àëãîðèòìàä àøèãëàõ өãөãäëèéí áүòöүүä
Түгжрэлийг илрүүлэх алгоритм
1. А матрицад, харгалзах мөр нь хоосон байх процессуудыг тэмдэглэ.
2. V вектортой анхны утга нь тэнцүү байх түр зуурын W вектор авна.
3. Өмнө нь тэмдэглэгдээгүй i дугаартай процессыг олж Q матрицад түүнд харгалзах i-р мөр нь QikWk (k=1,m) байх i-р мөрийг олно. Хэрэв шаардлага хангах мөр олдохгүй бол алгоритмыг төгсгөнө.
4. Хэрэв шаардлага хангах мөр 3-р алхамд олдсон бол i-р процессыг тэмдэглээд уг процессод оноосон нөөцийг сулласан гэж үз. (Wk=Wk+Aik, i=1,k). 3-р алхам руу шилж.
Түгжрэлийг илрүүлэх алгоритм
Алгоритм ажиллаж дуусахад тэмдэглэгдээгүй процессууд нь түгжрэлд орсон процесс юм.
Алгоритм нь нөөц хуваарилаагүй процесс түгжрэлд ороогүй гэж үзнэ.
Ямар нэг дарааллаар процессуудын нөөц хүсэх хүсэлтийг биелүүлсэн гэж үзээд, эцэст нь түгжрэлд орсон процессуудыг гарган ирдэг.
Алгоритмын жишээ
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. Алгоритмыг төгсгө.
Түгжрэлээс гарах
Бүх түгжрэлд орсон процессуудыг таслах Процессуудын үйл ажиллагааг хугацааны
тодорхой давтамжтайгаар сануулж явах хэрэгтэй (сануулахад байсан төлвийг буцалтын цэг гэж нэрлэе) ба түгжрэлд орсон процессуудыг буцалтын цэгээс нь эхлэн ажиллуулах
Түгжрэлээс гарах
Түгжрэлд орсон процессуудыг ээлж дараалан, түгжрэлгүй болтол нь таслах. Энэ үед яг аль процессыг таслах нь сонголтын асуудалтай юм. Процессыг таслах болгонд түгжрэлийг илрүүлэх алгоритмыг ажиллуулж байх хэрэгтэй.
Нөөцүүдийг ээлж дараалан, түгжрэлгүй болтол нь суллах.
Түгжрэлээс гарах
3 –р аргад аль процессыг таслахыг шийдэх аргууд Процессорыг хамгийн бага хугацааанд
эзэмшсэн Гаралтын мэдээллийг хамгийн бага гаргасан Ажиллаж дуусахад хамгийн их хугацаа
үлдсэн Хамгийн бага нөөц эзэмшиж байгаа Хамгийн бага зэрэглэлтэй
Үл анхаарах
Орчин үеийн үйлдлийн системд түгжрэл үүсэх магадлал улам бүр багассаар л байна.
Тэмээн хяруулын алгоритм (ostrich algorithm) Түгжрэл үүсэх асуудлыг үл анхаарах Энд тэмээн хяруул нь элсэнд толгойгоо нуудагтай
адилаар түгжрэлийн асуудал үүсээгүй буюу огт ийм асуудал байхгүй мэтээр үйлдлийн системээ зохион бүтээдэг.
Хооллож буй философичдийн бодлого
5 философич хамт амьдардаг. Тэд амьдралынхаа турш бодох, идэх ажлыг л хийдэг ба хоолны ширээ нь тойрог хэлбэртэй. Ширээний голд том саванд гоймон (философичдод хамгийн тохирсон хоол гэж үзсэн) хийсэн ба 5 савхыг (хос савх бус нэг л ширхэг савх) ширээ тойруулан тавьсан
Хооллож буй философичдийн бодлого
Философич өлсвөл ширээ тойруулан тавьсан 5 суудлын нэгэнд суун (мэдээж уг суудал дээр өөр хүн сууж байгаа бол давхарлан сууж болохгүй) өөрийн баруун ба зүүн талд байгаа савхыг эхлээд зүүн талд байгаа савхаа дараа нь баруун талд байгаа савхаа аван (нэг зэрэг хоёр савх авч болохгүй) ширээний голд байгаа гоймонгоос иддэг.
Хооллож буй философичдийн бодлого
Хэрэв өөрийнх нь авах ёстой савхыг өөр хэн нэгэн авсан бол тэр савх сулрахыг хүлээнэ. Аль ч философич хоёр савхтай байж л хоол идэх боломжтой болдог. Бодлогын нөхцөлд өгсөн шаардлагыг хангахуйцаар философичид хоол идэх боломжийг хангах алгоритм зохио
Хооллож буй философичдийн бодлого
Çóðàã 6.7 Õîîëëîæ áóé ôèëîñîôè÷äèéí áîäëîãî