Разлика между прекъсване и изключение

Разлика между прекъсване и изключение
Разлика между прекъсване и изключение

Видео: Разлика между прекъсване и изключение

Видео: Разлика между прекъсване и изключение
Видео: Захваты для бейсбольных кувшинов 2024, Декември
Anonim

Прекъсване срещу изключение

Във всеки компютър, по време на нормалното му изпълнение на програма, може да има събития, които могат да доведат до временно спиране на процесора. Събития като това се наричат прекъсвания. Прекъсванията могат да бъдат причинени от софтуерни или хардуерни грешки. Хардуерните прекъсвания се наричат (просто) Прекъсвания, докато софтуерните прекъсвания се наричат Изключения. След като се повдигне прекъсване (софтуер или хардуер), управлението се прехвърля към специална подпрограма, наречена ISR (Interrupt Service Rutine), която може да се справи с условията, които са повдигнати от прекъсването.

Какво е прекъсване?

Терминът Прекъсване обикновено е запазен за хардуерни прекъсвания. Те са прекъсвания на програмния контрол, причинени от външни хардуерни събития. Тук външни означава външни за процесора. Хардуерните прекъсвания обикновено идват от много различни източници като таймер чип, периферни устройства (клавиатури, мишка и т.н.), I / O портове (серийни, паралелни и т.н.), дискови устройства, CMOS часовник, разширителни карти (звукова карта, видео карта и т.н.). Това означава, че хардуерните прекъсвания почти никога не възникват поради някакво събитие, свързано с изпълняващата програма. Например събитие като натискане на клавиш от клавиатурата от потребителя или изчакване на вътрешния хардуерен таймер може да доведе до този вид прекъсване и може да информира процесора, че определено устройство се нуждае от известно внимание. В ситуация като тази процесорът ще спре това, което някога е правил (т.е. поставя на пауза текущата програма),осигурява услугата, изисквана от устройството, и ще се върне към нормалната програма. Когато възникнат хардуерни прекъсвания и процесорът стартира ISR, други хардуерни прекъсвания се деактивират (напр. В 80 × 86 машини). Ако се нуждаете от други хардуерни прекъсвания, докато ISR работи, трябва да направите това изрично, като изчистите флага за прекъсване (с инструкция sti). В 80 × 86 машини изчистването на флага за прекъсване ще засегне само хардуерни прекъсвания.изчистването на флага за прекъсване ще засегне само хардуерни прекъсвания.изчистването на флага за прекъсване ще засегне само хардуерни прекъсвания.

Какво представляват изключенията?

Изключение е софтуерно прекъсване, което може да бъде идентифицирано като специална програма за обработка. Изключение може да бъде идентифицирано като автоматично възникващ капан (Trap може да бъде идентифициран като трансфер на контрол, който се инициира от програмиста). Като цяло няма конкретни инструкции, свързани с изключения (капани се генерират с помощта на конкретна инструкция). И така, възниква изключение поради „изключително“условие, което възниква по време на изпълнението на програмата. Например разделянето на нула, изпълнението на незаконен код за работа или свързана с паметта грешка може да доведе до изключения. Винаги, когато възникне изключение, CPU временно спира програмата, която изпълнява, и стартира ISR. ISR ще съдържа какво да се прави с изключението. Може да коригира проблема или ако не е възможно, може да прекрати изящно програмата, като отпечата подходящо съобщение за грешка. Въпреки че конкретна инструкция не причинява изключение, изключение винаги ще бъде причинено от инструкция. Например делението на нула грешка може да възникне само по време на изпълнение на инструкцията за деление.

Каква е разликата между Прекъсване и Изключение?

Прекъсванията са хардуерни прекъсвания, докато изключенията са софтуерни прекъсвания. Появите на хардуерни прекъсвания обикновено деактивират други хардуерни прекъсвания, но това не е вярно за изключенията. Ако трябва да забраните хардуерните прекъсвания, докато не се сервира изключение, трябва изрично да изчистите флага за прекъсване. И обикновено флагът за прекъсване на компютъра засяга (хардуерни) прекъсвания, за разлика от изключенията. Това означава, че изчистването на този флаг няма да предотврати изключения.

Препоръчано: