ПредишенСледващото

Съществуват няколко вида на извънредни ситуации. в които поведението на процесора се регулира от специални правила. Такива ситуации възникват, които изискват спешна реакция към външни дразнители, когато има някаква грешка или е вероятно неточен резултат на изчисление по време на изпълнението на програмата.

  • Прекъсвания и изключения (прекъсвания и изключения) - се откриват и се обработват от процесор в различни времена и може да се появи, както от външни и вътрешни източници, всички други видове извънредни ситуации заемат по-ниско ниво на йерархията и могат да се обработват само ако първият ще разкажа съществуването си чрез прекъсване или специална ситуация.
  • Изключения FPU (плаваща запетая изключения) - може да се случи само когато копроцесор инструкция. MMX или 3DNow отбора! -commands. Появата на извънредна ситуация FPU. от своя страна, може да доведе до генерирането на сигнал за прекъсване чрез фуража за специални терминали външни процесор (така наречените реакция в MS-DOS-стил) или специални ситуации (вътрешен механизъм процесор осигурява поколение копроцесор #MF грешка), която се разбира манипулатор вследствие на това, което изключение се наблюдава и какви стъпки в това отношение трябва да се направи (повече.).
  • Изключения SIMD (SSE) (SIMD плаваща запетая изключения) - може да се случи само когато SIMD-команди и напълно се определя от състоянието на процесорните SIMD-регистри. SIMD-изключение докладва възникването им, чрез производство на специална специална ситуация #XM. Получаване на управление, специални ситуации манипулатор трябва да се програмно определи причината за изключение (повече.).

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

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

Всички прекъсвания и изключения имат уникални идентификационни номера. Тези числа се наричат ​​прекъсват вектори и обхват от 0 до 255. Векторите 0-31 са запазени за специални ситуации и НИМ. някои от които са запазени и не трябва да се използва от програми. Вектори на 32-255 са свободни да използват всякакви потребителски програми и външните устройства.

Има два източника на прекъсване на доходите и три вида специални ситуации. Също така, се прави разлика вътрешен (програма) и външна (хардуер), генериращи прекъсвания и изключения.

  • Външно maskable прекъсване (Maskable Хардуер прекъсвания) - предизвикани от външни сигнали на изхода на процесора или вградения контролер прекъсване (Advanced Programmable Interrupt Controller - APIC). За процесори, тъй като Pentium, APIC вградени контролер е най-разпространеният метод за управление на прекъсвания. В този случай заключения LINT [1: 0] # са програмируеми чрез местно маса вектор (LVT) APIC контролер, който определя съответния терминал за получаване на всякакъв вид прекъсва. Ако вградената в контролера в APIC на процесора не, или е изключен, външни прекъсва maskable се приемат пинов INTR #. Когато този брой входящи прекъсване да се предава на процесора чрез системна шина специално външно прекъсване контролер (например, като 8259A). Обикновено, построен APIC-контролер също така взаимодейства с контролера на системата за прекъсване (I / O APIC), който може да получи множество прекъсва от различни източници, и предава към процесор (а) информация за получената прекъсне системната шина или специален специален автобус APIC (APIC сериен автобус). Ако сигналът прекъсва даде възможност не е настроен (EFLAGS.IF = 0), външни прекъсва maskable не са обработени. Ние, споменати по-горе, които са предназначени за използване maskable прекъсне вектори от 32 до 255. Технически, обаче, е възможно да се идентифицира всеки maskable прекъсване. който се получава по оста INTR стойност # процесор вектор в диапазона от 0 до 255, и ако прекъсне приемане става посредством вграден APIC контролер - в диапазона 16-255 (когато се опитват да използват вектори 0-15 APIC контролер сигнал за неправилно прекъсване вектор ).
  • Външно НИМ (Nonmaskable Външно прекъсвания) - взето на ПИН НИМ # CPU или вътрешен автобусен APIC-контролер забрана механизъм НИМ не е (не са засегнати от EFLAGS.IF флага на текущата стойност). След получаване на искането за НИМ. трансферите управляващия процесор на векторни 2 и блокира приемането на нови искания за НИМ, докато екип изпълнение IRET / IRETD. Технически прекъсне вектор 2 може да се използва за obrabtki maskable прекъсване. но методът продължава към nonmaskable искания за прекъсване на описаните по-горе осигурява определено поведение на процесора по време на тяхната обработка.

Софтуер прекъсвания и изключения (софтуер прекъсва и изключения):

Таблица 3.1. Видовете прекъсвания и изключения

Видове специални ситуации и особености на тяхното лечение

Специални ситуации. генериран от процесора са разделени на три типа - грешки. капани и неуспехи. В зависимост от вида на особена ситуация, е различен процесор реакция на външния си вид.

  • Грешка (Fault) - това е специален случай. които могат да бъдат коригирани чрез манипулатор изключение. Ако допуснете грешка среща състояние на процесора се съхранява във формата, в която е било преди началото на командата, която започна производството на грешка, а стойностите на CS: EIP. сочейки към командата съхраняват в стека с процесор. Прекъснатият програмата след корекция на грешката може да бъде удължен директно на командата, която е предизвикала грешка.
  • Trap (Trap) - специфична ситуация. който се генерира след съответна команда. В този случай, стойността съхраняват в стека CS: EIP. посочи команда, за да бъде изпълнена след командата, която е предизвикала капана; например, ако капана настъпили през инструкция JMP. запаметените стойности на CS: EIP точка на екипа, е целта на инструкцията JMP.
  • Неспазването (Прекрати) - това е специален случай. който не позволява точна локализация причинени екипът й и не позволява да се рестартира. Повреди се използват за някои от съобщенията за грешки, като например: технически проблеми и наличието на неправилни стойности в таблиците на системата.

Правила управление на прекъсвания механизъм на функциониране и специални ситуации доказано зависи от начина на работа на процесора и текущите настройки на някои знамена в регистъра CR 4. Сам, този механизъм включва следните елементи:

Таблица 6.55. Методи за работа с прекъсвания и изключения обработка в различни режими

Подкрепете проекта - споделете линка, благодаря!