Priority Inversion
Википедиагийн чанарын стандартад нийцүүлэхийн тулд энэ өгүүллийг хянан тохиолдуулах хэрэгтэй байна. Энэ талаар хэлэлцүүлгийн хуудас дээр юм уу энэ тэмдгийг илүү нарийвчилсан тэмдгээр солино уу. |
Давуу эрхийн өөрчлөлт нь бага давуу эрхтэй thread хаалтыг тогтоосноор өндөр давуу эрхтэй thread нь хашигдах үзэгдлийг давуу эрхийн өөрчлөлт (priority inversion) гэнэ.давуу эрх удамшуулахад (priority inheritance protocol)- протоколыг ашигладаг. Уг протокол нь бага давуу эрх бүхий thread нь өндөр давуу эрхтэй thread-ийн давуу эрхийг удамшиж авдаг. Харин хаалтыг сулласны дараа тухайн thread өөрийн хуучин буюу бага давуу эрхийг буцааж авдаг. Дуу намсгагч болон критик мужид их давуу эрхтэй удамшилаар энэхүү байдлыг хэвийн болгож давуу эрхтэй thread-ийг чөлөөлнө. Windows Mobile нь бага давуу эрхтэй thread-ийг давуу эрхтэй thread рүү удамшуулах мөн нөөцийг дуустал давуу эрхтэй thread-ийг ачааллах боломжтой болгодог. Давуу эрхтэй удамшил нь өөрөөсөө ямар нэг дохио өгдөггүй. Учир нь өөрчлөгдсөн thread-ийг зогсоохын тулд тодорхой хэмжээний цаг хугацаа шаардагдахаас гадна kernel-ийн хяналтаас гарч OEM нь хуваарилагдсан процесийн дагуу ажилладаггүй. Идэвхитэй үеийн гүйцэтгэлийг баталгаажуулахын тулд OEM –ийг давуу эрхтэй хувилбар бий болохгүй нөхцөлөөр хангах хэрэгтэй. Систем нь давуу эрхтэй удамшилгүйгээр бага давуу эрхтэй thread болдгийг жишээгээр харуулбал аппликейшн нь 3 thread-тэй гэж тооцвол
Thread 1 – Их давуу эрхтэй Thread 2 - Дундаж давуу эрхтэй Thread 3 – Бага давуу эрхтэй
Thread 1 болон thread 2 жишээний эхэнд блоклогдсон эсвэл идэвхигүй байдалд байдаг. Thread 3 критик мужид идэвхитэй, уншиж байдаг. Яг тэр үед thread 2 нь уншиж эхлэх бөгөөд thread 3-аас түрүүлж байрлалаа эзэлсэн байдаг. Учир нь thread 2 нь өндөр давуу эрхтэй байдаг. Тэгээд thread 3 нь өөрийнхөө критик муждаа үргэлжлүүлэн уншдаг.
Үүний дараагаар thread 1 нь байрлалаа эзэлдэг. Ингээд thread 3 нь өөрийн критик мужид ороход thread 1 нь оролдлого хийх боловч энэ нь өөр thread-ээр дүүрсэн байдаг тул thread 1 блоклогдож, критик мужид хүлээлтийн горим үүсдэг.
Энэ үед thread 2 нь thread 1 болон 3- аас илүү давуу эрхтэй учир түрүүлж уншиж эхлэх бөгөөд thread 2 уншигдаж байгаа, thread 3 нь хэзээ ч чөлөөлөгдөхгүй тул thread 1 нь хүлээлтийн горимд байдаг. Ийм учраас, системд их давуу эрхтэй thread, ачаалагдаж байгаа thread-үүдээс бага давуу эрхтэй thread- үүд хүлээлтийн горимд шилжддэг байна. Энэхүү асуудлыг шийдвэрлэхэд, Windows Mobile нь эхний түвшинд нь удамшлын давуу эрхийг зөвшөөрдөг. Түрүүчийн жишээнд, thread 3-ийг ачаалагдаж байхад thread 1 нь хүлээлтийн горимд, блоклогдсон байдаг бол, Windows Mobile-ийг ашигласнаар thread 3 нь thread 1- тэй нөөцөө хуваалцаж ашигладаг. Thread 3- ын нөөцийг хуваалцсаны дараагаар, Windows Mobile нь thread 1-ийг ачаалагдаж байхад Thread 3-д анхны давуу эрхийг сэргээж өгдөг. Хэдийгээр thread 3 нь обьект-г чөлөөлөхөд, бусад thread, X -ийг хүлээн блоклогдсон байх боловч, Windows Mobile нь бага давуу эрхтэй thread X-д илүү давуу эрх олж авахыг дэмжддэггүй. If the priority of a thread is inverted, the thread receives a fresh quantum, or slice, of execution time when its priority is no longer inverted. Хэрвээ thread-ын давуу эрх нь өөрчлөгсөн байвал thread нь шинээр гүйцэтгэлийн хугацаа болон квантыг хүлээн авдаг.