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

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

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

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

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

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

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

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

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

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

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

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

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