Perbedaan Antara Interupsi dan Pengecualian

Interrupt vs Exception

Di komputer mana pun, selama eksekusi normal suatu program, mungkin ada peristiwa yang dapat menyebabkan CPU berhenti sementara. Peristiwa seperti ini disebut interupsi. Gangguan dapat disebabkan oleh kesalahan perangkat lunak atau perangkat keras. Interupsi perangkat keras disebut (hanya) Interupsi, sedangkan interupsi perangkat lunak disebut Pengecualian. Setelah interupsi (perangkat lunak atau perangkat keras) dinaikkan, kontrol ditransfer ke subrutin khusus yang disebut ISR (Interrupt Service Routine) yang dapat menangani kondisi yang dimunculkan oleh interrupt.

Apa itu Interrupt?

Istilah Interrupt biasanya dicadangkan untuk gangguan hardware. Mereka adalah gangguan kontrol program yang disebabkan oleh peristiwa perangkat keras eksternal. Di sini, eksternal berarti eksternal ke CPU. Gangguan perangkat keras biasanya berasal dari berbagai sumber seperti chip timer, perangkat periferal (keyboard, mouse, dll.), Port I / O (serial, paralel, dll.), Drive disk, jam CMOS, kartu ekspansi (kartu suara, video kartu, dll). Itu berarti interupsi perangkat keras hampir tidak pernah terjadi karena beberapa peristiwa yang berkaitan dengan program pelaksana. Misalnya, acara seperti penekanan tombol pada keyboard oleh pengguna, atau penghentian waktu perangkat keras internal dapat meningkatkan interupsi semacam ini dan dapat memberi tahu CPU bahwa perangkat tertentu perlu perhatian. Dalam situasi seperti itu CPU akan menghentikan apa yang pernah dilakukannya (mis. Menjeda program saat ini), menyediakan layanan yang diperlukan oleh perangkat dan akan kembali ke program normal. Ketika interupsi perangkat keras terjadi dan CPU memulai ISR, interupsi perangkat keras lainnya dinonaktifkan (mis. Dalam 80 × 86 mesin). Jika Anda memerlukan interupsi perangkat keras lain untuk terjadi saat ISR berjalan, Anda harus melakukannya secara eksplisit dengan menghapus tanda interupsi (dengan instruksi IMS). Pada mesin 80 × 86, membersihkan flag interrupt hanya akan memengaruhi interupsi hardware.

Apa itu Pengecualian?

Pengecualian adalah gangguan perangkat lunak, yang dapat diidentifikasi sebagai rutinitas penangan khusus. Pengecualian dapat diidentifikasi sebagai jebakan yang terjadi secara otomatis (Jebakan dapat diidentifikasi sebagai transfer kontrol, yang diprakarsai oleh programmer). Secara umum, tidak ada instruksi khusus yang terkait dengan pengecualian (jebakan dihasilkan menggunakan instruksi tertentu). Jadi, pengecualian terjadi karena kondisi "luar biasa" yang terjadi selama eksekusi program. Misalnya, pembagian dengan nol, eksekusi opcode ilegal atau kesalahan terkait memori dapat menyebabkan pengecualian. Setiap kali pengecualian dinaikkan, CPU untuk sementara menangguhkan program yang sedang dijalankan dan memulai ISR. ISR akan berisi apa yang harus dilakukan dengan pengecualian. Ini dapat memperbaiki masalah atau jika tidak mungkin dapat membatalkan program dengan anggun dengan mencetak pesan kesalahan yang sesuai. Meskipun instruksi tertentu tidak menyebabkan pengecualian, pengecualian akan selalu disebabkan oleh instruksi. Misalnya, pembagian dengan kesalahan nol hanya dapat terjadi selama pelaksanaan instruksi pembagian.

Apa perbedaan antara Interrupt dan Exception?

Interupsi adalah interupsi perangkat keras, sedangkan pengecualian adalah interupsi perangkat lunak. Kemunculan interupsi perangkat keras biasanya menonaktifkan interupsi perangkat keras lainnya, tetapi ini tidak berlaku untuk pengecualian. Jika Anda perlu melarang interupsi perangkat keras hingga pengecualian disajikan, Anda perlu menghapus tanda interupsi secara eksplisit. Dan biasanya flag interrupt pada komputer mempengaruhi interupsi (hardware) sebagai kebalikan dari pengecualian. Ini berarti bahwa membersihkan bendera ini tidak akan mencegah pengecualian.