Ganggu vs Pengecualian
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. 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 yang pernah 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.
Apakah Pengecualian?
Pengecualian adalah gangguan perisian, yang dapat dikenal pasti sebagai rutin pengendali khas. Pengecualian dapat diidentifikasi sebagai perangkap yang berlaku secara automatik (Perangkap dapat diidentifikasi sebagai pemindahan kontrol, yang dimulai oleh pengaturcara). Secara amnya, tidak ada arahan khusus yang berkaitan dengan pengecualian (perangkap dihasilkan menggunakan arahan tertentu). Jadi, pengecualian berlaku kerana keadaan "luar biasa" yang berlaku semasa pelaksanaan program. Contohnya, pembahagian dengan sifar, pelaksanaan opcode yang tidak sah atau kesalahan yang berkaitan dengan memori boleh menyebabkan pengecualian. Setiap kali terdapat pengecualian, CPU menghentikan sementara program yang dijalankannya dan memulai ISR. ISR akan mengandungi apa yang harus dilakukan dengan pengecualian. Ini boleh membetulkan masalahnya atau jika tidak mungkin membatalkan program dengan mencetak mesej ralat yang sesuai. Walaupun arahan khusus tidak menyebabkan pengecualian, pengecualian akan selalu disebabkan oleh arahan. Sebagai contoh, pembahagian dengan ralat sifar hanya boleh berlaku semasa pelaksanaan arahan pembahagian.
Apakah perbezaan antara Gangguan dan Pengecualian?
Gangguan adalah gangguan perkakasan, sementara pengecualian adalah gangguan perisian. Kejadian gangguan perkakasan biasanya mematikan gangguan perkakasan lain, tetapi ini tidak benar untuk pengecualian. Sekiranya anda tidak membenarkan gangguan perkakasan sehingga pengecualian diberikan, anda perlu membersihkan bendera gangguan secara eksplisit. Dan biasanya bendera gangguan pada komputer mempengaruhi (perkakasan) gangguan berbanding pengecualian. Ini bermaksud membersihkan bendera ini tidak akan menghalang pengecualian.