Muteks ob'ektlari: bajariladigan vazifalarni o'zaro istisno qilishni (MUTual Exclusion) ta'minlaydi.
condvar ob'ektlari: shart o'zgaruvchisi (SHART O'ZGARCHI) ma'lum bir qiymatga o'rnatilganda bajariladigan vazifalarni o'zaro istisno qilishni ta'minlaydi.
Muteks tipidagi sinxronizatsiya ob'ektlari
Muteks tipidagi sinxronizatsiya ob'ektlari dasturning xavfsizligi va samaradorligini oshirish nuqtai nazaridan mantiqiy semaforlarning ba'zi rivojlanishini ifodalaydi.
Umumiy resurs bilan ishlashning odatiy tsikli quyidagicha: semaforni oling, resurs bilan ishlang, semaforni qaytaring. Ammo, agar dastur xatosi natijasida u birinchi navbatda qaytish semafor funksiyasini chaqirsa (uni olmasdan!), keyin esa umumiy resursda yuqoridagi siklni bajarsa, u holda get semafor funksiyasi vazifani bloklamaydi, agar resurs band.
Semaforlar bilan bog'liq yana bir muammo - bu semaforda ishlaydigan funksiya har safar chaqirilganda vazifalarni almashtirish zarurati. Haqiqat shundaki, semafor hisoblagichining o'zi ( bu aslida jarayonlar o'rtasida umumiy xotira) operatsion tizimning ma'lumotlar maydonida va semafor bilan ishlaydigan har qanday funktsiya tizim chaqiruvidir. Bu, ayniqsa, vazifalar (mavzular) o'rtasida sinxronizatsiya qilishda yomon, chunki bu holda ma'lumotlar almashinuvining o'zi vazifani almashtirishni talab qilmaydi (chunki vazifalarning barcha xotirasi birgalikda).
Ushbu hodisalarga qarshi kurashish uchun mutex ob'ekti kiritiladi, u aslida juftlikdan iborat: mantiqiy semafor va vazifa identifikatori - semaforning joriy egasi (ya'ni, qabul qilish funktsiyasini muvaffaqiyatli chaqirgan va egasiga aylangan vazifa). umumiy manba). Shu bilan birga, bu juftlikning o'zi vazifalar o'rtasida taqsimlangan xotirada saqlanadi (iplar bo'lsa, ularning umumiy xotirasining istalgan joyida). Muteks mn ob'ektiga kirish uchun uchta ibtidoiy amallar aniqlanadi :
Lock(m) - qulflash mutex m, agar m allaqachon boshqa vazifa bilan bloklangan bo'lsa, u holda bu operatsiya vazifani m qulfdan chiqarilishini kutish holatiga qo'yadi ;
Unlock{m) - mutex m qulfini ochish, (agar boshqa vazifa m ni kutayotgan bo'lsa , u holda uni faollashtirish, kutish navbatdan olib tashlash va joriy vazifani oldindan belgilash mumkin, masalan, agar uning ustuvorligi yuqoriroq bo'lsa); agar ushbu operatsiyani chaqirgan vazifa m ning egasi bo'lmasa , u holda operatsiya hech qanday ta'sir qilmaydi;
TryLock(m ) - mutex m ni bloklashga urinib ko'ring, agar m bloklanmagan bo'lsa, bu operatsiya Lock{m ga ekvivalent bo'ladi , aks holda nosozlik indikatori qaytariladi.
Ushbu operatsiyalar bo'linmas, ya'ni . ularni bajarish vaqtida vazifalarni almashtirish taqiqlanadi. Muteks ob'ektlari quyidagilardir:
Do'stlaringiz bilan baham: |