Глубина прерывания программ это

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

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

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

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

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

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

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

Номер прерывания Назначение
Системный таймер
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

Урок 15. Контроллер прерываний

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

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

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

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

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

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

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

Лекция 11: Прерывания

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

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

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

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

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

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

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

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

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

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

Читайте также:
Рассчитать себестоимость продукции программа

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:
Vkmusic отзывы о программе

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник: findout.su

Глубина прерывания

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

Рис. 2. Временная диаграмма обработки прерывания.

Определение. Глубина прерывания — максимальное число программ, которые могут прерывать друг друга.

Глубина прерывания обычно совпадает с числом уровней приоритетов, распознаваемых системой прерываний. Работа системы прерываний при различной глубине прерываний (n) представлена на рис. 3. Здесь предполагается, что с увеличением номера запроса прерывания увеличивается его приоритет.

Рис. 3. Работа системы прерываний при различной глубине прерываний.

Классификация прерываний

В зависимости от источника, прерывания делятся на следующие типы:

1. Аппаратные — возникают как реакция микропроцессора на физический сигнал от некоторого устройства (клавиатура, системные часы, жесткий диск и т.д.), по времени возникновения эти прерывания асинхронны, т.е. происходят в случайные моменты времени.

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

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

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

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

Читайте также:
Ошибка 0xc00007b при запуске игры или программы

Системные программы, адреса которых хранятся в векторах прерываний, в большинстве своем являются всего лишь диспетчерами, открывающими доступ к большим группам программ, реализующих системные функции. Так, видеодрайвер BIOS (вектор 10h) включает программы смены видеорежима, управления курсором, задания цветовой палитры, загрузки шрифтов и многие другие. Особенно характерен в этом отношении вектор 21h, через который осуществляется вызов практически всех функций DOS: ввода с клавиатуры и вывода на экран, обслуживания файлов, каталогов и дисков, управления памятью и процессами, службы времени и т.д. Для вызова требуемой функции надо не только выполнить команду int с соответствующим номером, но и указать системе в одном из регистров (для этой цели всегда используется регистр АН) номер вызываемой функции. Иногда для «многофункциональных» функций приходится указывать еще и номер подфункции (в регистре AL).

3. Исключения — являются реакцией микропроцессора на нестандартную ситуацию, возникшую внутри микропроцессора во время выполнения некоторой команды программы.

Внутренние прерывания возбуждаются цепями самого процессора при возникновении одной из специально оговоренных ситуаций, например, при выполнении операции деления на ноль или при попытке выполнить несуществующую команду. За каждым из таких прерываний закреплен определенный вектор, номер которого известен процессору. Например, в IBM PC за делением на 0 закреплен вектор 0, а за неправильной командой — вектор 6. Если процессор сталкивается с одной из таких ситуаций, он выполняет описанную выше процедуру прерывания, используя закрепленный за этой ситуацией вектор прерывания.

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

Источник: studopedia.su

13. Понятие глубины прерывания, приоритет прерываний

Глубина прерывания — максимальное число программ, которые могут прерывать друг друга. Глубина прерывания обычно совпадает с числом уровней приоритетов, распознаваемых системой прерываний. Работа системы прерываний при различной глубине прерываний (n) представлена на рис. 2. Здесь предполагается, что с увеличением номера запроса прерывания увеличивается его приоритет.

Рис. 2. Работа системы прерываний при различной глубине прерываний

Без учета времени реакции, а также времени запоминания и времени восстановления:

14. Аппаратные и программные прерывания

Прерывания делятся на аппаратные и программные

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

  1. маскируемые, которые могут быть замаскированы программными средствами компьютера;
  2. немаскируемые, запрос от которых таким образом замаскирован быть не может.

Программные прерывания вызываются следующими ситуациями:

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

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

15. Последовательность действий при выполнении запроса прерывания

При поступлении запроса прерывания компьютер выполняет следующую последовательность действий:

  1. определение наиболее приоритетного незамаскированного запроса на прерывание (если одновременно поступило несколько запросов);
  2. определение типа выбранного запроса;
  3. сохранение текущего состояния счетчика команд и регистра флагов;
  4. определение адреса обработчика прерывания по типу прерывания и передача управления первой команде этого обработчика;
  5. выполнение программы — обработчика прерывания;
  6. восстановление сохраненных значений счетчика команд и регистра флагов прерванной программы;
  7. продолжение выполнения прерванной программы.

Этапы 1-4 выполняются аппаратными средствами ЭВМ автоматически при появлении запроса прерывания. Этап 6 также выполняется аппаратно по команде возврата из обработчика прерывания.

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

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru