Interupsi vs pengecualian
Di komputer mana pun, selama pelaksanaan program yang normal, mungkin ada peristiwa yang dapat menyebabkan CPU berhenti sementara. Acara seperti ini disebut interupsi. Interupsi dapat disebabkan oleh kesalahan perangkat lunak atau perangkat keras. Interupsi perangkat keras disebut interupsi (sederhana), sementara interupsi perangkat lunak disebut pengecualian. Setelah interupsi (perangkat lunak atau perangkat keras) dinaikkan, kontrol ditransfer ke subrutin khusus yang disebut ISR (interupsi layanan rutin) yang dapat menangani kondisi yang diangkat oleh interupsi.
Apa yang mengganggu?
Istilah interupsi biasanya dicadangkan untuk interupsi perangkat keras. Mereka adalah gangguan kontrol program yang disebabkan oleh peristiwa perangkat keras eksternal. Di sini, eksternal berarti eksternal dari CPU. Interupsi 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, kartu video, dll). Itu berarti interupsi perangkat keras hampir tidak pernah terjadi karena beberapa peristiwa yang terkait dengan program pelaksanaan. Misalnya, acara seperti tombol tekan pada keyboard oleh pengguna, atau timer timer perangkat keras internal dapat meningkatkan interupsi semacam ini dan dapat memberi tahu CPU bahwa perangkat tertentu membutuhkan perhatian. Dalam situasi seperti itu CPU akan menghentikan apa pun yang dilakukannya (saya.e. jeda program saat ini), menyediakan layanan yang diperlukan oleh perangkat dan akan kembali ke program normal. Saat interupsi perangkat keras terjadi dan CPU memulai ISR, interupsi perangkat keras lainnya dinonaktifkan (e.G. dalam mesin 80 × 86). Jika Anda memerlukan interupsi perangkat keras lain untuk terjadi saat ISR sedang berjalan, Anda perlu melakukannya secara eksplisit dengan membersihkan bendera interupsi (dengan instruksi STI). Dalam mesin 80 × 86, membersihkan bendera interupsi hanya akan mempengaruhi interupsi perangkat keras.
Apa itu pengecualian?
Pengecualian adalah interupsi perangkat lunak, yang dapat diidentifikasi sebagai rutinitas penangan khusus. Pengecualian dapat diidentifikasi sebagai perangkap yang terjadi secara otomatis (perangkap dapat diidentifikasi sebagai transfer kontrol, yang diprakarsai oleh programmer). Secara umum, tidak ada instruksi khusus yang terkait dengan pengecualian (perangkap dihasilkan menggunakan instruksi khusus). Jadi, pengecualian terjadi karena kondisi "luar biasa" yang terjadi selama eksekusi program. Misalnya, pembagian dengan nol, pelaksanaan opcode ilegal atau kesalahan terkait memori dapat menyebabkan pengecualian. Setiap kali pengecualian dinaikkan, CPU sementara menangguhkan program yang dieksekusi dan memulai ISR. ISR akan berisi apa yang harus dilakukan dengan pengecualian. Itu dapat memperbaiki masalah atau jika tidak mungkin, itu dapat membatalkan program dengan anggun dengan mencetak pesan kesalahan yang sesuai. Meskipun instruksi khusus tidak menyebabkan pengecualian, pengecualian akan selalu disebabkan oleh instruksi. Misalnya, divisi dengan kesalahan nol hanya dapat terjadi selama pelaksanaan instruksi divisi.
Apa perbedaan antara interupsi dan pengecualian?
Interupsi adalah interupsi perangkat keras, sedangkan pengecualian adalah interupsi perangkat lunak. Kejadian interupsi perangkat keras biasanya menonaktifkan interupsi perangkat keras lainnya, tetapi ini tidak berlaku untuk pengecualian. Jika Anda perlu melarang interupsi perangkat keras sampai pengecualian disajikan, Anda perlu membersihkan bendera interupsi secara eksplisit. Dan biasanya bendera interupsi pada komputer mempengaruhi interupsi (perangkat keras) yang bertentangan dengan pengecualian. Ini berarti membersihkan bendera ini tidak akan mencegah pengecualian.