Ishlanmalar
Ta'rif. Voqea - jarayonning borishiga nisbatan asinxron keladigan mantiqiy signal (xabarnoma). Har bir hodisa E mantiqiy o‘zgaruvchisi bilan bog‘langan bo‘lib , u ikkita qiymatni qabul qiladi: 0 – hodisa yetib kelmagan va 1 – hodisa yetib kelgan va kutish navbati (jarayonlar, hodisa kelishini kutayotgan vazifalar). Hodisalarda quyidagi elementar operatsiyalar aniqlanadi:
Send(E) - hodisani yuborish, ya'ni. E o'zgaruvchisini 1 ga qo'ying (UNIX tizimlari an'analariga ko'ra, bu funktsiya odatda " O'ldirish " deb ataladi , chunki hodisalar orasida bittasi aniqlanadi, unga yagona reaktsiya uni qabul qilgan vazifani darhol to'xtatishdir), barcha vazifalar kutish navbatidan faollashtirilgan;
Kutish(E) - hodisani kutish, (agar hodisa bo'lmasa, ya'ni E o'zgaruvchisi 0 ga teng bo'lsa, u holda bu operatsiya vazifani hodisaning kelishini kutish holatiga qo'yadi va uni oxiriga qo'shib qo'yadi. ushbu tadbir uchun kutish navbati, voqea kelishi bilanoq vazifa faollashadi);
Reset (E) - tozalash (qabul qilingan hodisani o'chirish), ya'ni. E o'zgaruvchisini 0 ga qo'ying;
Test(E) - tekshirish (kiruvchi) - E o'zgaruvchining qiymatini olish.
Bir misolni ko'rib chiqing.
B.Kutish - B vazifasi chaqirdi Kutmoq; chunki E = 1, bu hech qanday ta'sir qilmaydi, B ijroni davom ettiradi;
tiklash - E = 0 ni o'rnatish funktsiyasi chaqirildi (bir vazifadan A, B yoki C , yoki boshqa vazifa);
B.Wait - E = 0 bo'lgani uchun, B vazifasi bloklanadi va kutish navbatiga qo'yiladi;
C.Wait - E = 0 bo'lgani uchun, keyin C vazifasi bloklanadi va kutish navbatiga qo'yiladi;
A.Yuborish - E = 1 ni o'rnating , kutish navbatdan barcha vazifalarni faollashtiring, ya'ni. B va C ni faollashtiring .
Voqealar yordamida mijoz-server tipidagi ikkita vazifa o'rtasida almashinuvni tashkil qilish oson. E\ va E-> ikkita hodisa bo'lsin . Vazifa T) (server) ishga tushirilgandan so'ng darhol Ei-WaitQ funktsiyasini chaqiradi. Shunday qilib, u E\ hodisasi olinmaguncha bloklanadi . Task Ti (mijoz) ishga tushirilgandan so'ng darhol T vazifasi bilan birgalikda xotirada ma'lumotlarni tayyorlaydi va Ei.SendQ funksiyasini chaqiradi. Bu T) vazifasini faollashtirishga olib keladi. Vazifa davom etadi va E2 hodisasi qabul qilinmaguncha blokirovka qilib, E2- Kutish ( ) funksiyasini chaqiradi. Vazifa T) (server) ma'lumotlarni qayta ishlash tugallangandan so'ng E^-SendQ, Ei.WaitQ funktsiyalarini chaqiradi, T2 vazifasini (mijoz) faollashtiradi va o'zini bloklaydi. Quyida mijoz-server o'zaro aloqasini amalga oshirishning boshqa usullarini ko'rib chiqamiz.
Do'stlaringiz bilan baham: |