Perbezaan antara Interrupt dan Perangkap

Anonim

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. Interrupts perkakasan dipanggil (hanya) Interrupts, sementara gangguan perisian dipanggil Pengecualian atau Perangkap. Pengecualian adalah gangguan perisian yang dijana secara automatik, sementara Trap adalah gangguan yang dipanggil perisian yang dimulakan oleh pengaturcara. Sebaik sahaja gangguan (perisian atau perkakasan) dinaikkan, kawalan dipindahkan ke subrutin khas yang dipanggil ISR (Ralat Perkhidmatan Interrupt) yang boleh mengendalikan keadaan yang dibangkitkan oleh gangguan.

Apa itu Interrupt?

Istilah Interrupt biasanya digunakan untuk mengganggu perkakasan . Mereka adalah gangguan kawalan program yang disebabkan oleh peristiwa perkakasan luaran. Di sini, luaran bermaksud luaran ke CPU . Butang perkakasan biasanya datang dari pelbagai sumber seperti cip pemasa, peranti periferal (papan kekunci, tetikus, dll.), Port I / O (siri, selari, dll.), Pemacu cakera, jam CMOS, kad pengembangan (bunyi kad, kad video, dan lain-lain). Ini bermakna gangguan perkakasan 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 berkala boleh menimbulkan gangguan ini dan dapat memberitahu CPU bahawa peranti tertentu memerlukan perhatian. Dalam keadaan seperti itu, CPU akan menghentikan apa sahaja yang dilakukannya (i. 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 dilumpuhkan (pada mesin 80 × 86). Jika anda memerlukan gangguan perkakasan lain yang berlaku semasa ISR sedang berjalan, anda perlu melakukan itu secara jelas dengan membersihkan bendera interupsi (dengan arahan sti). Dalam mesin 80 × 86, membersihkan 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 interupsi secara automatik yang terjadi). Tetapi ada yang berpendapat bahawa jebakan hanyalah panggilan subrutin khusus. Jadi mereka jatuh ke dalam kategori gangguan yang dikenakan perisian. Sebagai contoh, dalam mesin 80 × 86, seorang pengaturcara boleh menggunakan arahan int 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 yang dipanggil perisian. Kejadian gangguan peranti keras biasanya melumpuhkan gangguan perkakasan lain, tetapi ini tidak benar untuk perangkap. Sekiranya anda perlu melarang gangguan perkakasan sehingga jebakan dihidupkan, anda perlu mengosongkan bendera mengganggu dengan 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, gangguan hendaklah mengekalkan keadaan CPU sebelumnya.