Semafor va Mutex
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. Muteks (O'zaro istisno ob'ekti) bir vaqtning o'zida bir nechta jarayonlar orqali umumiy manbaga kirishni oldini olish uchun ham ishlatiladi.
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. Muteksli semaforlar resursga bir marta kirishga ruxsat beradi va semaforlarni hisoblash bir nechta oqimlarga resursga kirishga imkon beradi (bir nechta birlik mavjud).
Muteks nima?
Kompyuter ilovasi ishga tushganda, u mutex yaratadi va uni manbaga biriktiradi. Resurs ip tomonidan ishlatilsa, u bloklanadi va boshqa iplar undan foydalana olmaydi. Agar boshqa mavzu xuddi shu manbadan foydalanmoqchi bo'lsa, u so'rov yuborishi kerak bo'ladi. Keyin bu ip birinchi ip manba bilan tugaguniga qadar navbatga joylashtiriladi. Resurs bilan birinchi ip tugagach, qulf o'chiriladi va navbatda kutayotgan ip resursga kirishi mumkin. Navbatda bir nechta iplar mavjud bo'lsa, ularga aylanish asosida kirish huquqi beriladi. Amalda, mutex resursga kirishni bir nechta iplar o'rtasida almashtirganda, u bir vaqtning o'zida bir nechta oqimlar resursni iste'mol qilganidek ko'rinadi. Lekin maʼlum bir vaqtda resursga ichkarida faqat bitta ip kirishmoqda.
Semafor va Muteks o'rtasidagi farq nima?
Garchi semaforlar ham, mutex ob'ektlari parallel dasturlash muhitlarida o'zaro istisnoga erishish uchun foydalanilgan bo'lsa-da, ular ba'zi farqlarga ega. Muteks ob'ekti faqat bitta ipga resurs yoki muhim bo'limni iste'mol qilishga imkon beradi, semaforlar esa resursga bir vaqtning o'zida cheklangan miqdordagi kirishga imkon beradi (maksimal ruxsat etilgan raqam ostida). Muteks ob'ektlari bilan resursga kirishni xohlaydigan boshqa oqimlar resursdan foydalanib, joriy mavzu tugaguncha navbatda kutishlari kerak.