Apa perbedaan antara Trap dan Interrupt?
Jika terminologi berbeda untuk sistem yang berbeda, lalu apa artinya pada x86?
Apa perbedaan antara Trap dan Interrupt?
Jika terminologi berbeda untuk sistem yang berbeda, lalu apa artinya pada x86?
Sebuah perangkap adalah pengecualian dalam proses pengguna. Ini disebabkan oleh pembagian oleh nol atau akses memori tidak valid. Ini juga cara biasa untuk menjalankan rutin kernel ( panggilan sistem ) karena dijalankan dengan prioritas lebih tinggi daripada kode pengguna. Penanganannya sinkron (jadi kode pengguna ditangguhkan dan dilanjutkan setelahnya). Dalam arti mereka "aktif" - sebagian besar waktu, kode mengharapkan jebakan terjadi dan bergantung pada fakta ini.
Sebuah interupsi adalah sesuatu yang dihasilkan oleh perangkat keras (perangkat seperti hard disk, kartu grafis, I / O port, dll). Ini asinkron (yaitu mereka tidak terjadi di tempat-tempat yang dapat diprediksi dalam kode pengguna) atau "pasif" karena interrupt handler harus menunggu sampai akhirnya terjadi.
Anda juga dapat melihat jebakan sebagai jenis interupsi internal-CPU karena penangan untuk penangan jebakan terlihat seperti penangan interupsi (register dan penunjuk simpanan disimpan, ada sakelar konteks, eksekusi dapat dilanjutkan dalam beberapa kasus ketika penghentian) .
Perangkap dan interupsi terkait erat. Perangkap adalah jenis pengecualian , dan pengecualian serupa dengan interupsi.
Intel x86 mendefinisikan dua kategori yang tumpang tindih, peristiwa vektor ( interupsi vs pengecualian ), dan kelas pengecualian ( kesalahan vs perangkap vs batal ).
Semua kutipan dalam posting ini berasal dari versi April 2016 dari Manual Pengembang Perangkat Lunak Intel . Untuk perspektif x86 (pasti dan kompleks), saya sarankan membaca bab SDM tentang penanganan Interupsi dan Pengecualian.
Acara Vektor
Vektor Acara ( interupsi dan pengecualian ) menyebabkan prosesor untuk melompat ke penangan interupsi setelah menyimpan banyak keadaan prosesor (cukup sehingga eksekusi dapat dilanjutkan dari titik itu nanti).
Pengecualian dan interupsi memiliki ID, yang disebut vektor, yang menentukan penangan interupsi yang dilompati prosesor. Penangan interupsi dijelaskan dalam Tabel Penjelasan Interupsi.
Terganggu
Pengecualian
Klasifikasi Pengecualian
Ringkasan: perangkap menambah pointer instruksi, kesalahan tidak, dan membatalkan 'meledak'.
Perangkap
Kesalahan
Contoh: Kesalahan halaman seringkali dapat dipulihkan. Sepotong ruang alamat aplikasi mungkin telah ditukar ke disk dari ram. Aplikasi akan memicu kesalahan halaman ketika mencoba mengakses memori yang telah ditukar. Kernel dapat menarik memori itu dari disk ke ram, dan kontrol tangan kembali ke aplikasi. Aplikasi akan melanjutkan di mana ia tinggalkan (pada instruksi kesalahan yang mengakses memori yang ditukar), tetapi kali ini akses memori harus berhasil tanpa kesalahan.
Menggugurkan
Kasus Tepi
Perangkat lunak melakukan interupsi (dipicu oleh instruksi INT) berperilaku seperti perangkap. Instruksi selesai sebelum prosesor menyimpan statusnya dan melompat ke pengendali interupsi.
sumber
Secara umum, istilah-istilah seperti pengecualian, kesalahan, aborsi, Perangkap , dan Interupsi semuanya memiliki arti yang sama dan disebut "Interupsi".
Datang ke perbedaan antara Trap dan Interrupt:
Dimana sebagai
sumber
Sebuah perangkap adalah jenis khusus dari interupsi yang sering disebut sebagai software interrupt . Sebuah interupsi adalah istilah yang lebih umum yang mencakup interupsi hardware (interupsi dari perangkat hardware) dan interupsi perangkat lunak (interupsi dari perangkat lunak, seperti perangkap ).
sumber
Perangkap dipanggil oleh kode seperti program dan digunakan misalnya untuk memanggil rutinitas OS (yaitu biasanya sinkron). Interupsi disebut oleh peristiwa (berkali-kali perangkat keras, seperti kartu jaringan yang menerima data, atau pengatur waktu CPU), dan - seperti namanya - mengganggu aliran kontrol normal, karena CPU harus beralih ke rutin driver untuk menangani acara.
sumber
Interupsi adalah perubahan aliran yang dihasilkan perangkat keras dalam sistem. Penangan interupsi dipanggil untuk menangani penyebab interupsi; kontrol kemudian dikembalikan ke konteks dan instruksi yang terputus. Jebakan adalah gangguan yang dihasilkan perangkat lunak. Interupsi dapat digunakan untuk memberi sinyal penyelesaian I / O untuk meniadakan perlunya polling perangkat. Jebakan dapat digunakan untuk memanggil rutinitas sistem operasi atau untuk menangkap kesalahan aritmatika.
sumber
Saya pikir Jebakan disebabkan oleh pelaksanaan instruksi saat ini dan dengan demikian mereka disebut sebagai peristiwa sinkron. sedangkan interupsi disebabkan oleh instruksi independen yang berjalan di prosesor yang terkait dengan peristiwa eksternal dan dengan demikian dikenal sebagai yang tidak sinkron.
sumber
Interupsi adalah interupsi perangkat keras, sedangkan perangkap adalah interupsi perangkat lunak. Kejadian gangguan perangkat keras biasanya menonaktifkan gangguan perangkat keras lainnya, tetapi ini tidak berlaku untuk jebakan. Jika Anda perlu melarang perangkat keras mengganggu hingga jebakan disajikan, Anda perlu menghapus tanda interupsi secara eksplisit. Dan biasanya flag interrupt pada komputer mempengaruhi interupsi (hardware) sebagai lawan dari trap. Ini berarti bahwa membersihkan bendera ini tidak akan mencegah jebakan. Tidak seperti jebakan, interupsi harus mempertahankan status CPU sebelumnya.
sumber
Jebakan adalah gangguan perangkat lunak. Jika Anda menulis sebuah program di mana Anda mendeklarasikan variabel yang memiliki nilai nol dibagi maka itu diperlakukan sebagai jebakan. Setiap kali Anda menjalankan program ini akan menjebak kesalahan yang sama pada saat yang sama. Panggilan sistem adalah versi khusus dari jebakan di mana suatu program meminta os untuk layanannya yang diperlukan. Dalam hal interupsi (kata umum untuk gangguan hardware) seperti kesalahan i / o, cpu terputus secara acak dan tentu saja itu bukan kesalahan programmer kami. Ini adalah perangkat keras yang membawa mereka.
sumber