русс | укр

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

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

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

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


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

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

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

Поскольку прерывания возможны самые разнообразные  по  самым различным причинам, каждому прерыванию присваивается номер прерывания. С  каждым  номером  прерывания  связывается  то  или  иное событие. Система умеет распознать какое прерывание, с каким номером  произошло,  и   запускает соответствующую   этому   номеру процедуру.

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

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

Аппаратные прерывания вызываются физическими устройствами и приходят асинхронно. Эти прерывания информируют систему о событиях,  связанных  с  работой  устройств.
Внутренние (логические) прерывания формируются самим процессором, когда он встречается с некоторыми особыми событиями  вроде деления на 0. Это прерывания с номерами 0, 1, 3, 4.  Внешние аппаратные прерывания вызваны сигналами, внешними по отношению к центральному процессору,  и подаются на его входы INT и NMI.

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

2) Таблица векторов прерываний (реальный режим работы). Для того  чтобы связать номер прерывания с адресом программы обработки прерываний (обработчика прерываний),  используется таблица векторов прерываний,  занимающая первый килобайт оперативной памяти - адреса от 0000:0000h до 0000:03FFh.  Таблица состоит  из 256 элементов - FAR-адресов обработчиков прерываний. Эти элементы называются векторами прерываний.  В первом слове элемента таблицы записано  смещение, а во втором - сегмент адреса обработчика прерываний. Инициализация таблицы происходит  частично  программой  POST после тестирования аппаратуры, частично при загрузке DOS. DOS может переключить на себя некоторые прерывания BIOS.

3)  Обработка  прерываний.  Несмотря  на  многообразие типов прерываний алгоритм обработки прерывания процессором один  и  тот же. N - номер вектора прерывания ? поместить в стек регистр флагов ? обнулить флаги IF и TF ? поместить в стек значение регистра CS ? присвоить адресу вектора прерывания значение N*4 ? загрузить второе слово вектора прерываний в регистр CS ? поместить в стек значение IP ? загрузить первое слово вектора прерываний в указатель команд IP ? выполнить действия по обслуживанию данного прерывания ? извлечь из стека значение и загрузить в указатель команд IP ? извлечь из стека значение и загрузить в регистр сегмента команд CS ? извлечь из стека значение и загрузить в регистр флагов ? Конец.

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

5) Коррекция  системных обработчиков прерываний.  Если необходимо добавить какие-либо собственные действия к тем, что выполняет стандартный обработчик прерывания, то можно организовать цепочку прерываний.

Программируемый контроллер    прерываний    (   Programmable Interrupt Controller,  PIC) реализуется на микросхеме 8259А фирмы Intel  (отечественный  аналог  КР580ВН59),  и  на ее модификациях 8259А-2 и 8259А-8,  поддерживает 8 уровней прерываний  от  восьми различных устройств. Основные функции контроллера:

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

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

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




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


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

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

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


 


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

 
 

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