Kesme (bilgisayar)

İş **kesme**, bilgi işlemede donanımsal olarak olağanüstü durumu belirtmek için gönderilen asenkron sinyal veya yazılımda işletimde değişiklik olacağını göstermek için ihtiyaç duyulan senkronize olaydır.

Donanımsal iş kesme geldiği anda işlemcinin, işletimin o andaki durumunu ilgili bağlamda saklaması sağlanır ve bunun ardından iş kesme kotarıcının işletilmesine başlanır.

Yazılımsal iş kesmeler genellikle komut kümesi içindeki bir komut gibi yürütülür. Bu komutlar donanımsal iş kesmedekine benzer şekilde ilgili bağlamın saklanıp iş kesme kotarıcısının işletilmesini sağlar.

İş kesme, genellikle çok görevli bilgisayarlarda özellikle gerçek zamanlı bilgi işlemede kullanılan bir tekniktir. Bu tekniği kullanan sistemlere iş kesme sürümlü sistemler denebilir.

## Genel bakış
Donanımsal iş kesmeler, işlemcinin yoklama döngüsü içindeki değerli zamanının dış olaylar için bekleyerek kötü kullanımının önlenmesi olarak belirtilebilir. İşlemci bir olayı gerçekleştirirken gelen iş kesme sinyali ile iş askıya alınır ve işlemcinin başka bir işi işlemesine izin verilir.

Yazılımsal iş kesmeler yüksek ayrıcalıklı seviyelerde işletilen paylaşılan sistem alt yordamlarına erişim için olan mekanizma olarak belirtilebilir. 
 
İş kesmeler iki kategoride sınıflandırılabilir:

#*Senkronize iş kesmeler* tahmin edilebilir ve bilinen zamanda meydana gelen iş kesmelerdir. Bu iş kesmelere örnek yazılımsal iş kesme komutlarının yürütümü gösterilebilir.
#*Asenkronize iş kesmeler* tahmin edilemeyen herhangi bir zamanda meydana gelebilen iş kesmelerdir. Bu iş kesmelere örnek donanımsal aygıtların sevise ihtiyacı olduğu sırada oluşan iş kesmelerdir.

İş kesmeler donanımda denetim hatlarıyla farklı sistemlere göre yürütülebilir veya iş kesmeler hafıza alt sistemlerine katılabilir. İş kesme eğer donanım içinde yürütülüyorsa Programlanabilir İş kesme Denetleyici (Programmable Interrupt Controller PIC) veya İleri Programlanabilir İş kesme Denetleyici (Advanced Programmable Interrupt Controller) iş kesme aygıtı ile birlikte işlemcinin iş kesme pinine bağlanır. Eğer yürütme hafıza denetleyicinin bir parçası ise iş kesmeler sistem hafıza adres uzayı içinde tasarlanır.

İş kesmeler belirtilen çeşitlerde kategorize edilebilir:
Yazılımsal interrupt, maskelenebilir iş kesme, maskelenemeyen iş kesme, işlemciler arası iş kesme ve sahte iş kesmedir.
* *Yazılımsal iş kesme* işlemci içinde komut işletilirken oluşan iş kesmedir. Bu iş kesmeye örnek olarak sistem çağrıları gösterilebir.
(Sistem çağrısı: İşletim sisteminden hizmet istemi için başvuru programı tarafından kullanılan mekanizmadır.)
* *Maskelenebilir iş kesme* maske yazıcısının bit maskesine bit yerleştirerek donanımsal iş kesmenin görmezden gelmektir.
* *Maskelenemez iş kesme* görmezden gelmeyi sağlayan maske bitine sahip olmayan donanımsal iş kesmedir.
* *İşlemciler arası iş kesme* çoklu işlemcinin olduğu ortamda gerçekleşen bir işlemcinin diğer bir işlemciyi kestiği iş kesme türüdür.
* *Sahte iş kesme* sistem hataları tarafından oluşturulan iş kesmelerdir. Örneğin Bir Programlanabilir İş kesme Denetleyicinin bir iş kesme hattındaki elektriksel gürültü bir sahte bir iş kesmedir.

İşlemci, tipik olarak yerleştirildiğinde, yazılımın dış iş kesmeleri görmezden gelmesine olanak sağlayan iş kesme maskesine sahiptir. Bu maske Programlanabilir İş kesme Denetleyicisi içerisinde bulunan iş kesme maske yazıcısına erişimden daha hızlı bir erişim sunar veya
kendisi aygıtın içerisinde iş kesmeleri devre dışı bırakır. Bazı durumlarda x86 mimarisindeki gibi işlemcide iş kesmeleri devre dışı bırakmak veya olanaklı kılmak için iş kesme maskesi hafıza engeli gibi davranır .Bu durum diğer durumlara göre daha yavaş olabilir.

## İş kesme isteği
İş kesme isteği, iş kesme işleminin belirtilme şeklidir. İş kesme gerçekleşeceği zaman veriyoluuna iş kesme işareti ile veya Programlanabilir İş kesme Denetleyicisinde bulunan iş kesme girdi hattına gönderilen iş kesme işareti ile iş kesme isteği belirtilir. 
İş kesme hatları bazen iş kesme isteğinin formatına göre sayılarla indekslenebilir. Örneğin Intel 8259 ailesindeki programlanabilir iş kesme denetleyicilerde sekiz tane iş kesme hattı IRQ0 'dan IRQ7'ye kadar bu şekilde indekslenmiştir.

## İş kesme kotarıcı
İş kesme kotarıcı, iş kesme servis yordamı, işletim sistemindeki geri arama alt yordamı veya işletimi İş kesmenin kabulü ile tetiklenmiş aygıt sürücüsüdür.
 
İş kesme kotartıcılarının çok sayıda fonksiyonu vardır. Bu fonksiyonlar iş kesmenin ortaya çıkma sebebine göre değişirler. İş kesme geldikten sonra uygun fonksiyona sahip iş kesme kotarıcı seçilir ve kotarıcı görevini yerine getirir.

İş kesme kotarıcı, olay kotarıcılarının düşük seviyeli bir meslektaşıdır. Olay kotarıcılar ya donanımsal iş kesme ya da iş kesme komutları tarafından yazılımsal olarak başlatılır.

## İş kesme gecikme süresi
İş kesme gecikme süresi aygıt tarafından iş kesme oluşturulmasıyla aygıta hizmetin verilmesi arasında geçen süredir. Birçok işletim sistemi için aygıta hizmetin verilmesi iş kesme kotartıcının işletilince gerçekleşir. İş kesme gecikme süresi iş kesme denetleyici, iş kesme maskeleme ve işletim sisteminin kotartma metotlarından etkilenebilir.

## Programlanabilir İş Kesme Denetleyicisi
Programlanabilir İş Kesme Denetleyicisi meydana gelen iş kesmelerin hangi öncelik sırasına göre işleneceğine karar veren bir aygıttır. Eğer aygıt birden fazla iş kesme bildirimine sahipse bu bildirimlerin işletimlerini ilgili önceliklerine göre sıralar. Programlanabilir İş Kesme denetleyiciler sert öncelikler, döner öncelikler ve art arda öncelikler isimli öncelik çeşitlerini içermektedir.

## İş kesme hücumu
İşletim sistemlerinde işlemcinin gereğinden fazla iş kesme kabul etmesiyle işlemci zamanının çoğunun iş kesme işletimiyle harcanmasıdır. İş kesme hücumuna tipik olarak donanımsal aygıtlar neden olur. Bu aygıtlar iş kesme oran limitini desteklemezler.

## Seviye tetikleme
Seviye tetiklemeli iş kesmelerde hazırda oluşmuş ancak servisi henüz yapılmamış olan kesilmelerin iş kesme isteği hattında yüksek seviyede (1)'de ya da düşük seviyede (0)'da gösterilmesidir. İş kesme olayı hatta sürüldüğünde hat aktif duruma geçer. İş kesmenin servisi sağlanana kadar da hat aktif durumda kalır.

İşlemci tipik olarak kesilme girdisini, önceden belirlenmiş zamanda diğer veriyolu çevrimleri, Z80 gibi mikroişlemcilerde, T2 durumunda olduğu sırada örnekler. Eğer kesme işlemci örnekleme yaparken kesme işlemi aktif durumda değil ise CPU iş kesmeyi görmez. İş kesmenin bu tip kullanımı gürültü kesme hattının neden olduğu sahte sinyalleri minimize eder, sahte sinyal çok kısa olur ve fark edilmez.

Eğer seviye tetiklenmiş iş kesme hatları gereğince tasarlanmış ise hat çoklu aygıtlar tarafından paylaşılabilir. İş kesme hattı yukarı çekme ve aşağı çekme direncine sahip olmalıdır. Böylece hat inaktif olduğunda bu durumun korunmasını sağlar. 
Bu tür iş kesmeler bazı elverişli davranışlarından dolayı tercih sebebidir. İş kesme hattı üzerinde bildirim araması yapılırken CPU sırayla bütün aygıtları servis gereksinimi olup olmadığı konusunda denetler. Servis gereksinimi olan aygıt tespit edilip servisi gönderildikten sonra CPU iş kesme hattının durumunu kontrol etmelidir ve aygıtların yeni bir servis ihtiyacı olup olmadığını tespit etmelidir. Eğer hatta belirtme işlemi bitmişse CPU hattaki kalıcı aygıtların denetlenmesini önler. Bazı aygıtlar diğer aygıtlardan fazla kesilme yapıyorsa bu aygıtlar iş kesme durumlarının kontrolü için özellikle masraflı olmaktadırlar. Aygıtların dikkatlice sıralanması beraberinde etkin bir kazanç getirecektir.

Paylaşılan seviye tetiklemeli iş kesmelerin çeşitli problemleri bulunmaktadır. Örneğin hatta göze çarpan bir servis istemi olduğunda hat kalıcı olarak bildirimde kalır. Bu nedenle de diğer aygıtların durumlarındaki değişikliği tespit edebilmek mümkün olmaz. Düşük öncelikli aygıtı ertelemek seçenek değildir çünkü bu yüksek öncelikli aygıtların servis isteminin tespit edilmesini önler. Eğer hattaki bir aygıtın servisinin nasıl yapılacağı CPU tarafından bilinmiyorsa diğer aygıtlar tarafından oluşturulan iş kesmeler sürekli olarak bloklanır.

## Kenar tetikleme
Kenar tetiklemeli iş kesmeler iş kesme hattındaki seviye geçişi ile belirtilirler. Ya düşen kenarda (1'den 0'a) ya da (genellikle) yükselen kenarda (0'dan 1'e) belirtilirler. Aygıt hattın üzerine darbe sürerek kesilmeyi belirtmek ister. Daha sonra hat kendi kararlı haline döner. Eğer darbe oylanmış I/O tarafından fark edilmeyecek kadar kısa ise kenarı bulmak için özel bir donanım gerekebilir.

Çoklu aygıtlar gerektiği gibi tasarlanmışsa kenar tetiklemeli iş kesme hattını paylaşabilirler.

İş kesme hattı yukarı çekme ve aşağı çekme direncine sahip olmalıdır. Bu sayede aktif sürüm olmadığında direnç iş kesme hattını bir özel durumda tutar. Aygıtlar iş kesilmelerini belirtmeden önce hattı hazır hale getirirler. Daha sonra hat aygıtlar tarafından oluşturulan darbeleri alır. Ancak farklı aygıtlardan gelen iş kesme darbeleri yakın zamanlarda meydana gelirlerse karışabilir. Bu yüzden kaynaklanan iş kesme kayıplarından kurtulmak için CPU darbenin izleyen kenarında tetiklenmelidir. İş kesme fark edildikten sonra CPU servis gereklilikleri için bütün aygıtları kontrol etmelidir.

Kenar tetiklenmiş iş kesmeler seviye tetiklenmiş iş kesmelerdeki paylaşım problemleri yaşamaz. Düşük öncelikli aygıtın servisi isteğe göre ertelenebilir ve yüksek öncelikli aygıtın servisi sağlandıktan sonra ertelenmiş düşük öncelikli aygıtın servisi sağlanır. Eğer CPU'nun servisini nasıl sağlayacağını bilmediği bir aygıt mevcutsa bu sahte iş kesmeye neden olabilir veya düzenli periyodik sahte iş kesmeler oluşabilir. Ancak bu durum diğer iş kesme durumlarının belirtilmesini engellemez.

## Karma
Bazı sistemler kenar tetikleme ile seviye tetiklemeyi karma olarak kullanır. Donanım yalnızca kenar için bakmaz bununla birlikte belirli periyodik bir zaman aralığında iş kesme sinyalinin aktif durumda bulunduğunu doğrular. Ortak karma iş kesme maskelenemez iş kesme girdisidir. Çünkü maskelenemez iş kesmeler genellikle daha önemli veya feci sistem olaylarını belirtir. Bu sinyalin iyi bir uygulaması iş kesmenin makul zaman aralığında aktif kalmış olmasını garantiler. Bu iki basamak yanlış iş kesmelerin sistemi etkilemesini azaltmak için yardımcı olur.

## Mesaj ile belirtme
Mesaj ile belirtilen iş kesmeler fiziksel iş kesme hattını kullanmaz. Onun yerine aygıt, istemini bilgisayar veriyolu gibi bir iletişim ortamına kısa mesaj göndererek belirtir. Mesaj ile belirtilen iş kesmeler kenar tetiklemeli iş kesmeler gibi davranırlar. İş kesme sürekli bir durumun aksine anlık bir sinyaldir.

Mesaj ile belirtilen iş kesme vektörleri paylaşılabilirdir bunun sağlanması için iletişim ortamı paylaşılabilir olmalıdır.

## Kullanım alanları
İş kesmelerin genel kullanım alanları sistem zamanlayıcıları, disk giriş-çıkışları ve güç kesme sinyalleridir. Bunlarla birlikte UART ve Ethernet kullanımında veri transferinde iş kesmeler kullanılır. Ayrıca kontrol motorları gibi birçok alanda iş kesmeler kullanılır. 
Disk iş kesme sinyalleri çevre birimlerinden diske veya diskten çevre birimlerine veri transferinde tamamlayıcıdır. Güç kesme kesilmeleri güç kaybı olduğunu ya da olacağını belirtir. Bu da bilgisayar elemanlarının sistemli olarak işlerini durdurmasını sağlar.

## Kaynakça

## Dış bağlantılar
* IBM PC Kesme Tablosu