русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Организация прерываний в ПК. Приоритеты при обработке прерываний. Режимы работы и программирование

Прерывание можно рассматривать как  некоторое  особое  событие  в системе, требующее моментальной реакции.

Типы прерываний.

По источнику  и  характеру  возникновения  прерывания  можно разделить на группы:

                                  Прерывания
                            +-------------------------+
                       Аппаратные                 Программные
                  +--------------------+
               Внешние            Внутренние
           +--------------+
      Маскируемые    Немаскируемые

 

Программные прерывания вызывают сами программы, поэтому  они не являются асинхронными. Для этого они используют команду INT. Программные прерывания удобно использовать  для  организации доступа к отдельным общим для всех  программ  модулям.  Например, программные  модули  операционной  системы  доступны   прикладным программам именно через прерывания, и нет необходимости при вызове этих модулей знать  их  текущий  адрес  в  памяти.  Прикладные программы сами могут устанавливать  свои  обработчики  прерываний для их последующего использования другими программами. Для  этого встраиваемые обработчики прерываний должны  быть  резидентными  в памяти.  Аппаратные прерывания вызываются физическими устройствами и приходят асинхронно. Эти прерывания информируют систему о событиях,  связанных  с  работой  устройств. Использование прерываний при работе  с  медленными  внешними устройствами позволяет совместить ввод/вывод с обработкой  данных в центральном процессоре и в результате повышает общую производительность системы. Внутренние (логические) прерывания формируются самим процессором, когда он встречается с некоторыми особыми событиями  вроде деления на 0. Это прерывания с номерами 0, 1, 3, Внешние аппаратные прерывания вызваны сигналами, внешними по отношению к центральному процессору,  и подаются на его входы INT и NMI. Прерывания по входу INT относятся в  аппаратным  маскируемым прерываниям, поскольку могут быть разрешены или запрещены  флагом IF регистра флагов. Обработку  аппаратных   маскируемых   прерываний   выполняют контроллеры прерываний, которые принимают запросы  на  прерывание от нескольких устройств, назначают им приоритеты, выбирают наиболее приоритетные и прерывают работу процессора по входу INT.

 Номер вектора прерываний маскируемых прерываний передается в процессор по его восьми младшим разрядам шины данных. Вход немаскируемого  прерывания  NMI обычно используется для сообщений о "катастрофических" событий (отключении питания, обнаружении ошибок памяти и т.д.). Номер этого прерывания равен 2. Так как номер немаскируемого прерывания  заведомо  известен, то  он не передается в процессор и обработка этого прерывания начинается быстрее, чем обработка маскируемых прерываний. Запрос на прерывание NMI маскируется установкой в 1 старшего 7-го бита порта 70h. При этом остальные биты (6-й бит всегда равен 0, а биты 5- 0 задают адрес CMOS памяти) должны остаться без изменения. Приоритет NMI выше всех маскируемых прерываний. Для того чтобы связать номер прерывания  с  адресом  программы обработки прерываний (обработчика прерываний), используется таблица векторов прерываний, занимающая первый килобайт оперативной памяти  -  адреса от 0000:0000 до 0000:03FF.  Таблица состоит из 256 элементов - FAR-адресов обработчиков прерываний.  Эти элементы называются векторами прерываний. В первом слове элемента таблицы записано смещение, а во втором - сегмент адреса обработчика прерываний.

     Прерыванию с   номером   0   соответствует  адрес  0000:0000, прерыванию с номером 1 - 0000:0004 и т.д.  Прерыванию с номером  n будет соответствовать адрес 0000:4*n.

     Инициализация таблицы  происходит  частично  программой  BIOS после тестирования аппаратуры,  частично при загрузке DOS. DOS может переключить на себя некоторые прерывания BIOS. Часто при выполнении критических участков программ,  для того чтобы гарантировать выполнение определенной последовательности команд,  приходится запрещать прерывания. Это можно сделать командой CLI (сброс флага разрешения прерывания).  Ее нужно поместить в начало критической последовательности команд,  а в конце расположить команду  STI (установить флаг разрешения прерывания).  Команда CLI запрещает только маскируемые прерывания,  немаскируемые всегда обрабатываются процессором.

    Если использовать  запрет прерываний с помощью команды CLI, следует следить за тем,  чтобы прерывания не отключались на длительный период времени,  т.к. это может привести к нежелательным последствиям, например, будут отставать часы.

    Если надо  запретить  не  все прерывания,  а только некоторые,
например, от клавиатуры, то для этого надо воспользоваться услугами контроллера прерываний. Если программе потребуется организовать обработку некоторых  прерываний,  то  для этого необходимо переназначить требуемый вектор прерываний на свой обработчик. Это можно сделать, изменив содержание соответствующего элемента таблицы векторов прерываний. Аппаратные прерывания вырабатываются устройствами компьютера, когда возникает необходимость их обслуживания. В отличие от программных прерываний, вызываемых запланировано самой прикладной программой, аппаратные прерывания всегда происходят асинхронно по отношению к выполняющимся программам. Кроме того, может возникнуть одновременно сразу несколько прерываний!

Для того, чтобы система "не растерялась", решая какое прерывание обслуживать в первую очередь, существует специальная схема приоритетов. Каждому прерыванию назначается свой уникальный приоритет. Если происходит одновременно несколько прерываний, то система отдает предпочтение самому высокоприоритетному, откладывая на время обработку остальных прерываний.

Система приоритетов реализована на двух микросхемах Intel 8259 (для машин класса XT - на одной такой микросхеме). Каждая микросхема обслуживает до восьми приоритетов. Микросхемы можно объединять (каскадировать) для увеличения количества уровней приоритетов в системе.

Уровни приоритетов обозначаются сокращенно IRQ0 - IRQ15 (для машин класса XT существуют только уровни IRQ0 - IRQ7).

Для машин XT приоритеты линейно зависели от номера уровня прерывания. IRQ0 соответствовало самому высокому приоритету, за ним шли IRQ1, IRQ2, IRQ3 и так далее. Уровень IRQ2 в машинах класса XT был зарезервирован для дальнейшего расширения системы. И начиная с машин класса AT IRQ2 стал использоваться для каскадирования контроллеров прерывания 8259. Добавленные приоритетные уровни IRQ8 - IRQ15 в этих машинах располагаются по приоритету между IRQ1 и IRQ3.

Просмотров: 8527

Вернуться в оглавление:Шпаргалки по компьютеру




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.