Системное программирование (48988)

Посмотреть архив целиком






ДОКДАД

ПО ДИСЦИПЛИНЕ:

«СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ»

НА ТЕМУ:

«ПРЕРЫВАНИЕ»


Содержание


Прерывание и его природа

Контролер прерываний

Обработка прерываний в реальном режиме

Характеристики реального режима работы микропроцессора

Общая схема обработки прерываний в реальном режиме

Написание собственного прерывания

Пример разработки прерывания в общем случае


Прерывание и его природа


Прерывание – инициируемый определенным образом процесс, временно переключающий микропроцессор на выполнение другой программы с последующим возобновлением выполнения прерванной программы.

Механизм прерываний позволяет обеспечить наиболее эффективное управление не только внешними устройствами, но и программами. Нажимая клавишу на клавиатуре, вы тем самым инициируете посредством прерывания немедленный вызов программы, которая распознает нажатую клавишу, заносит ее код в буфер клавиатуры, откуда он в дальнейшем считывается некоторой другой программой или операционной системой. На время такой обработки микропроцессор прекращает выполнение некоторой программы и переключается на так называемую процедуру обработки прерывания. После того как данная процедура выполнит необходимые действия, прерванная программа продолжит выполнение с точки, где было приостановлено ее выполнение. Некоторые операционные системы используют механизм прерываний не только для обслуживания внешних устройств, но и для представления своих «услуг». Так, операционная система MS-DOS взаимодействует с системными и прикладными программами преимущественно через систему прерываний.

Исходя из вышеприведенных рассуждений, можно сказать, что прерывания могут быть внешними и внутренними.

Внешние прерывания вызываются внешними по отношению к микропроцессору событиями. На приведенном ниже рис.1 схематически изображена подсистема прерываний компьютера на базе микропроцессора Intel.


Рис.1. Подсистема прерываний компьютера


На рис.1 видно, что у микропроцессора есть два физических контакта – INTR и NMI. На них и формируются внешние по отношению к микропроцессору сигналы, возрастающие фронты которых извещают микропроцессор о том, что некоторое внешнее устройство просит уделить ему внимание. Вход INTR (Interrupt Request) предназначен для фиксации запросов от периферийных различных устройств, например таких, как системные часы, клавиатура, жесткий диск и т.д. Вход NM1 (NonMaskeable Interrupt) – немаскируемое прерывание. Этот вход используют для того чтобы сообщить микропроцессору о некотором событии, требующем безотлагательной обработки, или катастрофической ошибке. Внешние прерывания относятся, естественно, к не планируемым прерываниям.

Внутренние прерывания возникают внутри микропроцессора во время вычислительного процесса. К их появлению приводит одна их двух причин:

  • Ненормальное внутреннее состояние процессора, возникшее при обработке некоторой команды программы. Такие события принято называть исключительными ситуациями, или просто исключениями. Этот вид прерываний отчасти также можно отнести к не планируемым;

  • Обработка машинной команды int xx. Этот тип прерываний называется программным. Это – планируемые прерывания, так как с их помощью программист обращается в нужное для него время за обслуживанием своих запросов либо к операционной системе, либо к BIOS, либо к собственным программам обработки прерываний.

Для глубокого понимания процессов, происходящих в компьютере при осуществлении прерывания, необходимо узнать о том, какие ресурсы компьютера при этом задействуются, каковы их характеристики и принципы функционирования.

В общем случае система прерываний – это совокупность программных и аппаратных средств, реализующих механизма прерываний.

К аппаратным средствам системы прерываний относятся:

  • Выводы микропроцессора:

    • INTR – вывод для входного сигнала внешнего прерывания. На этот вход поступает выходной сигнал от микросхемы контролера прерываний 8259А;

    • INTA – вывод микропроцессора для выходного сигнала подтверждения получения сигнала прерывания микропроцессором. Этот выходной сигнал поступает на одноименный вход INTA микросхемы контроллера прерываний 8259А;

    • NMI – вывод микропроцессора для входного сигнала немаскируемого прерывания;

  • Микросхема программируемого контроллера прерываний 8259А. она предназначена для фиксирования сигналов прерываний от восьми различных внешних устройств. В силу ее важной роли при работе всей вычислительной системы мы ее подробно рассмотрим ниже;

  • Внешние устройства: таймер, клавиатура, магнитные диски и.д.

К программным средствам системы прерываний реального режима относятся:

  • Таблица векторов прерываний. В этой таблице в определенном формате, который зависит от режима работы микропроцессора, содержатся указатели на процедуры обработки соответствующих прерываний;

  • Следующие флаги в регистре флагов flags\eflags:

        • IF (Interrupt Flag) – флаг прерывания. Предназначен для так называемого маскирования (запрещения) аппаратных прерываний, то есть прерываний по входу INTR. На обработку прерываний остальных типов флаг IF влияния не оказывает. Если IF = 1, микропроцессор обрабатывает внешние прерывания, если IF = 0, микропроцессор игнорирует сигналы на входе INTR;

        • TF (Trace Flag) – флаг трассировки. Единичное состояние флага TF переводит микропроцессор в режим покомандной работы. В режиме покомандной работы после выполнения каждой машинной команды в микропроцессоре генерируется внутреннее прерывание с номером 1, и далее следуют действия в соответствии с алгоритмом обработки данного прерывания;

  • Машинные команды микропроцессора: int, into, iret, cli, sti.


Контролер прерываний


Центральное место в схеме обработки аппаратных прерываний занимает программируемый контроллер прерываний (ПКП), выполненный в виде специальной микросхемы i8259A. Эта микросхема может обрабатывать запросы от восьми источников внешних прерываний. Этого явно мало, поэтому в стандартной конфигурации вычислительной системы обычно используют две последовательно соединенные микросхемы i8259A. В результате такого соединения количество возможных источников внешних прерываний возрастает до 15.

Перечислим функции, выполняемые микросхемой контроллера прерываний:

  • Фиксирование запросов на обработку прерывания от восьми источников, формирование единого запроса на прерывание и подача его на вход INTR микропроцессора;

  • Формирование номера вектора прерывания и выдача его на шину данных;

  • Организация приоритетной обработки прерываний;

  • Запрещение (маскирование) прерываний с определенными номерами.

На рис.2 показано схематическое представление внутренней структуры и физических выводов микросхемы i8259A.


Рис.2. Структурная схема и схематическое представление выводов i8259A.

















Рассмотрим назначение основных структурных компонентов контроллера прерываний:

  • Регистр запросов на прерывания IRR (Interrupt Request Register) – восьмиразрядный регистр, фиксирующий поступление сигнала на один из входов i8259A – irq0…irq7. фиксация выражается в установке соответствующего бита в единичное состояние;

  • Регистр маскирования прерываний IMR (Interrupt Mask Register) – восьмиразрядный регистр, с помощью которого можно запретить обработку запросов на прерывания, поступающих на соответствующие входы (уровни) irq0…irq7. Для запрещения (маскирования) определенных уровней прерываний необходимо установить соответствующие биты регистра IMR. Эта операция осуществляется путем программирования порта 21h.

  • Регистр обслуживаемых прерываний ISR (Interrupt Service Register) – восьмиразрядный регистр, единичное состояние разрядов которого показывает, прерывания каких уровней обрабатываются в данный момент в микропроцессоре;

  • Арбитр приоритетов PR (Priority Resolver) – функцией данного блока является разрешение конфликта при одновременном поступлении запросов на входы irq0…irq7;

  • Блок управления – основной функцией данного блока является организация информационного обмена контроллера прерываний и микропроцессора через шину данных. На этот блок замыкаются как выводы d0…d7, так и некоторые другие.

Рассмотрим возможные прохождение и обработку сигнала прерывания от некоторого внешнего устройства. При этом воспользуемся структурной схемой контроллера прерываний и обозначениями не ней (рис.2).

Допустим, на вход irq0 поступает сигнал прерывания, что приводит к установке нулевого бита регистра IRR. Этот регистр связан с регистром маски IMR, состояние битов которого определяет, какие уровни прерываний запрещены (единичные биты) или разрешены к обработке (нулевые биты). Управление данным регистром осуществляется через порт 21h. Таким образом, если бит 0 в IMR равен нулю, то прерывание уровня 0 разрешено. Далее сигнал поступает к арбитру приоритетов. Как мы уже отметили, функция этого блока – разрешение конфликтов при одновременном поступлении запросов на несколько уровней. Обычно самый высокий приоритет у уровня irq_0, и далее уменьшается с возрастанием номера уровня. Если конфликта нет, то сигнал поступает на схему управления контроллером прерываний, которая формирует сигнал на выводе int. Этот вывод связан со входом микропроцессора INTR. Таким образом, сигнал на входе i8259A достиг микропроцессора. Отметим важные моменты на этом этапе:


Случайные файлы

Файл
57913.rtf
137924.rtf
166704.rtf
47027.rtf
169508.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.