Interrupt handler — apparat yoki protsessor uzilishi yuz berganda boshqaruvni qabul qilib, hodisaga dastlabki ishlov beradigan yadro funksiyasidir. Qurilma ma’lumot kelgani, amal tugagani yoki xato sodir bo‘lganini interrupt orqali bildiradi. Handler joriy kodni vaqtincha to‘xtatadi, zarur holatni qayd etadi va keyin bajarishni davom ettirishga sharoit yaratadi.
Uzilish ketma-ketligi
Protsessor interruptni qabul qilganda joriy buyruq oqimining minimal kontekstini saqlaydi, imtiyozli rejimga o‘tadi va interrupt vector jadvalidan mos handler manzilini topadi. Handler qurilma registrini o‘qishi, uzilish sababini aniqlashi va kontrollyorga hodisa qabul qilinganini bildirishi mumkin. Yakunda maxsus qaytish buyrug‘i oldingi kontekstni tiklaydi.
Maskalanadigan interruptlar kritik vaqt ichida vaqtincha kechiktirilishi mumkin. Non-maskable interrupt odatda jiddiy apparat holati uchun ajratiladi va oddiy yo‘l bilan o‘chirib bo‘lmaydi. Ustuvorlik yuqori darajadagi uzilishning past darajadagi ishlov berishni vaqtincha to‘xtatishiga imkon berishi mumkin.
Yuqori va quyi qism
Handlerning tez bajariladigan qismi top half deb ataladi. U hodisani tasdiqlaydi, zarur ma’lumotni buferga oladi va uzoq ishni keyinga rejalashtiradi. Tarmoq paketini to‘liq protokol stekida qayta ishlash yoki disk operatsiyasini yakunlash kabi og‘ir vazifa bottom half, softirq, tasklet yoki worker oqimida bajariladi.
Bu ajratish interruptlar o‘chirilgan yoki cheklangan vaqtni kamaytiradi. Handler ichida uxlash, bloklovchi qulf olish yoki sekin I/O bajarish ko‘pincha taqiqlanadi, chunki u boshqa uzilishlar va rejalashtirishni kechiktiradi. Qaysi amallar mumkinligi operatsion tizim va kontekstga bog‘liq.
Bir vaqtdalik
Interrupt istalgan paytda umumiy ma’lumotni o‘zgartirishi mumkin. Oddiy dastur kodi bilan handler orasidagi holat atomar operatsiya, spinlock yoki interruptni lokal o‘chirish orqali himoyalanadi. Noto‘g‘ri sinxronizatsiya yo‘qolgan hodisa, buzilgan navbat yoki deadlock keltirib chiqaradi. Ko‘p yadroli tizimda handler boshqa yadrodagi kod bilan ham raqobatlashadi.
Memory barrier qurilma registrlari va xotira yozuvlari kerakli tartibda ko‘rinishini ta’minlash uchun zarur bo‘lishi mumkin. volatile bunday apparat va CPU tartib kafolatlarini mustaqil bermaydi; platforma APIlari ishlatiladi.
Kechikish va diagnostika
Interrupt latency hodisa kelishi bilan handler boshlanishi orasidagi vaqt, handler duration esa uning band qilgan vaqtidir. Real vaqt tizimida eng yomon qiymat muhim. Interrupt storm qurilma yoki noto‘g‘ri tasdiqlash sabab juda ko‘p uzilish hosil qilib, CPUni band qilishi mumkin.
Monitoring uzilishlar soni, yadro bo‘yicha taqsimot, handler va deferred work vaqtini ko‘rsatadi. Muammoni tuzatishda interrupt coalescing, polling rejimi, affinity va driver xatosi tekshiriladi. Hodisani shunchaki o‘chirish qurilma ma’lumotini yo‘qotishi mumkin.
Shared interrupt va qurilma holati
Bir IRQ liniyasini bir nechta qurilma bo‘lishishi mumkin. Handler o‘z qurilmasi registrini tekshirib, hodisa unga tegishli bo‘lmasa tez qaytadi. Uzilish sababini tozalamaslik liniyaning darhol yana ko‘tarilishiga va interrupt stormga olib keladi. Edge-triggered va level-triggered rejimlarda tasdiqlash tartibi farq qiladi: level signal sabab bartaraf bo‘lguncha faol qoladi. Driver qurilma olib tashlanayotganda yangi interruptni o‘chiradi, bajarilayotgan handler tugashini kutadi va shundan keyin uning xotirasini bo‘shatadi. Aks holda kech kelgan interrupt ozod qilingan struktura bilan ishlashi mumkin.
Handler statistikasi normal qurilma yukida kutiladigan tezlik bilan solishtiriladi. Noma’lum IRQ yoki doimiy qayta kirish apparat, firmware va driver qatlamlari bo‘yicha tekshiriladi. O‘lchovning o‘zi handler vaqtini sezilarli oshirmasligi uchun tracing cheklangan muddatda yoqiladi.
Bog‘liq tushunchalar
Interrupt, Interrupt vector, Device driver, Softirq, Spinlock, Interrupt latency