Semafor va Monitor
Semafor - parallel dasturlash muhitlarida bir nechta jarayonlar bir vaqtning o'zida umumiy manba yoki muhim bo'limga kira olmasligiga ishonch hosil qilish uchun foydalaniladigan ma'lumotlar tuzilmasi. Semaforlar o'lik qulflar va poyga sharoitlaridan qochish uchun ishlatiladi. Monitor bir vaqtning o'zida bir nechta jarayonlarni umumiy manbaga kirishiga yo'l qo'ymaslik uchun ishlatiladigan dasturlash tili konstruktsiyasidir, shuning uchun o'zaro istisnolarni kafolatlaydi. Monitorlar bu vazifani bajarish uchun shartli oʻzgaruvchilardan foydalanadi.
Semafor nima?
Semafor muhim boʻlimlarni oʻzaro istisno qilish uchun foydalaniladigan maʼlumotlar strukturasidir. Semaforlar asosan kutish (tarixiy P nomi bilan tanilgan) va signal (tarixiy V nomi bilan tanilgan) deb nomlangan ikkita operatsiyani qo'llab-quvvatlaydi. Kutish operatsiyasi semafor ochilgunga qadar jarayonni bloklaydi va signal operatsiyasi boshqa jarayonga (ip) kirishga imkon beradi. Har bir semafor kutish jarayonlarining navbati bilan bog'langan. Kutish operatsiyasi ip bilan chaqirilganda, sema ochiq bo'lsa, ip davom etishi mumkin. Agar kutish operatsiyasi ip bilan chaqirilganda sema yopilsa, ip bloklanadi va u navbatda kutishi kerak. Signal operatsiyasi semaforni ochadi va agar navbatda navbatda kutayotgan ip mavjud bo'lsa, bu jarayonni davom ettirishga ruxsat beriladi va navbatda kutayotgan iplar bo'lmasa, signal keyingi iplar uchun eslab qoladi. Muteks semaforlari va sanash semaforlari deb ataladigan ikki xil semaforlar mavjud. Muteks semaforlari resursga bir marta kirish imkonini beradi va semaforlarni hisoblash bir nechta ish zarralari resursga (bir nechta birliklar mavjud) kirishga imkon beradi.
Monitor nima?
Monitor - umumiy ma'lumotlarga kirishni boshqarish uchun foydalaniladigan dasturlash tili konstruktsiyasi. Monitorlar umumiy ma'lumotlar tuzilmalarini, protseduralarni (umumiy ma'lumotlar tuzilmalarida ishlaydigan) va bir vaqtning o'zida protsedura chaqiruvlari o'rtasidagi sinxronizatsiyani qamrab oladi. Monitor o'z ma'lumotlari tuzilmagan kirishlarga duch kelmasligiga ishonch hosil qiladi va protsessorlar (monitor ma'lumotlariga o'z protseduralari orqali kiradigan) qonuniy tarzda o'zaro ta'sir qilishini kafolatlaydi. Monitor ma'lum bir vaqtda har qanday monitor protsedurasini bajarish uchun faqat bitta oqimga ruxsat berish orqali o'zaro istisno qilishni kafolatlaydi. Agar boshqa trek monitorda biror usulni chaqirmoqchi bo'lsa, trek allaqachon monitorda protsedurani bajarayotgan bo'lsa, ikkinchi protsedura bloklanadi va u navbatda kutishi kerak. Hoare monitorlari va Mesa monitorlari deb nomlangan monitorlarning ikki turi mavjud. Ular asosan rejalashtirish semantikasida farqlanadi.
Semafor va Monitor oʻrtasidagi farq nima?
Semaforlar ham, monitorlar ham parallel dasturlash muhitlarida oʻzaro istisnoga erishish uchun foydalanilgan boʻlsa-da, ular bu vazifani bajarishda qoʻllaniladigan usullarda farqlanadi. Monitorlarda o'zaro istisnoga erishish uchun ishlatiladigan kod bir joyda va yanada tuzilgan bo'lib, semaforlar uchun kod kutish va signal funktsiyasi chaqiruvi sifatida taqsimlanadi. Bundan tashqari, semaforlarni amalga oshirishda xato qilish juda oson, monitorlarni amalga oshirishda xato qilish imkoniyati juda kam. Bundan tashqari, monitorlar shart oʻzgaruvchilaridan foydalanadi, semaforlar esa foydalanmaydi.