Istisnolar - bu topshiriqning keyingi bajarilishiga to'sqinlik qiladigan kutilmagan holatlar. Istisnolarni aniqlash dasturiy yoki apparat bo'lishi mumkin. Istisno turlari:
sinxron (masalan, vaqtni hisoblashda),
asinxron (qolgan hamma narsa, masalan, 0 ga bo'linish holati).
Istisnoga xizmat ko'rsatish uchun sizga kerak bo'ladi:
xizmat ko'rsatish dasturi,
tegishli vazifa (kutishdagi istisno),
joriy vazifadan istisnoni hal qilish vazifasiga o'tish mexanizmi,
istisnolarni qayta ishlash vazifasidan joriy vazifaga qaytish mexanizmi.
Semaforlar yuqori darajadagi vazifalarni sinxronlashtirish mexanizmidir. Farqlash:
Ikkilik (mantiqiy) semaforlar muhim umumiy resursni himoya qilish uchun o'zaro istisno mexanizmi; Quyidagi elementar operatsiyalar aniqlanadi:
olish (agar semafor allaqachon boshqa vazifa tomonidan "olingan" bo'lsa, u holda bu operatsiya vazifani semaforning chiqarilishini kutish holatiga keltiradi),
qaytish (agar semaforni boshqa vazifa kutayotgan bo'lsa, u faollashtirilishi va joriy vazifani bajarishi mumkin, masalan, uning ustuvorligi yuqoriroq bo'lsa),
olishga urinib ko'ring (agar semafor bo'sh bo'lsa, uni oling, aks holda vazifani kutilayotgan holatga qo'ymasdan semafor bandi ko'rsatkichini qaytaring; vazifa so'ralgan resurssiz davom etishi mumkin bo'lsa, masalan, boshqa resursdan foydalanish mumkin bo'lsa ishlatiladi) .
Bitta semaforni bir nechta vazifalar kutishi mumkin, shuning uchun tizim semaforda kutayotgan vazifalar navbatini tashkil qiladi. Bu navbat turli xil ustuvorliklarga ega bo'lgan vazifalarni o'z ichiga olishi mumkin, shuning uchun navbatdagi vazifalarni faollashtirish tartibini nazorat qilish mumkin bo'lishi kerak (birinchi kelgan birinchi chiqadi (FIFO) yoki birinchi kelgan birinchi chiqadi, dan boshlab eng yuqori ustuvorlik (bunday navbat ustuvor navbat deb ataladi)).
Semaforlarni hisoblash bir vaqtning o'zida cheklangan miqdordagi vazifalar tomonidan ishlatilishi mumkin bo'lgan resursni himoya qilish uchun o'zaro istisno mexanizmidir (masalan, 4 kanalli I/U portidan to'rtta vazifadan ko'p bo'lmagan foydalanish mumkin). har biri bitta kanalni talab qiladi). Semafor - har safar resurs berilganda kamaytiriladigan va har qaytib kelganida ko'paytiriladigan hisoblagich. Hisoblagich belgilangan diapazonda bo'lmasa (boshqa resurs yo'q), keyin resurs so'ralganda, vazifa kutilayotgan holatga o'tadi. Semaforda quyidagi elementar amallar aniqlanadi:
semadan k tani oling, ya'ni. hisoblagichni k ga kamaytiring (agar hisoblagichda k bo'lmasa , u holda bu operatsiya vazifani semaforda kamida k borligini kutish holatiga qo'yadi ),
birliklarga qaytish , ya'ni. hisoblagichni k ga oshiring (agar semaforni boshqa vazifa kutayotgan bo'lsa va unga k dan ortiq birlik kerak bo'lmasa, u faollashtirilishi mumkin va joriy vazifani oldindan bajarishi mumkin, masalan, uning ustuvorligi yuqoriroq bo'lsa),
semafordan k bittani olishga harakat qiling (agar sema bo'sh bo'lsa, undan k bittasini oling, aks holda vazifani kutish holatiga o'tkazmasdan semafor band ko'rsatkichini qaytaring).
Ikkilik semaforlarda bo'lgani kabi, tizim semaforda kutayotgan vazifalarning ustuvor navbatini tashkil qiladi.
Do'stlaringiz bilan baham: |