Kesme ve İstisna
Herhangi bir bilgisayarda, bir programı normal yürütmesi sırasında, CPU'nun geçici olarak durmasına neden olabilecek olaylar olabilir. Bu gibi olaylara kesinti denir. Kesintilere yazılım veya donanım hataları neden olabilir. Donanım kesmeleri (basitçe) Kesmeler olarak adlandırılırken, yazılım kesmeleri İstisnalar olarak adlandırılır. Bir kesinti (yazılım veya donanım) yükseltildiğinde, kontrol, kesintinin neden olduğu koşulları işleyebilen ISR (Kesme Hizmeti Rutini) adı verilen özel bir alt rutine aktarılır..
Kesme nedir?
Kesinti terimi genellikle donanım kesmeleri için ayrılmıştır. Harici donanım olaylarının neden olduğu program kontrol kesintileridir. Burada harici, CPU'nun dışında anlamına gelir. Donanım kesintileri genellikle zamanlayıcı yongası, çevresel aygıtlar (klavyeler, fare vb.), G / Ç bağlantı noktaları (seri, paralel vb.), Disk sürücüleri, CMOS saati, genişletme kartları (ses kartı, video) gibi birçok farklı kaynaktan gelir. kart, vb.). Bu, yürütme programıyla ilgili bir olay nedeniyle donanım kesintilerinin neredeyse hiç gerçekleşmediği anlamına gelir. Örneğin, kullanıcı tarafından klavyede bir tuşa basma gibi bir olay veya dahili bir donanım zamanlayıcı zaman aşımı bu tür kesintileri artırabilir ve CPU'ya belirli bir cihazın biraz ilgilenmesi gerektiğini bildirebilir. Böyle bir durumda CPU yaptığı her şeyi durduracaktır (yani mevcut programı duraklatır), cihazın ihtiyaç duyduğu hizmeti sağlar ve normal programa geri döner. Donanım kesintileri meydana geldiğinde ve CPU ISR'yi başlattığında, diğer donanım kesintileri devre dışı bırakılır (örn. 80 × 86 makinelerde). ISR çalışırken oluşacak başka donanım kesintilerine ihtiyacınız varsa, kesme bayrağını (sti komutu ile) temizleyerek bunu açıkça yapmanız gerekir. 80 × 86 makinelerde, kesme bayrağını temizlemek yalnızca donanım kesintilerini etkiler.
İstisnalar Nedir?
İstisna, özel bir işleyici rutini olarak tanımlanabilen bir yazılım kesintisidir. İstisna, otomatik olarak oluşan bir tuzak olarak tanımlanabilir (bir Tuzak, programcı tarafından başlatılan bir kontrol aktarımı olarak tanımlanabilir). Genel olarak, istisnalarla ilişkili belirli bir talimat yoktur (tuzaklar belirli bir talimat kullanılarak üretilir). Bu nedenle, program yürütülmesi sırasında oluşan "olağanüstü" bir durum nedeniyle bir özel durum oluşur. Örneğin, sıfıra bölme, geçersiz bir opcode veya bellekle ilgili bir hatanın yürütülmesi istisnalara neden olabilir. Bir istisna ortaya çıktığında, CPU yürütmekte olduğu programı geçici olarak askıya alır ve ISR'yi başlatır. ISR istisna ile ne yapılacağını içerecektir. Sorunu düzeltebilir veya mümkün değilse, uygun bir hata iletisi yazdırarak programı düzgün bir şekilde durdurabilir. Belirli bir talimat istisna oluşturmasa da, her zaman bir talimat neden olur. Örneğin, sıfır hata ile bölme yalnızca bölme komutunun yürütülmesi sırasında gerçekleşebilir.
Interrupt ve Exception arasındaki fark nedir?
Kesmeler donanım kesintileriyken istisnalar yazılım kesintileridir. Donanım kesintilerinin sıklığı genellikle diğer donanım kesintilerini devre dışı bırakır, ancak bu istisnalar için geçerli değildir. Bir istisna sunulana kadar donanım kesintilerine izin vermemeniz gerekiyorsa, kesme bayrağını açıkça temizlemeniz gerekir. Ve genellikle bilgisayardaki kesme bayrağı, istisnaların aksine (donanım) kesintilerini etkiler. Bu, bu bayrağı temizlemenin istisnaları engellemeyeceği anlamına gelir.