Perbezaan Antara Interrupt dan Exception

Anonim

Interrupt vs Exception

Di mana-mana komputer, semasa pelaksanaan program yang normal, mungkin ada peristiwa yang dapat menyebabkan CPU berhenti sementara. Peristiwa-peristiwa seperti ini disebut gangguan. Gangguan boleh disebabkan oleh perisian atau kesalahan perkakasan. Penggantungan perkakasan dipanggil (semata-mata) Ganggu, sementara gangguan perisian dipanggil Pengecualian. Sebaik sahaja gangguan (perisian atau perkakasan) dinaikkan, kawalan dipindahkan ke subrutin khas yang dipanggil ISR (Rutin Perkhidmatan Interrupt) yang boleh mengendalikan keadaan yang dibangkitkan oleh gangguan.

Apa itu Interrupt?

Istilah Interrupt biasanya dikhaskan untuk mengganggu perkakasan. Mereka adalah gangguan kawalan program yang disebabkan oleh peristiwa perkakasan luaran. Di sini, luaran bermaksud luaran ke CPU. Tangki perkakasan biasanya datang dari pelbagai sumber seperti cip pemasa, peranti periferal (papan kekunci, tetikus, dll.), Port I / O (siri, selari, dll.), Pemacu cakera, jam CMOS, kad pengembangan (kad bunyi, kad, dan sebagainya). Ini bermakna gangguan perkakasan hampir tidak pernah berlaku disebabkan oleh beberapa peristiwa yang berkaitan dengan program pelaksana. Contohnya, peristiwa seperti akhbar utama pada keyboard oleh pengguna, atau pemasa perkakasan dalaman yang berkala boleh menimbulkan gangguan ini dan dapat memberitahu CPU bahawa peranti tertentu memerlukan perhatian. Dalam keadaan seperti itu, CPU akan menghentikan apa yang sedang dilakukannya (i. Menghentikan program semasa), menyediakan perkhidmatan yang diperlukan oleh peranti dan akan kembali kepada program biasa. Apabila gangguan perkakasan berlaku dan CPU memulakan ISR, gangguan perkakasan lain dilumpuhkan (pada mesin 80 × 86). Sekiranya anda memerlukan interupsi perkakasan lain yang berlaku semasa ISR sedang berjalan, anda perlu melakukan itu secara jelas dengan membersihkan bendera mengganggu (dengan arahan sti). Dalam mesin 80 × 86, membersihkan bendera mengganggu hanya akan menjejaskan gangguan perkakasan.

Apakah Pengecualian?

Pengecualian adalah gangguan perisian, yang boleh dikenal pasti sebagai rutin pengendali khas. Pengecualian boleh dikenal pasti sebagai perangkap secara automatik (Perangkap boleh dikenalpasti sebagai pemindahan kawalan, yang dimulakan oleh programmer). Pada amnya, tiada arahan khusus yang berkaitan dengan pengecualian (perangkap dijana menggunakan arahan tertentu). Oleh itu, pengecualian berlaku disebabkan oleh keadaan "luar biasa" yang berlaku semasa pelaksanaan program. Sebagai contoh, pembahagian dengan sifar, pelaksanaan opcode haram atau kesalahan yang berkaitan dengan memori boleh menyebabkan pengecualian. Setiap kali pengecualian dibangkitkan, CPU sementara menangguhkan program yang sedang dijalankan dan memulakan ISR. ISR akan mengandungi apa yang perlu dilakukan dengan pengecualian. Ia mungkin membetulkan masalah atau jika tidak mungkin ia boleh membatalkan program dengan cara yang baik dengan mencetak mesej ralat yang sesuai.Walaupun arahan khusus tidak menyebabkan pengecualian, pengecualian akan selalu disebabkan oleh arahan. Sebagai contoh, pembahagian oleh ralat sifar hanya boleh berlaku semasa pelaksanaan arahan bahagian.

Apakah perbezaan antara Interrupt dan Exception?

Gangguan adalah gangguan perkakasan, sementara pengecualian adalah gangguan perisian. Kemunculan gangguan perkakasan biasanya melumpuhkan gangguan perkakasan lain, tetapi ini tidak benar untuk pengecualian. Sekiranya anda perlu untuk tidak membenarkan gangguan perkakasan sehingga pengecualian dihidupkan, anda perlu mengosongkan bendera mengganggu dengan jelas. Dan biasanya bendera mengganggu pada komputer mempengaruhi (perkakasan) mengganggu berbanding dengan pengecualian. Ini bermakna bahawa membersihkan bendera ini tidak akan menghalang pengecualian.