Yuqori darajali tilda yozilgan programmalarda uzulishlardan foydalanish
“ Yuqori darajali tilda yozilgan programmalarda uzulishlardan foydalanish ” Reja: 1. Uzilishlar 2. Uskunaviy uzilishlar 3. Uzilishlar va istisnolar 4. Uzilish usullarining turlari
Uzilish - bu jarayon yoki hodisaga zudlik bilan e'tibor berish kerak bo'lganda apparat yoki dasturiy ta'minot tomonidan chiqariladigan signal. U protsessorni joriy ish jarayonining uzilishini talab qiluvchi yuqori ustuvor jarayon haqida ogohlantiradi. Kirish/chiqarish qurilmalarida avtobusni boshqarish liniyalaridan biri shu maqsadda ajratilgan bo'lib, u Uzilish Service Ruutine (ISR) deb ataladi.Aytaylik, i jarayonda qurilma uzilishni ko‘targanda, protsessor birinchi navbatda i ko‘rsatmasini bajarishni yakunlaydi. Keyin u ISR ning birinchi buyrug'i manzili bilan Dastur hisoblagichini (PC) yuklaydi. Dastur hisoblagichini manzil bilan yuklashdan oldin, uzilgan ko'rsatmaning manzili vaqtinchalik joyga ko'chiriladi. Shuning uchun, uzilish bilan ishlov berilgandan so'ng, protsessor i+1 jarayonini davom ettirishi mumkin. Protsessor uzilishlar bilan shug'ullanayotganda, u uzilish so'rovi signalini yuborishni to'xtatishi uchun uning so'rovi tan olinganligi haqida qurilmaga xabar berishi kerak. Shuningdek, registrlarni to'xtatilgan jarayonni kelajakda qayta tiklash uchun saqlash, uzilishni qabul qilish vaqti va ISRning bajarilishini boshlash o'rtasidagi kechikishni oshiradi. Bunga Uzilish Latency deyiladi. Uzilish - bu mikroprotsessorni boshqa vazifa ustida ishlashni vaqtincha to'xtatib, keyin avvalgi vazifasiga qaytish sharti. Uzilish - bu CPU e'tiborini talab qiladigan hodisa yoki signal. Ushbu to'xtatib turish periferik qurilmalarga mikroprotsessorga kirish imkonini beradi. Har doim uzilish sodir bo'lganda, protsessor joriy ko'rsatmani bajaradi va Uzilish Service Routine (ISR) yoki Uzilish Handlerni amalga oshirishni boshlaydi. Uskuna uzilishlari: Uskuna uzilishida barcha qurilmalar uzilish so'rovi liniyasiga ulanadi. Barcha n ta qurilmalar uchun bitta so'rov liniyasi ishlatiladi. Uzilishni so'rash uchun qurilma o'zining bog'langan kalitini yopadi. Qurilma uzilishni so'raganda, INT
R qiymati alohida qurilmalardan so'rovlarning mantiqiy qiymati hisoblanadi. IRQ bilan ishlashda ishtirok etadigan voqealar ketma- ketligi: Qurilmalar IRQni oshiradi. Protsessor hozirda bajarilayotgan dasturni to'xtatadi.Qurilmaga uning so'rovi tan olinganligi haqida xabar beriladi va qurilma so'rov signalini o'chiradi.Talab qilingan harakat bajariladi. Uzilish yoqilgan va to'xtatilgan dastur davom ettiriladi. Bir nechta qurilmalar bilan ishlash: Agar bir nechta qurilmalar uzilish so'rovi signalini ko'tarsa, qaysi qurilma birinchi bo'lib ko'rib chiqilishini hal qilish uchun qo'shimcha ma'lumot kerak bo'ladi. Qaysi qurilmani tanlashni tanlash uchun quyidagi usullar qo'llaniladi: so'rov, vektorli uzilishlar va uzilishni joylashtirish. Bular quyida tushuntiriladi. Uskuna uzilishlari - bu mikroprotsessorga ma'lum bir pin orqali signal yuborish orqali har qanday periferik qurilma tomonidan yuzaga keladigan uzilishlar. 8086 mikroprotsessorida ikkita apparat uzilishi mavjud. Ular: NMI (Non-maskable Uzilish): Bu bitta pinli maskalanmaydigan apparat uzilishi bo'lib, uni o'chirib bo'lmaydi. Bu 8086 mikroprotsessoridagi eng yuqori ustuvor uzilishdir. Amalga oshirilgandan so'ng, bu uzilish TYPE 2 uzilishini hosil qiladi. IP 00008 H so'z joyidan yuklanadi va CS 0000A H so'z joyidan yuklanadi.INT R (Uzilish Request): U bitta uzilish so'rovini taqdim etadi va I/U porti tomonidan faollashtiriladi. Ushbu uzilish maskalanishi yoki kechiktirilishi mumkin. Bu darajadagi tetiklanadigan uzilish. U har qanday uzilish turini qabul qilishi mumkin, shuning uchun IP va CS qiymati qabul qilingan uzilish turiga qarab o'zgaradi. So'rovli uzilish : So'rovda IRQ bit to'plamiga duch kelgan birinchi qurilma birinchi navbatda xizmat ko'rsatilishi kerak bo'lgan qurilmadir. Xuddi shunday xizmat ko'rsatish uchun tegishli ISR chaqiriladi. Amalga oshirish oson, lekin barcha qurilmalarning IRQ bitini so'roq qilish orqali ko'p vaqt behuda ketadi.
Vektorli uzilishlar: Vektorli uzilishlarda uzilishni talab qiluvchi qurilma avtobus orqali protsessorga maxsus kod yuborish orqali bevosita o'zini identifikatsiya qiladi. Bu protsessorga uzilishni yaratgan qurilmani aniqlash imkonini beradi. Maxsus kod ISR ning boshlang'ich manzili yoki ISR xotirada joylashgan joy bo'lishi mumkin va uzilish vektori deb ataladi. Uzilish Nesting: Ushbu usulda kiritish-chiqarish qurilmasi ustuvor tuzilmada tashkil etilgan. Shuning uchun, yuqoriroq ustuvor qurilmaning uzilish so'rovi tan olinadi, pastroq ustuvor qurilmaning so'rovi esa tan olinmaydi. Protsessor faqat ustunlikka ega qurilmalar/jarayonlardan uzilishlarni qabul qiladi. Protsessorlarning ustuvorligi PS ning bir necha bitlarida (Process Status Register) kodlangan. Uni PSga yozadigan dastur ko'rsatmalari orqali o'zgartirish mumkin. Protsessor faqat OS tartiblarini bajarayotganda nazorat ostida bo'ladi. U amaliy dasturlarni bajarishdan oldin foydalanuvchi rejimiga o'tadi. Uzilishlar va istisnolar Istisnolar va uzilishlar kutilmagan hodisalar bo'lib, ko'rsatmalarning normal bajarilishini buzadi (hozirda protsessor tomonidan bajarilmoqda). Istisno protsessor ichidan kutilmagan hodisadir. Uzilish - bu jarayondan tashqaridan kutilmagan hodisa. Istisno yoki uzilish sodir bo'lganda, uskuna istisnoga javoban harakatni bajaradigan kodni bajarishni boshlaydi. Ushbu harakat jarayonni to’xtatish, xato xabarini chiqarish, tashqi qurilma bilan aloqa qilish yoki ishga tushirish va protsessorni to'xtatish orqali butun kompyuter tizimini dahshatli tarzda buzishni o'z ichiga olishi mumkin. Ushbu harakat uchun mas'ul ko'rsatmalar operatsion tizim yadrosida joylashgan va bu amalni bajaradigan kod uzilishni qayta ishlash kodi deb ataladi. Endi biz ishlov beruvchi kodini operatsion tizimning pastki dasturi sifatida tasavvur qilishimiz
mumkin. Keyin, ishlov beruvchi kodi bajarilgandan so'ng, bajarish yoki uzilish sodir bo'lgan ko'rsatmadan keyin bajarishni davom ettirish mumkin bo'lishi mumkin. Istisno va uzilish bilan ishlov berish: Istisno yoki uzilish sodir bo'lganda, bajarish foydalanuvchi rejimidan istisno yoki uzilish ishlanadigan yadro rejimiga o'tadi. Batafsil ravishda istisno yoki uzilishlarni hal qilish uchun quyidagi amallarni bajarish kerak. Yadroga kirishda avvalo bajarilayotgan jarayonning konteksti (barcha CPU registrlarining qiymatlari) xotiraga saqlanishi kerak. Endi yadro uzilishni boshqarishga tayyor.Uzilish ishlovchisi hozirda bajarilayotgan jarayon bilan bir xil protsessordan foydalanadi. Uzilish ishlovchisiga kirishda uzilish ishlovchisi tomonidan foydalaniladigan barcha CPU registrlaridagi qiymatlar xotiraga saqlanishi kerak. Saqlangan registr qiymatlari keyinchalik jarayonni davom ettirishdan oldin tiklanishi mumkin.Ishlovchi bir necha sabablarga ko'ra chaqirilgan bo'lishi mumkin. Shunday qilib, ishlov beruvchi istisno yoki uzilish sababini aniqlashi kerak. Istisno yoki uzilishga nima sabab bo'lganligi haqidagi ma'lumot maxsus registrlarda yoki xotirada oldindan belgilangan manzillarda saqlanishi mumkin. Keyinchalik, istisno yoki uzilishga xizmat ko'rsatish kerak. Misol uchun, agar bu klaviatura uzilishi bo'lsa, u holda tugmachani bosishning kalit kodi olinadi va biror joyda saqlanadi yoki boshqa tegishli harakatlar amalga oshiriladi. Agar bu arifmetik ortiqcha istisno bo'lsa, xato xabari chop etilishi yoki dastur tugatilishi mumkin. Uzilish endi qayta ishlandi va yadro uzilishni qayta ishlashdan oldin bajarilgan jarayonni davom ettirishni yoki hozirda xotirada bo'lgan boshqa har qanday jarayonning bajarilishini davom ettirishni tanlashi mumkin.Endi CPU konteksti