Interrupt (Kesme) Nedir?
Interrupt, Türkçeye
‘kesme’ olarak çevrilmiştir. Bilgisayar işlemcisi yapısı gereği aynı anda
farklı işlemleri yürütememektedir. Bir işlemi gerçekleştirirken başka bir işlem
geldiğinde o işlemi kuyruğa alarak bekletir. Ancak bazen yürüttüğü işlemden
daha acil başka bir işlem gelebilmektedir.
Bu kimi zaman arka arkaya gerçekleştirilen bir I/O işlemi, kimi zaman
sıfıra bölme hatası, kimi zaman da başka bir işlem olabilmektedir. Bu gibi
işlemler geldiğinde işlemci yürütmekte olduğu işlemin durumunu kaydederek
askıya alır ve gelen acil işlemi yürütür. Bu işi tamamladıktan sonra bir önceki
işlemi kesme hizmeti yordamı (ISR) ile askıya alınan yerden alarak yapmaya
devam etmektedir.
Şekil 1. Interrupt meydana geldiğinde
işlemcide gerçekleşen olay
Interrupt Çeşitleri
Aynı anda birden fazla
işi gerçekleştirmek için kullanılan interruptların kaç çeşit olduğu farklı
kaynaklara göre değişkenlik göstermektedir. Bazı kaynaklarda iki çeşit
interrupt olduğu söylenmektedir. Bunlar:
- Donanım Kesintileri (Hardware
Interrupts)
- Yazılım Kesintileri (Software
Interrupts)
olarak geçmektedir.
Bazı kaynaklarda ise üç
çeşit interrupt olduğu söylenmektedir. Bunlar:
- İç
Kesmeler (Internal Interrupts)
- Dış
Kesmeler (External Interrupts)
- Yazılımsal
Kesmeler (Software Interrupts)
olarak belirtilmektedir.
Bu konuda kesin bir
durum belirtilmemiştir ancak yoğun olarak kullanılan iki türün olduğudur. Bu
yüzden bu yazıda donanım ve yazılım kesintileri olarak ikiye ayrılmış türler
incelenecektir.
Donanım Kesintileri (Hardware Interrupts)
Bu tür kesme işlemleri dışarıdan gelen sinyallere bağlı olan kesmedir. İnternet bağlantısı, fare, klavye, dokunmatik ekran, hard disk vb. donanımsal cihazlardan gelen bir kesme isteği olduğu zaman işlemci bu kesme isteğini değerlendirerek yaptığı işlemi askıya alıp bunu gerçekleştirir. Bu farenin konumunun değişmesi, bir klavye tuşuna basılması veya internet bağlantısının kesilmesi gibi bir istek olabilmektedir. Donanım kesintilerinin de iki çeşidi mevcuttur. Bunlar: Maskelenebilen (Maskable) ve Maskelenemeyen (Non-Maskable) olarak ikiye ayrılır.
- Maskelenebilir Kesmeler (Maskable Interrupts): İşlemci üzerinde bir kesme maskesi bulunmaktadır. Bu kesme maskesi gelen kesme işleminin gerçekleştirilmesine veya devre dışı bırakılmasına karar verebilmektedir. Gelen her kesme sinyali, maske yazmacında bulunan bir bit ile ilişkilidir ve bu bitler üzerinde yapılan değişikliklere göre kesme işleminin durumuna karar verilebilmektedir. Eğer kesme işlemi işlemci tarafından devre dışı bırakılabiliyor ve gerçekleştirilmeyebiliyorsa bu tür kesme işlemlerine maskelenebilir kesme adı verilmektedir.
- Maskelenemeyen Kesmeler (Non-Maskable Interrupts): Bu tür kesmeler işlemci tarafından devre dışı bırakılamayan ve gerçekleştirilmesi zorunlu olan kesmelerdir. Bu gibi durumlarda işlemcinin karar vermesini sağlayan bir bitlik kısım yanlış gelmiştir ve bu yüzden işlemci karar verememektedir. Buna örnek olarak elektriksel arızalar veya bilgisayarın kapatma tuşuna basılı tutularak kapatılması verilebilir.
Yazılım Kesintileri (Software Interrupts)
Bu tür kesme işlemleri,
işlemci içerisinde meydana gelen bir durumdan veya hatadan kaynaklanmaktadır.
Buna örnek olarak aritmetik işlemler sırasında gerçekleşen sıfıra bölme hatası
veya komut setinin içindeki özel bir kodun çalıştırılması verilebilir.
Yazılım kesintileri,
kullanıcı alanındaki (user space) uygulamaların çekirdek alanındaki (kernel
space) çağrıları gerçekleştirmesi için yani yazılımın kernel ile haberleşmesini
ve etkileşimde bulunmasını sağlamak için meydana gelmektedir. Örnek vermek
gerekirse, dosyaya yazma işleminin gerçekleştiği bir yazılımda dosyayı açma ve
kapatma işlemleri sırasında bir software interrupt üretilmektedir. Bu interrupt
işleme koyulduğunda işlemcinin verdiği komutlarla user space yani kullanıcı
alanından çıkılarak kernel space yani çekirdek alanına gelinir. Burada gerekli
işlemler gerçekleştirildikten sonra tekrar kernel space’ten user space’e
dönülür ve program çalışmaya devam eder.
Yorumlar
Yorum Gönder