Kesmeye Karşı Tuzak
Herhangi bir bilgisayarda, bir programın normal yürütülmesi sırasında, CPU'nun geçici olarak durmasına neden olabilecek olaylar olabilir. Bu tür olaylara kesinti denir. Kesintiler, yazılım veya donanım hatalarından kaynaklanabilir. Donanım kesintileri (basitçe) Kesintiler olarak adlandırılırken, yazılım kesintileri İstisnalar veya Tuzaklar olarak adlandırılır. İstisna, otomatik olarak oluşturulan bir yazılım kesintisidir, Tuzak ise programcı tarafından başlatılan yazılım tarafından başlatılan bir kesintidir. Bir kesme (yazılım veya donanım) oluşturulduğunda, kontrol, kesme tarafından oluşturulan koşulları işleyebilen ISR (Kesme Hizmeti Rutini) adlı özel bir alt programa aktarılır.
Kesinti nedir?
Kesme terimi genellikle donanım kesintileri için ayrılmıştır. Harici donanım olaylarının neden olduğu program kontrol kesintileridir. Burada harici, CPU'nun harici 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 vb.) gibi birçok farklı kaynaktan gelir. kart, vb). Bu, yürütülmekte olan programla ilgili bazı olaylar nedeniyle donanım kesintilerinin neredeyse hiç gerçekleşmediği anlamına gelir. Örneğin, kullanıcının klavyede bir tuşa basması veya dahili donanım zamanlayıcısının zaman aşımına uğraması gibi bir olay, bu tür bir kesmeyi artırabilir ve CPU'ya belirli bir cihazın biraz dikkat etmesi gerektiğini bildirebilir. Böyle bir durumda CPU her ne yapıyorsa durdurur (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.g. 80×86 makinelerde). ISR çalışırken diğer donanım kesintilerinin gerçekleşmesi gerekiyorsa, bunu kesme bayrağını temizleyerek (sti komutuyla) açıkça yapmanız gerekir. 80×86 makinelerde, kesme bayrağının temizlenmesi yalnızca donanım kesmelerini etkiler.
Tuzak Nedir?
A Tuzak, programcı tarafından başlatılan bir kontrol aktarımı olarak tanımlanabilir. Tuzak terimi, İstisna terimiyle (otomatik olarak oluşan bir yazılım kesintisi) birbirinin yerine kullanılır. Ancak bazıları, bir tuzağın sadece özel bir alt program çağrısı olduğunu iddia edebilir. Bu nedenle, yazılım tarafından çağrılan kesintiler kategorisine girerler. Örneğin, 80×86 makinelerde, bir programcı bir tuzak başlatmak için int komutunu kullanabilir. Bir tuzak her zaman koşulsuz olduğundan, kontrol her zaman tuzakla ilişkili alt programa aktarılacaktır. Tuzağı işlemek için yordamı çağıran kesin talimat, bir tuzak belirtmek için açık bir talimat kullanıldığından kolayca tanımlanır.
Kesme ve Tuzak arasındaki fark nedir?
Kesmeler donanım kesintileridir, tuzaklar ise yazılım tarafından çağrılan kesintilerdir. Donanım kesintilerinin meydana gelmesi genellikle diğer donanım kesintilerini devre dışı bırakır, ancak bu tuzaklar için geçerli değildir. Bir tuzak sunulana kadar donanım kesmelerine izin vermemeniz gerekiyorsa, kesme bayrağını açıkça temizlemeniz gerekir. Ve genellikle bilgisayardaki kesme bayrağı, tuzakların aksine (donanım) kesmelerini etkiler. Bu, bu bayrağı temizlemenin tuzakları engellemeyeceği anlamına gelir. Tuzaklardan farklı olarak, kesmeler CPU'nun önceki durumunu korumalıdır.