Распределение прерываний в ПК на базе процессоров x86
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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

1. Прерывания микропроцессора

2. Аппаратные

3. Программные

4. Операционной системы

5. BASIC ("базисные")

6. Адресные

7. Общего назначения

Прерывания микропроцессора и аппаратные прерывания (1 и 2) встроены в процессор и аппаратное обеспечение ПК. Восемь из 16 возможных прерываний не могут быть изменены. Прерывания распределены следующим образом:

Распределение аппаратных прерываний:

Номер прерывания Назначение
0 Системный таймер
1 Контроллер клавиатуры
2 Резерв
3 COM2/COM4
4 COM1/COM3
5 Резерв
6 Контроллер FDD
7 LPT1
8 Часы реального времени с автономным питанием (CMOS)
9 Резерв
10 Резерв
11 Резерв
12 Контроллер мыши PS/2
13 Математический сопроцессор
14 Контроллер IDE Primary
15 Контроллер IDE Secondary

Программные прерывания являются частью программ ROM-BIOS (то есть, "вшиты"). Сами подпрограммы BIOS, вызываемыми этими прерываниями, не могут быть изменены, однако векторы, указывающие на эти подпрограммы, могут быть изменены таким образом, что они будут указывать совсем на другие подпрограммы. Зарезервированные коды – 5, 16-28, 72.

Прерывания ОС используются самой ОС. Многие программы и языки программирования для выполнения своих основных операций, особенно тех, которые связаны дисковым вводом-выводом, через прерывания ОС используют служебные функции ОС. Зарезервированные коды – 32-255 (используются 32-96).

Прерывания BASIC присваиваются самим BASIC и доступны тогда, когда используется BASIC. Зарезервированные коды – 128-240.

Адресные прерывания являются частью таблицы векторов прерываний и используются для хранения сегментных адресов. С этими прерываниями не связаны какие-либо действительные прерывания или подпрограммы обработки прерываний. Три из них связаны с тремя очень важными таблицами: таблицей инициализации изображения, основной таблицей диска и таблицей графических символов. Эти таблицы содержат параметры, используемые ROM-BIOS при процедурах начального запуска и при генерации графических символов. Зарезервированные коды – 29-31, 68,73.

Прерывания общего назначения устанавливаются нашими программами для временного использования. Зарезервированные коды – 96-106.

Приоритеты прерываний

Программы, выполнявшиеся до появления запросов прерывания, называют прерываемыми программами. Программы, затребованные запросами прерывания – прерывающими программами.

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

Максимальное количество программ, прерывающих друг друга вновь возникающими запросами, называют глубиной прерывания. Степень важности запросов на прерывание зависит от времени их поступления в систему прерывания программ и характера источников запросов. Поэтому каждому источнику запросов на прерывания присваивается постоянный, как правило, уровень приоритетности, или глубина прерывании. Наивысшим приоритетом (нулевой уровень) прерывания обладают прерывания от схем контроля ЭВМ. Прерывания нулевого уровня могут прервать любую из программ, отвечающих, уровням при выделении уровней.

Первый уровень присваивается прерываниям от устройств ввода-вывода. Второй уровень – внешние прерывания ("закончилась бумага в принтере"). Третий уровень – программные прерывания и прерывания при обращении к управляющей программе – диспетчеру. Эти два класса прерываний исключают взаимно друг друга и поэтому имеют одинаковый приоритет.

Прерывания первого уровня могут прервать любую из программ второго и третьего уровней приоритетности, но не могут прервать программу с нулевым уровнем приоритетности.

Определение исполнения программ в системе с учётом приоритетности запросов прерывания:

На рисунке показано обслуживание запросов  с учётом их приоритетности. В связи с введением приоритетов время реакции  на отдельные запросы увеличивается.
Защита от прерывания. Время реакции процессора на запрос прерывания

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

Существуют два подхода к опросу запросов прерываний. Опрос запросов прерываний может проводиться либо по окончании выполнения очередного этапа команды (например, считывания команды, считывания первого операнда и т.д.), либо после завершения каждой команды программы.

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

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

Глубина прерывания – максимальное число программ, которые могут прерывать друг друга. Глубина прерывания обычно совпадает с числом уровней приоритетов, распознаваемых системой прерываний. Каждому запросу прерывания в компьютере присваивается свой номер (тип прерывания), используемый для определения адреса обработчика прерываний.
Последовательность действий, выполняемых компьютером или процессором при поступлении прерывания

1. Определение наиболее приоритетного незамаскированного запроса на прерывание, если одновременно поступило несколько запросов.

2. Определение типа выбранного запроса.

3. Сохранение текущего состояние счётчика команд и регистров-флагов.

4. Определение адреса обработчика прерывания по типу прерывания и передача управления первой команде этого обработчика.

5. Выполнение программы-обработчика прерывания.

6. Восстановление исходных значений счётчика команд и регистров-флагов, прерванных программой.

7. Продолжение выполнение прерванной программы.

Этапы 1-4 выполняются автоматически при появлении запроса прерывания.

Этап 6 также выполняется аппаратно по команде возврата из обработчика прерывания.


Защита от прерывания

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

Если разряд маски имеет значение 0, то соответствующая причина прерывания замаскирована и процессор не реагирует на данный запрос на прерывание. Если разряд маски равен 1, то соответствующая причина прерывания не замаскирована и процессор воспринимает данный запрос на прерывание.

С замаскированным запросом в зависимости от причины прерывания поступают двояким образом: или он игнорируется, или запоминается с тем, чтобы осуществить затребованные действия, когда запрет будет снят. Например, если прерывание вызвано окончанием операции в периферийном устройстве, то его следует, как правило, запомнить, иначе ЭВМ остаётся неосведомлённой о том, что периферийное устройство освободилось.

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

Реализация прерываний в современных ЭВМ осуществляется аппаратными и программными средствами, совокупность которых получила название системы прерывания. С помощью аппаратных средств обнаруживаются сигналы запроса прерывания, организуется запоминание информации , необходимой для начала функционирования программных средств, а также для передачи управления программе прерываний и восстановления старой программы. С помощью программных средств производится запись в память содержимого большинства регистров и информации о состоянии процессора. Все обслуживания прерываний, включая определение номера и типа устройства, вида ошибки, возлагаются полностью на ПО, которое иногда определяет и метод возвращения к старой (прерванной) программе.

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

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

2. Прерывание по вектору. Запрос непосредственно передаётся на соответствующую подпрограмму, т.е. все периферийные устройства обладают одинаковым приоритетом. Поскольку в данном случае опроса не требуется, время реализации прерывания меньше, чем при выполнении с опросом.

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

Распознавание наличия сигналов запроса прерывания и определение наиболее приоритетного из них может проводиться различными методами. Рассмотрим один из них.

Цепочечная однотактная система определения приоритета запроса прерывания.

Схема определения номера приоритетного запроса прерывания.

 


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

Если на входе  присутствует сигнал высокого уровня (есть запрос), то на элементе 11 формируется общий сигнал наличия запроса прерывания и дальнейшее прохождение сигнала опроса блокируется.

Если , то анализируется сигнал  и так далее.

На шифраторе элемент 12 формируется номер поступившего запроса прерывания. Этот номер передаётся в процессор только при наличии общего сигнала запроса прерывания.

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

Распределение приоритетов запросов прерываний внешних устройств осуществляется путём их физической коммутации по отношению к процессору. Указание приоритетов - жёсткое и не может быть программно изменено. Изменение приоритетов возможно только путём физической перекоммутации устройств.
Обработка прерываний ПК

Микропроцессоры типа i386 имеют два входа внешних аппаратных прерываний:

· NMI - немаскируемое прерывание, используется обычно для запросов прерываний по нарушению питания.

· INT - маскируемое прерывание, запрос от которого можно программным образом замаскировать путём сброса флага IF в регистре флагов.

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

Структура контроллера приоритетных прерываний:

 



Обработка прерываний ПК

Функции контроллера приоритетных прерываний:

· Восприятие и фиксация запросов прерывания от внешних устройств.

· Определение незамаскированных запросов среди поступивших запросов.

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

· Сравнение приоритета выделенного запроса с приоритетом запроса, который в данный момент может обрабатываться в микропроцессоре, формирование сигнала запроса на вход INT микропроцессора в том случае, если приоритет нового запроса выше.

· Передача в микропроцессор по шине данных типа прерывания, выбранного в процессе арбитража, для запуска соответствующей программы – обработчика прерывания. Это действие выполняется по сигналу разрешения прерывания INTA от микропроцессора, который выдаётся в случае, если прерывания в регистре флагов процессора не замаскированы (IF = 1).

Дата: 2019-02-02, просмотров: 608.