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

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

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

Видео: Разлика между прекъсване и капан
Видео: Как армянский город Капан переживает войну. В нескольких километрах от него идут ожесточенные бои 2024, Ноември
Anonim

Прекъсване срещу капан

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

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

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

Какво е капан?

Капан може да бъде идентифициран като трансфер на контрол, който се инициира от програмиста. Терминът Trap се използва взаимозаменяемо с термина Exception (което е автоматично възникващо прекъсване на софтуера). Но някои може да твърдят, че капанът е просто специална подпрограма. Така те попадат в категорията на прекъсванията, извикани от софтуера. Например, в 80 × 86 машини, програмист може да използва инструкцията int, за да инициира капан. Тъй като капанът винаги е безусловен, контролът винаги ще се прехвърля в подпрограмата, свързана с капана. Точната инструкция, която извиква рутината за обработка на капана, се идентифицира лесно, тъй като се използва изрична инструкция за определяне на капана.

Каква е разликата между Interrupt и Trap?

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

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