Ta'rif. Hodisa - bu jarayon oqimiga nisbatan asinxron ravishda keladigan mantiqiy signal (ogohlantirish) . 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). Hodisalar bo'yicha quyidagi elementar operatsiyalar aniqlanadi:
SendQE ) - hodisani yuborish , ya'ni. E o'zgaruvchisini 1 ga o'rnating ( UNIX an'anasiga ko'ra tizimlarda bu funktsiya odatda " O'ldirish " deb nomlanadi , chunki hodisalar orasida bittasi aniqlanadi , unga yagona reaktsiya uni qabul qilgan vazifani darhol to'xtatishdir), kutish navbatidagi barcha vazifalar faollashtirilganda;
WaitQE ) - hodisani kuting, (agar hodisa bo'lmasa, ya'ni E o'zgaruvchisi 0 bo'lsa, u holda bu operatsiya vazifani hodisaning kelishini kutish holatiga qo'yadi va uni kutish navbatining oxiriga qo'shadi. ushbu hodisa uchun, voqea kelishi bilanoq, vazifa faollashtiriladi);
ResetQE ) - tozalash (kiruvchi hodisani o'chirish), ya'ni. E o'zgaruvchisini 0 ga qo'ying;
TestQE ) - tekshirish (kvitansiya) - E o'zgaruvchining qiymatini olish.
Bir misolni ko'rib chiqing.
B. Kutib turing - kuting deb nomlangan B topshirig'i ; kabi E = 1, keyin u hech qanday ta'sir qilmaydi, B ijroni davom ettiradi;
qayta o'rnatish - E = 0 ni o'rnatish funktsiyasi chaqirildi (bir vazifa A, B yoki C yoki boshqa vazifa);
B. Kutib turing - E = 0 bo'lgani uchun, B vazifasi bloklanadi va kutish navbatiga qo'yiladi ;
C. _ Kutmoq - E = 0 bo'lganligi sababli , C vazifasi bloklanadi va kutish navbatiga qo'yiladi ;
A. _ yuborish - E = 1 ni o'rnating , kutish navbatdagi barcha vazifalarni faollashtiring, ya'ni. B va C ni faollashtiring .
Voqealar yordamida mijoz-server tipidagi ikkita vazifa o'rtasida almashinuvni tashkil qilish oson. Ikki voqea bo'lsin Et va E%. Tt vazifasi (server) boshlangandan so'ng darhol Et - WaitQ funktsiyasini chaqiradi . Shunday qilib, Et hodisasi qabul qilinmaguncha bloklanadi - Vazifa T% (mijoz) boshlangandan so'ng darhol xotirada ma'lumotlarni tayyorlaydi vazifa bilan birgalikda Tt funksiyasini chaqiradi Et . Q ni yuboring . Bu 71-topshiriqni faollashtiradi. 71-topshiriq davom etadi va E ^ funksiyasini chaqiradi . WaitQ , E% hodisasi olinmaguncha blokirovka qilish . 71-topshiriq (server) ma'lumotlarni qayta ishlash tugagandan so'ng E ^ funktsiyalarini chaqiradi. SendQ , Et . WaitQ , 71-topshiriqni faollashtirish (mijoz) va o'zini blokirovka qilish. Quyida mijoz-server o'zaro aloqasini amalga oshirishning boshqa usullarini ko'rib chiqamiz.
Mijoz va server o'zaro ta'siri
Ta'rif. Mijoz-server aloqasi - bu ma'lumotni bir vazifadan ikkinchisiga o'tkazish usuli.
Ilgari biz bunday shovqinni ta'minlashning bir necha usullarini ko'rib chiqdik (qarang: semaforlar , signallar va pochta qutilari).
Vazifalar navbatlari
Yuqoridagi o'zaro ta'sir turlarini va vazifalarni sinxronlashtirishni ta'minlash uchun operatsion tizim bir qator vazifalar navbatini quradi.
Do'stlaringiz bilan baham: |