Ganggu vs Perangkap
Di komputer mana pun, selama pelaksanaan program secara normal, mungkin ada peristiwa yang dapat menyebabkan CPU berhenti sementara. Acara seperti ini disebut gangguan. Gangguan boleh disebabkan oleh kerosakan perisian atau perkakasan. Gangguan perkakasan disebut (sekadar) Gangguan, sementara gangguan perisian disebut Pengecualian atau Perangkap. Pengecualian adalah gangguan perisian yang dihasilkan secara automatik, sementara Perangkap adalah gangguan yang dipanggil perisian yang dimulakan oleh pengaturcara. Setelah gangguan (perisian atau perkakasan) dinaikkan, kawalan dipindahkan ke subrutin khas yang disebut ISR (Interrupt Service Routine) yang dapat menangani keadaan yang ditimbulkan oleh gangguan tersebut.
Apa itu Gangguan?
Istilah Interrupt biasanya dikhaskan untuk gangguan perkakasan. Ini adalah gangguan kawalan program yang disebabkan oleh peristiwa perkakasan luaran. Di sini, luaran bermaksud luaran CPU. Gangguan perkakasan biasanya berasal dari pelbagai sumber seperti cip pemasa, peranti periferal (papan kekunci, tetikus, dll.), Port I / O (bersiri, selari, dll.), Pemacu cakera, jam CMOS, kad pengembangan (kad suara, video kad, dll). Itu bermaksud gangguan perkakasan hampir tidak pernah berlaku disebabkan oleh beberapa peristiwa yang berkaitan dengan program pelaksanaan. Sebagai contoh, peristiwa seperti menekan kekunci pada papan kekunci oleh pengguna, atau waktu pemasa perkakasan dalaman boleh meningkatkan gangguan seperti ini dan dapat memberitahu CPU bahawa peranti tertentu memerlukan perhatian. Dalam situasi seperti itu CPU akan menghentikan apa sahaja yang dilakukannya (iaitu menghentikan program semasa),menyediakan perkhidmatan yang diperlukan oleh peranti dan akan kembali ke program biasa. Apabila gangguan perkakasan berlaku dan CPU memulakan ISR, gangguan perkakasan lain dilumpuhkan (contohnya pada mesin 80 × 86). Sekiranya anda memerlukan gangguan perkakasan lain semasa ISR berjalan, anda perlu melakukannya dengan jelas dengan mengosongkan bendera gangguan (dengan arahan sti). Pada mesin 80 × 86, mengosongkan bendera gangguan hanya akan mempengaruhi gangguan perkakasan.membersihkan bendera gangguan hanya akan mempengaruhi gangguan perkakasan.membersihkan bendera gangguan hanya akan mempengaruhi gangguan perkakasan.
Apa itu Perangkap?
Perangkap dapat dikenali sebagai pemindahan kawalan, yang dimulakan oleh pengaturcara. Istilah Perangkap digunakan secara bergantian dengan istilah Pengecualian (yang merupakan gangguan perisian yang berlaku secara automatik). Tetapi ada yang berpendapat bahawa perangkap hanyalah panggilan subrutin khusus. Oleh itu, mereka tergolong dalam kategori gangguan yang disebabkan perisian. Sebagai contoh, dalam mesin 80 × 86, pengaturcara dapat menggunakan arahan int untuk memulakan perangkap. Kerana perangkap selalu tanpa syarat, kawalan akan selalu dipindahkan ke subrutin yang berkaitan dengan perangkap. Arahan yang tepat, yang menggunakan rutin untuk mengendalikan perangkap mudah dikenali kerana arahan yang jelas digunakan untuk menentukan perangkap.
Apakah perbezaan antara Interrupt dan Trap?
Gangguan adalah gangguan perkakasan, sementara perangkap adalah gangguan yang disebabkan perisian. Kejadian gangguan perkakasan biasanya mematikan gangguan perkakasan lain, tetapi ini tidak berlaku untuk perangkap. Sekiranya anda tidak membenarkan gangguan perkakasan sehingga perangkap dilayan, anda perlu membersihkan bendera gangguan secara terang-terangan. Dan biasanya bendera gangguan pada komputer mempengaruhi (perkakasan) gangguan berbanding perangkap. Ini bermaksud bahawa membersihkan bendera ini tidak akan menghalang perangkap. Tidak seperti perangkap, gangguan harus mengekalkan keadaan CPU sebelumnya.