Adaptive mutex

Чөлөөт нэвтэрхий толь — Википедиагаас
Харайх: Удирдах, Хайлт

Adaptive mutex – Хуулбар процессуудын дунд нөөцийг зохицуулахад хэрэглэгддэг обьект.

Adaptive mutex нь эгзэгтэй өгөгдөл бүтээгдхүүн бүрт хандахаас хамгаалдаг. Мултипроцессор системд adaptive mutex нь spinlock-оос хэрэгжсэн стандарт семафороор ажиллаж эхэлдэг. Хэрэв өгөгдлүүд түгжигдсэн ба аль хэдийн ашиглагдсан бол adaptive mutex нь хоёр зүйлийн нэгийг нь л хийдэг. Хэрэв хуулбар процесс нь түгжсэн бол энэ нь өөр нэг CPU-дээр ажиллаж байдаг. Хуулбар процесс нь түгжээ чөлөөтэй болох зуур эргэлдэж байдаг. Учир нь удахгүй дуусах болзошгүй түгжээг хуулбар процесс нь өөртөө эзэмшихийг оролддог.
Хэрэв хуулбар процесс нь ажиллах төлөвт байгаа түгжээг эзэмших гэж оролдвол блоклогдох ба түгжээ чөлөөлөгдтөл юу ч хийдэггүй. Дан процессорын системд хуулбар процесс нь хэрэв түгжээ нь өөр нэг хуулбар процессоор шалгагдаж байвал ажиллагаагүй түгжээг эзэмшдэггүй. Учир нь нэг цаг хугацаанд нэг л процесс ажиллаж чаддаг. Түүнчлэн энэ төрлийн системд хуулбар процесс нь эргэлдэхээсээ илүүтэйгээр юу ч хийдэггүй унтдаг.
Adaptivemutex.png
Зурагт үзүүлснээр:

1. Thread А буюу хуулбар процесс А нь хуваагдсан нөөцийг ашиглаж, mutex-г түгжсэн байна.
2. Thread B нь mutex-г түгжих болон блоклохыг оролдоно.
3. Хуулбар процесс А нь mutex-н түгжээг чөлөөтэй болгоно.
4. Thread А буюу хуулбар процесс А нь хуваагдсан нөөцийг ашиглаж mutex-г түгжсэн байна.

Solaris систем нь adaptive mutex – ыг богино кодын сегментээр хандагддаг өгөгдлийг хамгаалахад ашигладаг. Хэрэв түгжээ цөөхөн, хэдэн зуугаас бага команд агуулж байвал хуулбар процессуудын дунд нөөцийг зохицуулахад хэрэглэгддэг обьект (mutex) ашиглагддаг. Хэрэв кодын сегмент нь үүнээс урт байвал эргэлт нь хэтэрхий бүтээмж муутай болох болно. Эдгээр урт кодонд зориулж ерөнхий төлвийн хувьсагч болон семафор ашигладаг. Шаардлагатай түгжээ эзэмшигдсэн байвал хуулбар процесс нь хүлээж эргэлтэнд орох болон унтдаг. Хуулбар процесс түгжээ чөлөөтэй болсон үед дараалал дахь дараачийн унтаж буй хуулбар процесст сигнал дамжуулна. "Solaris" нь эргэвч хүрдийг хуулбар процессуудын дунд нөөцийг зохицуулахад хэрэглэгддэг обьект болон уншигч бичигч түгжээ эзэмшихийн тулд хүлээж буй хуулбар процессуудын жагсаалтыг эрэмбэлэхийн тулд ашигладаг. Эргэвч хүрд нь түгжээнд блоклогдсон хуулбар процессуудыг агуулах бүтцийн дарааллыг агуулдаг. *Жишээлбэл: Хэрвээ ямар нэгэн хуулбар процесс тухайн синхрончлогдсон обьектийн түгжээн дээр байвал тухайн түгжээг эзэмших гэж байгаа хуулбар процессууд эргэвч хүрдэн дээр дарааллан байрлана. Түгжээ суллагдах үед гол процесс буюу “Kernel” нь эргэвч хүрдэн дээр байгаа нэг процессийг түгжээний дараагийн эзэмшигч болгоно. Дор хаяж нэг хуулбар процесс эргэвч хүрдэн дээр нь байрлаж байгаа синхрочлогдсон обьект бүр өөр өөрийн гэсэн эргэвч хүрдтэй байна. "Solaris" нь синхрончлогсдон обьект бүрийг нэг эргэвч хүрдтэй холбохын оронд "Кernel" бүрт нэг нэг эргэвч хүрдийг ноогдуулж өгдөг. Учир нь хуулбар процесс нь нэгэн зэрэг нэгээс олон обьектоор блоклогдох боломжгүй юм. Эргэвч хүрдүүд нь “priority-inheritance protocol”-oop зохион байгуулагдаж байдаг.
Ашигласан материал[засварлах | edit source]

  1. http://it325blog.files.wordpress.com/2012/09/operating-system-concepts-7-th-edition.pdf