Qat’iy almashinuv (navbatlash).
Ushbu modelda jarayonlar o'zgaruvchidan foydalangan holda qat'iy ravishda o'z navbati bo’yicha amalga oshirilishi mumkin.
Qat’iy almashinuv (navbatlash) usulning kamchiliklari:
- Bloklangan jarayon doimo davriy ravishda (цикл) blokirovka o'zgaruvchisining qiymati o'zgarganligini tekshiradi.
- Musobaqa holatidan qochish va jarayonlarning samarali ishlashiga qo’yiladigan shartga zid ravishda, kritik sohadan tashqarida bo'lgan jarayon boshqa jarayonlarni bloklab qo'yishi mumkin.
Yuqoridagi algoritmlar kabi boshqa faol kutish algoritmlari (Peterson algoritmi, TSL buyrug'i) ham mavjud. Ushbu algoritmlarning barchasida umumiy kamchilik sifatida protsessorning vaqti blokirovka o'zgaruvchisining qiymati o'zgarishini davriy ravishda tekshirish uchun maqsadsiz sarflanishini aytish mumkin.
Ikkita primitiv tushunchalar kiritiladi.
Sleep - bu boshqa jarayon tomonidan ishga tushirilgunga qadar, chaqirivchi jarayonning bloklanishiga olib keladigan tizim so'rovidir.
Wakeup – bu bloklangan jarayonni ishga tushirishga olib keladigan tizim so'rovidir.
Jarayonlarning birgalikda ishlash soddaligi (primitiv)
Ushbu usulni asosiy afzalligi - faol kutishning mavjud emasligidir. Kamchiligi shundaki, agar Spuler bo'sh bo'lsa, u holda wakeup tizim so'rovi behudaga ishlaydi.
Primitivlardan foydalanish
Cheklangan o'lchamdagi bufferdan birgalikda foydalanayotgan ikkita jarayonni ko'rib chiqamiz. Bir jarayon buferga yozadi, ikkinchisi ma'lumotlarni o'qiydi.
Bufer to'liq bo'lganda birinchi jarayon yozilmasligi, ikkinchisi bufer bo'sh bo'lganda o'qimasligi uchun buferdagi elementlar sonini hisoblash maqsadida “count” o'zgaruvchisi kiritiladi.
Buferni to’lib toshish muammosi (ishlab chiqaruvchi va iste'molchi muammosi)
Buferni to’lib toshish muammosi
Semaforlar kelgusida ishlatish uchun saqlangan, ishga tushish signallarini sanaydigan o'zgaruvchilardir.
Ikkita “down” va “up” operatsiyalari taklif qilinadi (Sleep va wakeup ga o’xshash).
Jarayonni blokirovka qilishdan oldin “down” semaforni tekshiradi, agar nolga teng bo'lsa, u jarayonni bloklaydi, agar nolga teng bo'lmasa, jarayon yana faollashadi va semaforni bittaga kamaytiradi.
Do'stlaringiz bilan baham: |