Interrupt vs trap
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 atau perangkap. Pengecualian adalah interupsi perangkat lunak yang dihasilkan secara otomatis, sedangkan jebakan adalah interupsi yang dipasang perangkat lunak yang diprakarsai oleh programmer. 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 itu interupsi?
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 membutuhkan interupsi perangkat keras lain untuk terjadi saat ISR sedang berjalan, Anda perlu melakukannya secara eksplisit dengan membersihkan bendera interupsi (dengan sti petunjuk). Dalam mesin 80 × 86, membersihkan bendera interupsi hanya akan mempengaruhi interupsi perangkat keras.
Apa itu Perangkap?
Perangkap dapat diidentifikasi sebagai transfer kontrol, yang diprakarsai oleh programmer. Istilah perangkap digunakan secara bergantian dengan istilah pengecualian (yang merupakan interupsi perangkat lunak yang terjadi secara otomatis). Tetapi beberapa orang mungkin berpendapat bahwa jebakan hanyalah panggilan subrutin khusus. Jadi mereka jatuh ke dalam kategori interupsi yang dipasang perangkat lunak. Misalnya, dalam mesin 80 × 86, seorang programmer dapat menggunakan int instruksi untuk memulai jebakan. Karena jebakan selalu tanpa syarat, kontrol akan selalu ditransfer ke subrutin yang terkait dengan perangkap. Instruksi yang tepat, yang memohon rutin untuk menangani perangkap mudah diidentifikasi karena instruksi eksplisit digunakan untuk menentukan perangkap.
Apa perbedaan antara interuprika dan perangkap?
Interupsi adalah interupsi perangkat keras, sedangkan perangkap adalah interupsi yang dipasang perangkat lunak. Kejadian interupsi perangkat keras biasanya menonaktifkan interupsi perangkat keras lainnya, tetapi ini tidak berlaku untuk perangkap. Jika Anda perlu melarang interupsi perangkat keras sampai jebakan disajikan, Anda perlu membersihkan bendera interupsi secara eksplisit. Dan biasanya bendera interupsi pada komputer mempengaruhi interupsi (perangkat keras) yang bertentangan dengan perangkap. Ini berarti membersihkan bendera ini tidak akan mencegah perangkap. Tidak seperti perangkap, interupsi harus mempertahankan keadaan CPU sebelumnya.