Sampuk vs Perangkap
Dalam mana-mana komputer, semasa pelaksanaan program biasa, mungkin terdapat peristiwa yang boleh menyebabkan CPU terhenti buat sementara waktu. Peristiwa seperti ini dipanggil gangguan. Gangguan boleh disebabkan oleh sama ada kerosakan perisian atau perkakasan. Gangguan perkakasan dipanggil (sekadar) Gangguan, manakala gangguan perisian dipanggil Pengecualian atau Perangkap. Pengecualian ialah gangguan perisian yang dijana secara automatik, manakala Perangkap ialah gangguan yang digunakan perisian yang dimulakan oleh pengaturcara. Sebaik sahaja gangguan (perisian atau perkakasan) dinaikkan, kawalan dipindahkan ke subrutin khas yang dipanggil ISR (Rutin Perkhidmatan Interrupt) yang boleh mengendalikan keadaan yang dibangkitkan oleh gangguan.
Apakah itu Gangguan?
Istilah Gangguan biasanya dikhaskan untuk gangguan perkakasan. Ia adalah gangguan kawalan program yang disebabkan oleh peristiwa perkakasan luaran. Di sini, luaran bermaksud luaran kepada CPU. Gangguan perkakasan biasanya datang daripada pelbagai sumber seperti cip pemasa, peranti persisian (papan kekunci, tetikus, dll.), port I/O (bersiri, selari, dll.), pemacu cakera, jam CMOS, kad pengembangan (kad bunyi, video). kad, dll). Ini bermakna gangguan perkakasan hampir tidak pernah berlaku disebabkan oleh beberapa peristiwa yang berkaitan dengan program pelaksanaan. Contohnya, peristiwa seperti penekanan kekunci pada papan kekunci oleh pengguna, atau pemasa pemasa perkakasan dalaman yang tamat masa boleh menimbulkan gangguan jenis ini dan boleh memaklumkan CPU bahawa peranti tertentu memerlukan perhatian. Dalam keadaan seperti itu CPU akan menghentikan apa sahaja yang dilakukannya (iaitu menjeda atur cara semasa), menyediakan perkhidmatan yang diperlukan oleh peranti dan akan kembali ke program biasa. Apabila gangguan perkakasan berlaku dan CPU memulakan ISR, gangguan perkakasan lain dinyahdayakan (cth.g. dalam mesin 80×86). Jika anda memerlukan gangguan perkakasan lain berlaku semasa ISR berjalan, anda perlu melakukannya secara eksplisit dengan mengosongkan bendera gangguan (dengan arahan sti). Dalam mesin 80×86, mengosongkan bendera gangguan hanya akan menjejaskan gangguan perkakasan.
Apakah itu Perangkap?
A Perangkap boleh dikenal pasti sebagai pemindahan kawalan, yang dimulakan oleh pengaturcara. Istilah Trap digunakan secara bergantian dengan istilah Exception (yang merupakan gangguan perisian yang berlaku secara automatik). Tetapi sesetengah mungkin berpendapat bahawa perangkap hanyalah panggilan subrutin khas. Jadi mereka termasuk dalam kategori gangguan yang digunakan perisian. Contohnya, dalam mesin 80×86, pengaturcara boleh menggunakan arahan int untuk memulakan perangkap. Kerana perangkap sentiasa tanpa syarat, kawalan akan sentiasa dipindahkan ke subrutin yang dikaitkan dengan perangkap. Arahan yang tepat, yang menggunakan rutin untuk mengendalikan perangkap mudah dikenal pasti kerana arahan eksplisit digunakan untuk menentukan perangkap.
Apakah perbezaan antara Gangguan dan Perangkap?
Gangguan ialah gangguan perkakasan, manakala perangkap ialah gangguan yang digunakan oleh perisian. Kejadian gangguan perkakasan biasanya melumpuhkan gangguan perkakasan lain, tetapi ini tidak benar untuk perangkap. Jika anda perlu tidak membenarkan gangguan perkakasan sehingga perangkap disampaikan, anda perlu mengosongkan bendera gangguan secara eksplisit. Dan biasanya bendera interrupt pada komputer mempengaruhi (hardware) interrupts berbanding perangkap. Ini bermakna membersihkan bendera ini tidak akan menghalang perangkap. Tidak seperti perangkap, gangguan harus mengekalkan keadaan CPU sebelumnya.