logo

Yuqori darajali tilda yozilgan programmalarda uzulishlardan foydalanish

Yuklangan vaqt:

08.08.2023

Ko'chirishlar soni:

0

Hajmi:

34.3125 KB
“ 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 tanlangan   jarayon   uchun   barcha   registr   qiymatlarini   xotiradan   o'qish   va
tiklash   orqali   tiklanishi   mumkin.Davom   etish   uchun   tanlangan   jarayon
toʻxtatilgan   nuqtada   davom   ettirilishi   kerak.   Ushbu   ko'rsatmaning   manzili
uzilish   sodir   bo'lganda   mashina   tomonidan   saqlangan,   shuning   uchun   bu
manzilni   olish   va   protsessorni   ushbu   manzilda   ishlashda   davom   etishi   kerak.
Ustuvor   uzilishlar
biz  Uzilish  tomonidan  boshlangan  I/U  orqasidagi  kontseptsiyani muhokama
qildik.   Xulosa   qilib   aytadigan   bo'lsak,   kiritish/chiqarish   qurilmalari   kiritish-
chiqarish   uzatishga   tayyor   bo'lganda,   ular   kompyuterga   uzilish   so'rovi
signalini yaratadilar. Protsessor bu signalni qabul qiladi, u bajarayotgan joriy
ko'rsatmalarni   to'xtatadi   va   keyin   ushbu   uzatish   so'roviga   xizmat   ko'rsatish
uchun   oldinga   siljiydi.   Ammo   bir   vaqtning   o'zida   bir   nechta   qurilmalar
uzilishlarni   yaratsa   nima   bo'ladi.   Bunday   holda,   birinchi   navbatda   qaysi
uzilishga xizmat ko'rsatish kerakligini hal qilishning bir usuli bor. Boshqacha
qilib   aytganda,   biz   tizimli   uzilishlarga   xizmat   ko'rsatish   uchun   barcha
qurilmalar   orasida   ustuvorlikni   belgilashimiz   kerak.   Bir   vaqtning   o'zida
so'rovlar bo'lsa, qaysi biriga birinchi bo'lib xizmat ko'rsatish kerakligini bilish
uchun qurilmalar o'rtasidagi ustuvorlikni aniqlash tushunchasi ustuvor uzilish
tizimi   deb   ataladi.   Bu   dasturiy   ta'minot   yoki   apparat   usullari   bilan   amalga
oshirilishi   mumkin.
DASTURIY   USUL
Bu usulda barcha uzilishlarga bir xil xizmat ko'rsatish dasturiga tarmoqlanish
orqali  xizmat   ko'rsatiladi.   Keyin   ushbu  dastur  har   bir   qurilma   bilan  uzilishni
yaratuvchi   yoki   yo'qligini   tekshiradi.   Tekshirish   tartibi   belgilanishi   kerak
bo'lgan   ustuvorlik   bilan   belgilanadi.   Avval   eng   yuqori   ustuvorlikka   ega
bo'lgan   qurilma   tekshiriladi,   so'ngra   qurilmalar   ustuvorlikning   kamayishi
tartibida tekshiriladi.   Agar   qurilma   uzilishni   yaratayotgani   tekshirilsa,   ushbu   qurilma
uchun   maxsus   ishlaydigan   boshqa   xizmat   dasturi   chaqiriladi.   Struktura
shunday   ko'rinadi   -
if (device[0].flag)  
device[0].service();  
else if (device[1].flag)
device[1].service();
.
.
.
.
.
.
else   //   xatoni ko'tarish
Ushbu usulning asosiy kamchiligi shundaki, u juda sekin. Buni bartaraf qilish
uchun   biz   apparat   yechimidan   foydalanishimiz   mumkin,   ulardan   biri
qurilmalarni   ketma-ket   ulashni   o'z   ichiga   oladi.   Bu   Daisy-zanjir   usuli   deb
ataladi.
Uskuna   Usuli
Daisy   zanjiri   usuli   uzilishni   so'rashi   mumkin   bo'lgan   barcha   qurilmalarni
ketma-ket   ulashni   o'z   ichiga   oladi. Ushbu   konfiguratsiya   qurilmalarning ustuvorligi   bilan   boshqariladi.   Birinchi   o'ringa   ega   bo'lgan   qurilma,   keyin
ikkinchi   o'rinli   qurilma   va   hokazo.   Berilgan   rasmda   ushbu   tartib
tasvirlangan.      ISHLASH:   Barcha   qurilmalar   uchun   umumiy   bo‘lgan   va
protsessorga   kiradigan   uzilish   so‘rovi   qatori mavjud.
Hech   qanday   uzilish   kutilmasa,   chiziq   YUQORI   holatda   bo'ladi.   Ammo   agar
qurilmalardan   birortasi   uzilishni   ko'tarsa,   u   uzilish   so'rovi   qatorini   LOW
holatiga   qo'yadi.   Protsessor   chiziqdan   ushbu   uzilish   so'rovini   tan   oladi   va
so'rovga   javoban   uzilishni   tasdiqlash   liniyasini   yoqadi.   Bu   signal   1-
qurilmaning   PI   (Priority   in)   kirishida   qabul   qilinadi.   Agar   qurilma   uzilishni
so'ramagan   bo'lsa,   u   bu   signalni   PO   (priority   out)   chiqishi   orqali   keyingi
qurilmaga   uzatadi. (PI =   1   va   PO   =   1)
Biroq,   agar   qurilma   uzilishni   talab   qilgan   bo'lsa,   (PI   =1   &   PO   =   0)
Qurilma   tasdiqlash   signalini   iste'mol   qiladi   va   PO   (priority   out)   chiqishiga   0
qo'yish   orqali   undan   keyingi   foydalanishni   bloklaydi.   Keyin   qurilma   uzilish
vektor   manzilini   (VAD)   protsessorning   ma'lumotlar   shinasiga   joylashtirishni
davom ettiradi. Qurilma uzilishga e'tibor berilganligini bildirish uchun uzilish
so'rovi signalini YUQORI holatga qo'yadi. Agar qurilma PI kirishida 0 ni olsa, u
boshqa   qurilmalarga   signal   bloklanganligini   bildirish   uchun   PO   chiqishida   0
hosil   qiladi.   (PI =   0 &   PO   =   0)
Shunday qilib, PI = 1 va PO = 0 bo'lgan qurilma uzilishni talab qiladigan eng
yuqori ustuvor qurilmadir. Shuning uchun, zanjirli tartib orqali biz eng yuqori
ustuvor   uzilish   birinchi   navbatda   xizmat   ko'rsatilishini   ta'minladik   va
ierarxiyani   o'rnatdik.   Qurilma   birinchi   qurilmadan   qanchalik   uzoqda   bo'lsa,
uning   ustuvorligi shunchalik past   bo'ladi.
ISR - bu uzilish sodir bo'lganda protsessorga nima qilish kerakligini aytadigan
dastur.   ISR   bajarilgandan   so'ng,   boshqaruv   to'xtatilgan   asosiy   rejimga qaytadi.   8086   mikroprotsessorida   mikroprotsessor   uzilishga   duch   kelganda
quyidagi   vazifalar   bajariladi:   Bayroq   registrining   qiymati   stekga   suriladi.   Bu
shuni   anglatadiki,   birinchi   navbatda   SP   (Stack   Pointer)   qiymati   ikkiga
kamayadi,   keyin   bayroq   registrining   qiymati   stek   segmentining   xotira
manziliga   suriladi.   CS   ning   boshlang'ich   xotira   manzilining   qiymati   (kod
segmenti)   stekga   suriladi.
IP   qiymati   (Ko'rsatma   ko'rsatgichi)   stekga   suriladi.   IP   so'z   joylashuvidan
yuklanadi   (uzilish   turi)   *   04.CS   quyidagi   so'z   joylashuvidan   yuklanadi.Uzilish
va   Trap bayroqlari 0 ga qaytariladi.8086 mikroprotsessorida mavjud bo'lgan
har   xil   turdagi uzilishlar   quyidagicha   berilgan
Dasturiy   ta'minot   uzilishlari   -   bu   uzilishlarni   yaratish   uchun   dasturga
kiritilgan   ko'rsatmalar.   8086   mikroprotsessorida   256   ta   dasturiy   uzilishlar
mavjud.   Yo'riqnomalar   INT   tipidagi   formatda   bo'lib,   uning   turi   00   dan   FF
gacha.   Boshlanish   manzili   00000   H   dan   003FF   H   gacha.   Bular   2   baytli
ko'rsatmalardir.   IP   *   04   H   turidan   yuklanadi   va   CS   (tur   *   04)   +   02   H
tomonidan   berilgan   quyidagi   manzildan   yuklanadi.   Ba'zi   muhim   dasturiy
uzilishlar:
TYPE   0   nolga   (0)   bo'linishga   mos   keladi.   TYPE   1   dasturni   disk   raskadrovka
qilish uchun bir bosqichli bajarish uchun ishlatiladi.TYPE 2 NMI ni ifodalaydi
va   elektr   uzilishi   sharoitida   qo'llaniladi.TYPE   3   uzilish   nuqtasi   uzilishini
ifodalaydi.TYPE   4   -   to'lib toshgan   uzilish.
Dasturiy   ta'minot   uzilishlari
Dasturiy   ta'minotni   uzilishlar   -   bu   dasturchi   foydalanishi   mumkin
bo'lgan   protseduralar   to'plami.   Ushbu   protseduralar   BIOS   va   DOS
yadrolarida   joylashgan.   DOS   holatida   kod   DOS   yuklangan   kompyuterning
an'anaviy   xotirasida   joylashgan.   BIOS   holatida   ba'zi   kodlar   an'anaviy
xotirada, ba'zilari   esa   yuqori   xotirada   joylashgan.   Yuqori   xotira   kodi   -   bu
kompyuterga o'rnatilgan   har   bir   kengaytma   kartasida   joylashgan   ROM
kengaytmalari.Dasturiy   ta'minot   uzilishlari   odatda   dasturchiga   bir   nechta
funksiyalarni   beradi.   Qaysi   funksiyadan   foydalanishni   belgilash   uchun
uzilishlar odatda AH registrining qiymatini tekshiradi. Masalan, Video uzilishi
(10h)   AH=2 bo'lsa   kursor   o'rnini o'rnatadi.
Uskuna   uzilishlari
Uskuna   uzilishlari   -   bu   ma'lum   hodisalar   sodir   bo'lganda   protsessor
avtomatik   ravishda   chaqirishi   mumkin   bo'lgan   protseduralar   to'plami.
Bularni   dasturchi   chaqira   olmaydi   va   chaqirmasligi   kerak.   Uskuna  uzilishlari
BIOSning   bir   qismi   bo'lib,   xotiraning   o'xshash   joylarida   joylashgan.   8086
protsessorida   bir   qator   jismoniy   kirishlar   mavjud   (mikrochip   pinlari   orqali),
ular   Uzilish   Request   Lines   (IRQs)   deb   ataladi.   Bir   qator   apparat   qurilmalari
muntazam   fon   xizmatini   talab   qiladi   va   ularning   har   biriga   IRQ   raqami
ajratiladi (masalan,   sichqoncha   porti   IRQ4   dan   foydalanadi).   IRQ   raqamlari   0
dan   15   gacha.   Qurilmaga xizmat ko'rsatish kerak bo'lganda, u o'zining noyob
IRQ   liniyasida   protsessorga   signal   yuboradi.   Protsessor,   o'z   navbatida,   u
boshqa   uzilishga   xizmat   qilmasa,   o'zi   qilayotgan   hamma   narsani   to'xtatadi
(shuning   uchun   so'z,   uzilish),   va   tegishli   apparat   uzilish   protsedurasini
chaqiradi.   Masalan,   klaviaturani   ko'rib   chiqing.   Tugmachani   bosganingizda,
klaviatura   interfeysi   apparati   protsessorga   uzilish   signalini   (IRQ1)   yuboradi.
Shundan   so'ng   protsessor   o'zi   qilayotgan   hamma   narsani   to'xtatadi   va
tegishli klaviatura   apparatini   uzilish   tartibini   ishga   tushiradi   -   uzilish   9.   Uzilish
9   apparat   buyruqlari   (IN/OUT)   yordamida   klaviaturada   tekshiriladi   va   qaysi
tugma   bosilganligini   topadi.   Keyin   u   ushbu   kalitni   BIOS   tomonidan
belgilangan   klaviatura   buferida   saqlaydi.   IRET   bayonoti   bilan   uzilish
tugagach,   boshqaruv bajarilayotgan dasturga qaytariladi. Foydalanuvchi har gal tugma bosilganda
amalga oshirilayotgan fonda ishlov berishdan mutlaqo bexabar. Endi, dastur
kiritishni   talab   qilganda,   klaviatura   umuman   tekshirilmaydi.   Buning   o'rniga,
xotiradagi   klaviatura   buferi   qidiriladi   va   u   erda   kalit   bo'lsa,   u   qaytariladi.
Uskuna uzilishlari, shuningdek, floppi, qattiq disk, ketma-ket portlar, parallel
portlar   va   davriy   yoki   boshqa   bilvosita   xizmat   ko'rsatishni   talab   qiladigan
boshqa   qurilmalarga   xizmat   ko'rsatish   uchun   ishlatiladi.   Uskuna   uzilishlari
standart assembler tili (yoki boshqa yuqori darajali til) dasturlarini yozuvchi
shaxs   uchun   unchalik   foydali   emas;   ularning   asosiy   qo'llanilishi   drayverlar,
tsrs   va   boshqa   past   darajadagi   dasturlarni   yozishda.   Har   qanday   bunday
uzilishga   xizmat   ko'rsatadigan   protsessual   kod   Uzilish   Service   Routine   (ISR)
deb   ataladi.
Uskuna   uzilishlarining   uch   turi   mavjud:
Maskali   uzilishlar
Protsessorda ichki uzilish maskalari registri apparat so'rovlarini tanlab
yoqadi   va   o'chiradi.   Niqob   biti   o'rnatilganda,   uzilish   yoqiladi.   Aniq   bo'lsa,
uzilish   o'chiriladi.   Niqob   ta'sir   qiladigan   signallar   maskalanadigan
uzilishlardir.
Niqobsiz   uzilishlar
Ba'zi hollarda uzilish niqobini o'chirib bo'lmaydi, shuning uchun u ba'zi
uzilish   signallariga   ta'sir   qilmaydi.   Bular   maskalanib   bo'lmaydigan   uzilishlar
va   odatda   e'tibordan   chetda   qoldirib   bo'lmaydigan   muhim   voqealardir.
Soxta   uzilishlar
Xayoliy uzilish yoki   arvoh uzilish sifatida ham
tanilgan,   soxta   uzilish   hech   qanday   manba   topilmaydigan   apparat
uzilishining   bir   turidir.   Ushbu   uzilishlarni   tizim   noto'g'ri   ishlayotganligini
aniqlash   qiyin.   Agar   ISR   bunday   uzilishlar   ehtimolini   hisobga   olmasa,   bu
tizimning   blokirovkasiga   olib   kelishi mumkin   . Uzilish   usullarining   turlari
Uzilishni   ishga   tushirish   usullari   yoki   modullarining   ikki   turi   mavjud   :
Darajali   tetiklanuvchi   uzilishlar
Ushbu uzilish moduli uzilish signalini ma'lum bir faol mantiq darajasida
ushlab, uzilish hosil qiladi . Qurilmaga xizmat ko'rsatgandan so'ng, protsessor
unga   buyruq   bergandan   so'ng,   signal   bekor   qilinadi.   Protsessor   har   bir
buyruq   siklida   uzilish   signalini   namuna   oladi   va   uni   namuna   olish   jarayonida
kiritilganda   taniydi.   Qurilmaga   xizmat   ko'rsatgandan   so'ng,   protsessor
ISRdan   chiqishdan   oldin   boshqa   qurilmalarga   xizmat   ko'rsatishi
mumkin.Darajada   tetiklanadigan   uzilishlar   bir   nechta   qurilmalarga   simli   OR
ulanishlari   yordamida   umumiy   signalni   almashish   imkonini   beradi   .   Biroq,
ular   bilan   ishlash   proshivka uchun   qiyin bo'lishi mumkin.
Chetdan   tetiklanadigan   uzilishlar
Ushbu modul uzilish manbasining tasdiqlovchi chetini aniqlagandagina
uzilish  hosil  qiladi.  Bu  erda  uzilish  haqida signal bermoqchi  bo'lgan qurilma
uzilish   manbai   darajasini   o'zgartiradigan   impuls   hosil   qiladi.   Kenardan
tetiklanadigan   uzilishlar   uzilishlarni   boshqarishning   yanada   moslashuvchan
usulini   ta'minlaydi.   Uzilish   manbai   qanday   harakat   qilishidan   qat'i   nazar,
ularga   darhol   xizmat   ko'rsatish   mumkin.   Bundan   tashqari,   ular   proshivka
kodining   murakkabligini   kamaytiradi   va   proshivka   uchun   zarur   bo'lgan
shartlar   sonini  kamaytiradi.   Kamchilik   shundaki,   agar   pulsni  aniqlash   uchun
juda   qisqa   bo'lsa,   uzilishni   aniqlash   va   xizmat   ko'rsatish   uchun   maxsus
apparat   talab   qilinishi mumkin.
Yozish   uzilish   ishlovchilari Tegishli   uskunada   MicroPython   Python-da   uzilishlar   ishlov
beruvchilarini  yozish imkoniyatini  taklif  etadi. Interrupt  ishlov  beruvchilari  -
shuningdek,   uzilish   xizmati   tartiblari   (ISR's)   sifatida   ham   tanilgan   -   qayta
qo'ng'iroq   qilish   funktsiyalari   sifatida   aniqlanadi.   Ular   taymerni   ishga
tushirish   yoki   pindagi   kuchlanish   o'zgarishi   kabi   hodisaga   javoban   amalga
oshiriladi.   Bunday   hodisalar   dastur   kodini   bajarishning   istalgan   nuqtasida
sodir bo'lishi   mumkin. Bu MicroPython tiliga xos bo'lgan muhim oqibatlarga
olib   keladi.   Boshqalar   esa   real   vaqtdagi   hodisalarga   javob   berishga   qodir
bo'lgan   barcha   tizimlar   uchun   umumiydir.   Ushbu   hujjat   birinchi   navbatda
tilga   oid   masalalarni o'z ichiga oladi, so'ngra uni yangi bo'lganlar uchun real
vaqtda   dasturlash   haqida   qisqacha   kirish.
Ushbu kirishda "sekin" yoki "iloji boricha tezroq" kabi noaniq atamalar
qo'llaniladi.   Bu   ataylab   qilingan,   chunki   tezlik   dasturga   bog'liq.   ISR   uchun
qabul   qilinadigan   muddatlar   uzilishlar   sodir   bo'lish   tezligiga,   asosiy
dasturning   tabiatiga   va   boshqa   bir   vaqtda   sodir   bo'ladigan   hodisalarning
mavjudligiga   bog'liq.   Kodni   iloji   boricha   qisqa   va   sodda   saqlang.   Xotirani
ajratishdan   saqlaning:   roʻyxatlarga   qoʻshish   yoki   lugʻatlarga   qoʻshish,
suzuvchi   nuqta   yoʻq.   micropython.scheduleYuqoridagi   cheklov   atrofida
ishlash   uchun   foydalanishni   o'ylab   ko'ring   .   ISR   bir   nechta   baytni   qaytarsa,
oldindan   ajratilgan bytearray. Agar ISR va asosiy dastur o'rtasida bir nechta
butun   sonlar   taqsimlanishi   kerak   bo'lsa,   massivni   (   array.array)   ko'rib
chiqing.   Ma'lumotlar   asosiy   dastur   va   ISR   o'rtasida   almashinadigan   bo'lsa,
asosiy   dasturdagi   ma'lumotlarga   kirishdan   oldin   uzilishlarni   o'chirib   qo'yish
va   ularni   darhol   keyin   qayta   yoqish   haqida   o'ylab   ko'ring   (Muhim   bo'limlarga
qarang). Favqulodda   istisno   buferini   ajrating   (pastga   qarang).   MicroPython
muammolari Favqulodda   istisno   buferi
Agar   ISRda   xatolik   yuzaga   kelsa,   MicroPython   bu   maqsad   uchun
maxsus   bufer   yaratilmasa,   xato   hisobotini   yarata   olmaydi.   Agar   quyidagi   kod
uzilishlar   yordamida   har   qanday   dasturga   kiritilgan   bo'lsa,   disk   raskadrovka
soddalashtiriladi.

“ 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