Kecualian vs Pengecualian
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) mengganggu, sementara gangguan perisian dipanggil Pengecualian. Sebaik sahaja gangguan (perisian atau perkakasan) dinaikkan, kawalan dipindahkan ke subrutin khas yang disebut ISR (Ralat Perkhidmatan Interrupt) yang boleh mengendalikan keadaan yang dibangkitkan oleh gangguan.
Apa itu Interrupt?
Istilah Interrupt biasanya digunakan untuk gangguan peranti keras. Mereka adalah gangguan kawalan program yang disebabkan oleh peristiwa perkakasan luaran. Di sini, luaran bermaksud luaran ke CPU. Penggantungan perkakasan biasanya datang dari pelbagai sumber seperti cip pemasa, peranti periferi (papan kekunci, tetikus, dll.), Port I / O (siri, selari, dll.), Pemacu cakera, jam CMOS, kad pengembangan (kad bunyi, kad, dan sebagainya). Ini bermakna gangguan peranti keras 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 menetap dapat menimbulkan gangguan ini dan dapat memberitahu CPU bahawa peranti tertentu memerlukan perhatian. Dalam keadaan seperti itu CPU akan menghentikan apa yang pernah dilakukannya (iaitu 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 dinyahdayakan (mis. Dalam 80 × 86 mesin). Sekiranya anda memerlukan interupsi perkakasan lain yang berlaku semasa ISR sedang berjalan, anda perlu melakukannya secara jelas dengan membersihkan bendera mengganggu (dengan arahan sti). Dalam 80 × 86 mesin, pembersihan bendera mengganggu hanya akan menjejaskan gangguan perkakasan.
Apa itu Pengecualian?
Pengecualian adalah gangguan perisian, yang boleh dikenal pasti sebagai rutin pengendali khas. Pengecualian boleh dikenalpasti sebagai perangkap secara automatik (Perangkap boleh dikenalpasti sebagai pemindahan kawalan, yang dimulakan oleh programmer). Umumnya, tiada arahan khusus yang berkaitan dengan pengecualian (perangkap dijana menggunakan arahan khusus). Oleh itu, pengecualian berlaku disebabkan oleh keadaan "luar biasa" yang berlaku semasa pelaksanaan program. Sebagai contoh, pembahagian dengan sifar, pelaksanaan opcode haram atau kesalahan berkaitan memori boleh menyebabkan pengecualian. Setiap kali pengecualian dibangkitkan, CPU sementara menangguhkan program yang sedang dilaksanakan 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 anggun dengan mencetak mesej ralat yang sesuai. Walaupun arahan khusus tidak menyebabkan pengecualian, pengecualian akan selalu disebabkan oleh arahan. Sebagai contoh, pembahagian dengan ralat sifar hanya boleh berlaku semasa pelaksanaan arahan bahagian.
Apakah perbezaan antara Interrupt dan Exception?
Gangguan interrupt adalah 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 jelaskan bendera mengganggu secara jelas. Dan biasanya bendera mengganggu pada komputer mempengaruhi (perkakasan) mengganggu berbanding dengan pengecualian. Ini bermakna bahawa membersihkan bendera ini tidak akan menghalang pengecualian.