Interrupt vs Trap
Di mana-mana komputer, semasa pelaksanaan program yang normal, mungkin ada peristiwa yang dapat menyebabkan CPU berhenti sementara. Peristiwa-peristiwa seperti ini disebut gangguan. Gangguan boleh disebabkan oleh perisian atau kesalahan perkakasan. Penggantungan perkakasan dipanggil (hanya) Interrupts, sementara gangguan perisian dipanggil Pengecualian atau Perangkap. Pengecualian adalah gangguan perisian yang dijana secara automatik, sementara Perangkap adalah gangguan interupsi yang dimulakan oleh program. Sebaik sahaja gangguan (perisian atau perkakasan) dinaikkan, kawalan dipindahkan ke subrutin khas yang disebut ISR (Ralat Perkhidmatan Interrupt) yang boleh mengendalikan keadaan yang dibangkitkan oleh gangguan.
Apa itu Interrupt?
Istilah Interrupt biasanya digunakan untuk gangguan peranti keras. Mereka adalah gangguan kawalan program yang disebabkan oleh peristiwa perkakasan luaran. Di sini, luaran bermaksud luaran ke CPU. Penggantungan perkakasan biasanya datang dari pelbagai sumber seperti cip pemasa, peranti periferi (papan kekunci, tetikus, dll.), Port I / O (siri, selari, dll.), Pemacu cakera, jam CMOS, kad pengembangan (kad bunyi, kad, dan sebagainya). Ini bermakna gangguan peranti keras hampir tidak pernah berlaku disebabkan oleh beberapa peristiwa yang berkaitan dengan program pelaksana. Contohnya, peristiwa seperti akhbar utama pada keyboard oleh pengguna, atau pemasa perkakasan dalaman yang menetap dapat menimbulkan gangguan ini dan dapat memberitahu CPU bahawa peranti tertentu memerlukan perhatian. Dalam keadaan seperti itu CPU akan menghentikan apa sahaja yang dilakukannya (iaitu menghentikan program semasa), menyediakan perkhidmatan yang diperlukan oleh peranti dan akan kembali kepada program biasa. Apabila gangguan perkakasan berlaku dan CPU memulakan ISR, gangguan perkakasan lain dinyahdayakan (mis. Dalam 80 × 86 mesin). Jika anda memerlukan gangguan perkakasan lain yang berlaku semasa ISR sedang berjalan, anda perlu melakukan itu secara jelas dengan membersihkan bendera mengganggu (dengan sti arahan). Dalam 80 × 86 mesin, pembersihan bendera mengganggu hanya akan menjejaskan gangguan perkakasan.
Apa itu Perangkap?
Perangkap boleh dikenalpasti sebagai pemindahan kawalan, yang dimulakan oleh programmer. Istilah Perangkap digunakan secara bergantian dengan Istilah Pengecualian (yang merupakan interrupt software secara otomatis). Tetapi ada yang berpendapat bahawa perangkap hanyalah panggilan subrutin khusus. Jadi mereka jatuh ke dalam kategori gangguan yang dipakai perisian. Sebagai contoh, dalam mesin 80 × 86, seorang pengaturcara boleh menggunakannya int arahan untuk memulakan perangkap. Kerana perangkap sentiasa tanpa syarat, kawalan akan sentiasa dipindahkan ke subroutine yang berkaitan dengan perangkap. Arahan yang tepat, yang menggunakan rutin untuk mengendalikan perangkap mudah dikenalpasti kerana arahan eksplisit digunakan untuk menentukan perangkap.
Apakah perbezaan antara Interrupt dan Trap?
Interrupts adalah gangguan sampingan, manakala perangkap adalah gangguan perisian yang dipanggil. Kejadian gangguan peranti keras biasanya melumpuhkan gangguan perkakasan lain, tetapi ini tidak benar untuk perangkap. Sekiranya anda perlu untuk tidak membenarkan penggantungan perkakasan sehingga jebakan dihidupkan, anda perlu jelaskan bendera mengganggu secara jelas. Dan biasanya bendera mengganggu pada komputer mempengaruhi (perkakasan) mengganggu berbanding dengan perangkap. Ini bermakna penjelasan bendera ini tidak akan mencegah perangkap. Tidak seperti perangkap, interrupts harus mengekalkan keadaan sebelumnya CPU.