Interrupt
Kesme
- Okunuşu
- intırapt
Kısaca
Interrupt, CPU'ya bir olayın acil ilgi gerektirdiğini bildiren sinyaldir; CPU mevcut işini duraklatır ve kernel'daki özel bir işleyiciyi çalıştırır.
Interrupt (kesme) nedir?
Interrupt, donanım aygıtlarının ve yazılımın CPU'ya bir şeyin olduğunu söyleme yoludur: bir tuşa basıldı, bir ağ paketi geldi, bir disk okumayı bitirdi ya da bir zamanlayıcı doldu. Interrupt'lar olmasaydı CPU'nun bir şeye ihtiyaçları olup olmadığını görmek için her aygıtı sürekli kontrol etmesi gerekirdi; bu da zaman ve güç israfıdır.
Bir interrupt geldiğinde CPU mevcut komutunu bitirir, yaptığı işin durumunu kaydeder, kernel moduna geçer ve kernel'ın kurduğu bir interrupt tablosunda eşleşen işleyiciyi (handler) arar. Interrupt service routine (kesme hizmet yordamı) denen işleyici olayı ele alır, ardından CPU kaydedilen durumu geri yükler ve kaldığı yerden devam eder. İşleyicilerin çok hızlı olması gerekir; bu yüzden kernel'lar işi genellikle böler: kısa bir ilk kısım aygıtı onaylar, geri kalanı biraz sonra çalışmak üzere ertelenir. Interrupt'lar aygıtlardan (donanım kesmeleri ya da IRQ'lar), zamanlayıcının çalışan görevleri kesmesini sağlayan bir zamanlayıcıdan ve bir komutun sayfa hatası ya da sıfıra bölme gibi bir istisnaya yol açtığı CPU'nun kendisinden gelir.
Interrupt bir kapı zili gibi çalışır. Ziyaretçi var mı diye her dakika ön kapıya yürümezsiniz; zil çalana kadar yemek yapmaya devam eder, zile bakar ve tarife dönersiniz. Interrupt'lar klavye ve farenin anında hissettirmesini, işletim sisteminin CPU'yu adil paylaştırmasını ve boştaki işlemcilerin gerçek iş gelene kadar uyumasını sağlar.
Interrupt'lar çoğu zaman yazılımın bildirim beklemek yerine bir aygıtı tekrar tekrar kontrol ettiği polling ile karşılaştırılır; çok hızlı ağ kartları bazen yoğun yük altında polling'e geçer, çünkü milyonlarca interrupt'ı işlemek kontrol etmekten daha pahalıdır. Interrupt aynı zamanda bir Unix signal'ından da farklıdır: interrupt'lar CPU'ya iletilir ve kernel tarafından işlenir; signal'lar ise kernel'ın bir kullanıcı process'ine ilettiği bildirimlerdir. Programlama dillerindeki try ve catch ile ele alınan istisnalar (exception) ayrı, dil düzeyinde bir mekanizmadır.
Önemli noktalar
- Interrupt, CPU'nun acil bir olayı ele almak için mevcut işini duraklatmasını sağlar.
- Kernel eşleşen interrupt işleyicisini çalıştırır ve ardından kesilen işe devam eder.
- Donanım aygıtları, zamanlayıcılar ve CPU istisnalarının hepsi interrupt yükseltebilir.
- Zamanlayıcı interrupt'ları kesintili CPU zamanlamasını mümkün kılar.
- Interrupt'lar, aygıtları sürekli yoklamanın (polling) israfından kaçınır.
Örnek
# How many interrupts each CPU core has handled, per device
head -n 10 /proc/interrupts
# Interrupts ("in") and context switches ("cs") per second, 5 samples
vmstat 1 5Sık sorulan sorular
Interrupt ile polling arasındaki fark nedir?
Polling'de CPU bir aygıta ilgiye ihtiyacı olup olmadığını tekrar tekrar sorar. Interrupt'larda ise aygıt CPU'yu yalnızca bir şey olduğunda bilgilendirir; bu genellikle zaman ve güç tasarrufu sağlar.
IRQ nedir?
IRQ, interrupt request (kesme isteği) demektir; bir donanım aygıtının CPU'nun ilgisini istemek için gönderdiği sinyaldir. Her aygıta veya aygıt kuyruğuna bir IRQ numarası atanır; böylece kernel hangi işleyiciyi çalıştıracağını bilir.
Interrupt handler nedir?
Interrupt handler ya da interrupt service routine, belirli bir interrupt'a karşılık çalışan kernel ya da sürücü kodudur. Hızlı bitmesi gerekir; bu yüzden daha uzun işler genellikle sonradan çalışmak üzere ertelenir.
İlgili sayfalar
- Kernelİşletim Sistemleri, s. 17Kernel, işletim sisteminin CPU'yu, belleği ve donanım aygıtlarını yöneten ve programların bu kaynaklara nasıl eriştiğini denetleyen çekirdek bölümüdür.
- CPU Zamanlamaİşletim Sistemleri, s. 5CPU zamanlama, işletim sisteminin her CPU çekirdeğinde hangi hazır process ya da thread'in ne kadar çalışacağına karar vermesidir; işlemci adil paylaşılır.
- Context Switchİşletim Sistemleri, s. 2Context switch, işletim sisteminin çalışan thread veya process'in durumunu kaydedip CPU'yu kullanabilmesi için başka birinin durumunu geri yüklemesidir.
- Device Driverİşletim Sistemleri, s. 8Device driver, işletim sisteminin belirli bir donanımı denetlemesini sağlayan ve genel işletim sistemi isteklerini aygıta özgü komutlara çeviren yazılımdır.
- Unix Signalİşletim Sistemleri, s. 36Unix signal, kernel'ın bir process'e durdurma isteği, hata ya da dolan bir zamanlayıcı gibi bir olayı bildirmek için ilettiği kısa ve asenkron bir bildirimdir.
- System Callİşletim Sistemleri, s. 32System call, bir programın işletim sistemi kernel'ından bir dosyayı okumak ya da process başlatmak gibi ayrıcalıklı bir işlem yapmasını istediği çağrıdır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin