-10-
Operatsion tizimlarda semaforalar
Informatika fanida semafor - bu bir nechta jarayonlar orqali umumiy
manbaga kirishni boshqarish va bir vaqtning o'zida ko'p vazifali operatsion
tizim kabi muhim tizim muammolaridan qochish uchun ishlatiladigan
o'zgaruvchan yoki mavhum ma'lumotlar turi. Arzimas semafor-bu dasturchi
tomonidan aniqlangan shartlarga qarab o'zgartiriladigan (masalan,
kattalashtirilgan yoki kamaytirilgan yoki o'zgartirilgan) oddiy o'zgaruvchi.
Haqiqiy tizimda ishlatilgan semafor haqida o'ylashning foydali usuli-bu
ma'lum bir manbaning qancha birligi borligini qayd etish, bu yozuvni
xavfsiz tarzda sozlash operatsiyalari (ya'ni, poyga sharoitidan qochish). sotib
oling yoki ozod bo'ling va agar kerak bo'lsa, resurs birligi mavjud
bo'lguncha kuting.
Semaforlar - poyga sharoitining oldini olishda foydali vosita; ammo, ulardan
foydalanish hech qachon dasturning bu muammolardan xoli bo'lishining
kafolati emas. Resurslarni o'zboshimchalik bilan sanashga ruxsat beradigan
semaforlar sanash semaforlari, 0 va 1 qiymatlari bilan cheklangan
semaforalar (yoki qulflangan/qulflanmagan, mavjud emas/mavjud) ikkilik
semaforlar deb ataladi va qulflarni amalga oshirish uchun ishlatiladi.
Semafor kontseptsiyasi Gollandiyalik kompyuter olimi Edsger Dijkstra
tomonidan 1962 yoki 1963 yilda , Dijkstra va uning jamoasi Electrologica
X8 uchun operatsion tizimni ishlab chiqish paytida ixtiro qilingan. Oxir -
oqibat, bu tizim ko'p dasturli tizim deb nomlandi.
Aytaylik, kutubxonada 10 ta bir xil o'quv xonasi mavjud bo'lib, ular bir
vaqtning o'zida bitta talaba tomonidan ishlatilishi mumkin. Talabalar, agar
ular o'qish xonasidan foydalanmoqchi bo'lsalar, old stoldan xona so'rashi
kerak. Agar bo'sh xonalar bo'lmasa, talabalar kimdir xonani tark etmaguncha
stolda kutishadi. Talaba xonadan foydalanishni tugatgandan so'ng, talaba
stolga qaytib, bitta xona bo'shab qolganligini ko'rsatishi kerak.
Eng sodda tarzda, reseptsiya xodimi faqat bo'sh xonalar sonini biladi, ular
faqat to'g'ri bilishadi, agar hamma talabalar o'z xonalarini ro'yxatdan
o'tganlarida ishlatsalar va ularni tugatganlarida qaytarib berishsa. . Talaba
xonani so'raganda, xizmatchi bu raqamni kamaytiradi. Talaba xonani
bo'shatganda, xizmatchi bu raqamni oshiradi. Xonani xohlagancha ishlatish
mumkin, shuning uchun xonalarni oldindan bron qilish mumkin emas.
Bu stsenariyda old stolning hisoblagichi hisoblash semaforini, xonalar
manba, talabalar esa jarayonlarni/iplarni ifodalaydi. Bu stsenariyda semafor
qiymati dastlab 10, hamma xonalar bo'sh. Talaba xonani so'raganda, ularga
ruxsat beriladi va semafor qiymati 9 ga o'zgartiriladi. Keyingi talaba
kelganidan keyin u 8 ga tushadi, keyin 7 ga va hokazo. Agar kimdir xona
so'rasa va semaforning joriy qiymati 0 bo'lsa, ular xona bo'shatilguncha
kutishga majbur bo'ladi (hisob 0dan oshganda). Agar xonalardan biri qo'yib
yuborilgan bo'lsa -da, lekin bir nechta talaba kutayotgan bo'lsa, u holda
xonani egallaydiganni tanlash uchun har qanday usuldan foydalanish
mumkin (masalan, FIFO yoki tanga aylantirish). Va, albatta, talaba o'z
xonasini bo'shatib yuborgani haqida yozuvchiga xabar berishi kerak, aks
holda bunday talaba xonadan chiqib ketayotganda noqulay vaziyat yuzaga
kelishi mumkin (ular darsliklarini yig'ishtirmoqda va hokazo). va boshqa
talaba xonadan chiqib ketishidan oldin kiradi.
Resurslar havzasiga kirishni boshqarish uchun foydalanilganda, semafor
qancha resurslar bo'sh ekanligini kuzatadi; u qaysi manbalar tekin ekanligini
kuzatmaydi. Muayyan erkin resursni tanlash uchun boshqa mexanizm
(ehtimol ko'proq semaforlarni o'z ichiga olishi mumkin) talab qilinishi
mumkin.
Paradigma ayniqsa kuchli, chunki semaforlar soni turli xil harakatlar uchun
foydali tetik bo'lishi mumkin. Yuqoridagi kutubxonachi, o'quvchilar
qolmaganida, o'quv zalining chiroqlarini o'chirib qo'yishi yoki ko'p xonalar
band bo'lganda xonalar juda bandligini ko'rsatuvchi belgi qo'yishi mumkin.
Protokolning muvaffaqiyatli bo'lishi uchun ilovalar uni to'g'ri bajarilishini
talab qiladi. Hatto bitta jarayon ham noto'g'ri bajarilsa, adolat va xavfsizlik
buzilishi mumkin (bu dastur sekin harakat qilishi, tartibsiz ishlashi, osib
qo'yilishi yoki ishdan chiqishi mumkin). Bunga quyidagilar kiradi:
*manbani so'rash va uni chiqarishni unutish;
*hech qachon so'ralmagan resursni chiqarish;
*resursni keraksiz uzoq vaqt ushlab turish;
*resursni avval talab qilmasdan ishlatish (yoki uni chiqargandan keyin).
Agar barcha jarayonlar ushbu qoidalarga amal qilsa ham, har xil semaforlar
tomonidan boshqariladigan turli xil manbalar mavjud bo'lganda va
jarayonlar bir vaqtning o'zida bir nechta resurslardan foydalanishi kerak
bo'lganda, ko'p manbali tiqilib qolishi mumkin.
Do'stlaringiz bilan baham: |