Mengganggu vs perangkap
Di mana -mana komputer, semasa pelaksanaan normal program, mungkin ada peristiwa yang boleh menyebabkan CPU berhenti sementara. Peristiwa seperti ini dipanggil gangguan. Gangguan boleh disebabkan oleh salah satu perisian atau kesalahan perkakasan. Gangguan perkakasan dipanggil (hanya) mengganggu, sementara gangguan perisian dipanggil pengecualian atau perangkap. Pengecualian adalah gangguan perisian yang dihasilkan secara automatik, sementara perangkap adalah gangguan perisian yang dimulakan oleh pengaturcara. Sebaik sahaja gangguan (perisian atau perkakasan) dibangkitkan, kawalan dipindahkan ke subrutin khas yang dipanggil ISR (rutin perkhidmatan gangguan) yang boleh mengendalikan syarat -syarat yang dibangkitkan oleh gangguan.
Apa itu gangguan?
Istilah gangguan biasanya dikhaskan untuk gangguan perkakasan. Mereka adalah gangguan kawalan program yang disebabkan oleh peristiwa perkakasan luaran. Di sini, luaran bermaksud luaran ke CPU. Gangguan perkakasan biasanya datang 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 bunyi, kad video, dll). Itu bermaksud gangguan perkakasan hampir tidak pernah berlaku kerana beberapa peristiwa yang berkaitan dengan program pelaksanaan. Sebagai contoh, peristiwa seperti tekan utama pada papan kekunci oleh pengguna, atau pemasa perkakasan dalaman masa keluar dapat meningkatkan gangguan seperti ini dan dapat memaklumkan CPU bahawa peranti tertentu memerlukan perhatian. Dalam keadaan seperti itu CPU akan menghentikan apa sahaja yang dilakukannya (saya.e. menjeda 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 (e.g. di 80 × 86 mesin). Sekiranya anda memerlukan gangguan perkakasan lain yang berlaku semasa ISR sedang berjalan, anda perlu melakukannya dengan jelas dengan membersihkan bendera gangguan (dengan sti arahan). Dalam mesin 80 × 86, membersihkan bendera mengganggu hanya akan menjejaskan gangguan perkakasan.
Apa itu perangkap?
Perangkap boleh dikenal pasti sebagai pemindahan kawalan, yang dimulakan oleh pengaturcara. Istilah perangkap digunakan secara bergantian dengan pengecualian istilah (yang merupakan gangguan perisian yang berlaku secara automatik). Tetapi ada yang berpendapat bahawa perangkap hanyalah panggilan subrutin khas. Oleh itu, mereka jatuh ke dalam kategori gangguan yang dilanda perisian. Sebagai contoh, dalam mesin 80 × 86, seorang pengaturcara boleh menggunakan int arahan untuk memulakan perangkap. Kerana perangkap selalu tanpa syarat kawalan akan selalu dipindahkan ke subrutin yang berkaitan dengan perangkap. Arahan yang tepat, yang memanggil rutin untuk mengendalikan perangkap dengan mudah dikenal pasti kerana arahan eksplisit digunakan untuk menentukan perangkap.
Apakah perbezaan antara gangguan dan perangkap?
Gangguan adalah gangguan perkakasan, sementara perangkap adalah gangguan perisian. Kejadian gangguan perkakasan biasanya melumpuhkan gangguan perkakasan lain, tetapi ini tidak benar untuk perangkap. Sekiranya anda perlu tidak membenarkan perkakasan mengganggu sehingga perangkap dihidangkan, anda perlu jelas membersihkan bendera gangguan. Dan biasanya bendera mengganggu pada komputer mempengaruhi (perkakasan) mengganggu berbanding dengan perangkap. Ini bermaksud membersihkan bendera ini tidak akan menghalang perangkap. Tidak seperti perangkap, gangguan harus memelihara keadaan CPU sebelumnya.