Обработка прерываний в персональной эвм
Микропроцессоры типа х86 имеют два входа запросов внешних аппаратных прерываний:
- NMI — немаскируемое прерывание, используется обычно для запросов прерываний по нарушению питания;
- INT — маскируемое прерывание, запрос от которого можно программным образом замаскировать путем сброса флага IF в регистре флагов.
Рис. 4. Структура контроллера приоритетных прерываний
Единственный вход запроса маскируемых прерываний микропроцессора не позволяет подключить к нему напрямую сигналы запросов от большого числа различных внешних устройств, которые входят в состав современного компьютера: таймера, клавиатуры, мыши, принтера, сетевой карты и т.д. Для их подключения к одному входу INT микропроцессора используется контроллер приоритетных прерываний (рис. 4). Его функции:
- восприятие и фиксация запросов прерываний от внешних устройств;
- определение незамаскированных запросов среди поступивших запросов;
- проведение арбитража: выделение наиболее приоритетного запроса из незамаскированных запросов в соответствии с установленным механизмом назначения приоритетов;
- сравнение приоритета выделенного запроса с приоритетом запроса, который в данный момент может обрабатываться в микропроцессоре, формирование сигнала запроса на вход INT микропроцессора в случае, если приоритет нового запроса выше;
- передача в микропроцессор по шине данных типа прерывания, выбранного в процессе арбитража, для запуска соответствующей программы — обработчика прерывания; это действие выполняется по сигналу разрешения прерывания INTA от микропроцессора, который выдается в случае, если прерывания в регистре флагов микропроцессора не замаскированы (IF=1).
Переход к соответствующему обработчику прерывания осуществляется (в реальном режиме работы микропроцессора) посредством таблицы векторов прерываний. Эта таблица (рис. 5) располагается в самых младших адресах оперативной памяти, имеет объем 1 Кбайт и содержит значения сегментного регистра команд (CS) и указателя команд (IP) для 256 обработчиков прерываний.
Рис. 5. Структура таблицы векторов прерываний
Обращение к элементам таблицы осуществляется по 8-разрядному коду — типу
прерывания (таблица 1)
Таблица 14.1. | |
Тип прерывания | Источник прерывания |
Деление на 0 | |
Пошаговый режим выполнения программы | |
Запрос по входу NMI | |
· · · | |
Запрос по входу IRQ0 (системный таймер) | |
Запрос по входу IRQ1 (контроллер клавиатуры) | |
· · · | |
Отсутствие сегмента в оперативной памяти | |
· · · | |
Пользовательское прерывание |
Различные источники задают тип прерывания по-разному:
- программные прерывания вводят его изнутри процессора или содержат его в номере команды INT n;
- аппаратные маскируемые прерывания вводят его от контроллера приоритетных прерываний по шине данных;
немаскируемому аппаратному прерыванию назначен тип 2.
Лекция 11: Прерывания
НОУ ИНТУИТ | Лекция | Система прерываний
Аннотация: Рассматриваются основные вопросы, связанные с организацией работы ЭВМ при обработке прерываний, а также особенности системы прерываний в персональной ЭВМ.
Организация обработки прерываний в ЭВМ
Прерывание — это прекращение выполнения текущей команды или текущей последовательности команд для обработки некоторого события специальной программой — обработчиком прерывания, с последующим возвратом к выполнению прерванной программы. Событие может быть вызвано особой ситуацией, сложившейся при выполнении программы, или сигналом от внешнего устройства. Прерывание используется для быстрой реакции процессора на особые ситуации, возникающие при выполнении программы и взаимодействии с внешними устройствами.
Механизм прерывания обеспечивается соответствующими аппаратно-программными средствами компьютера.
Любая особая ситуация, вызывающая прерывание, сопровождается сигналом, называемым запросом прерывания (ЗП). Запросы прерываний от внешних устройств поступают в процессор по специальным линиям, а запросы, возникающие в процессе выполнения программы, поступают непосредственно изнутри микропроцессора. Механизмы обработки прерываний обоих типов схожи. Рассмотрим функционирование компьютера при появлении сигнала запроса прерывания, опираясь в основном на обработку аппаратных прерываний (рис. 14.1).
Рис. 14.1. Выполнение прерывания в компьютере: tр — время реакции процессора на запрос прерывания; tс — время сохранения состояния прерываемой программы и вызова обработчика прерывания; tв — время восстановления прерванной программы
После появления сигнала запроса прерывания ЭВМ переходит к выполнению программы — обработчика прерывания. Обработчик выполняет те действия, которые необходимы в связи с возникшей особой ситуацией. Например, такой ситуацией может быть нажатие клавиши на клавиатуре компьютера. Тогда обработчик должен передать код нажатой клавиши из контроллера клавиатуры в процессор и, возможно, проанализировать этот код. По окончании работы обработчика управление передается прерванной программе.
Время реакции — это время между появлением сигнала запроса прерывания и началом выполнения прерывающей программы (обработчика прерывания ) в том случае, если данное прерывание разрешено к обслуживанию.
Время реакции зависит от момента, когда процессор определяет факт наличия запроса прерывания. Опрос запросов прерываний может проводиться либо по окончании выполнения очередного этапа команды (например, считывание команды, считывание первого операнда и т.д.), либо после завершения каждой команды программы.
Первый подход обеспечивает более быструю реакцию, но при этом необходимо при переходе к обработчику прерывания сохранять большой объем информации о прерываемой программе, включающей состояние буферных регистров процессора, номера завершившегося этапа и т.д. При возврате из обработчика также необходимо выполнить большой объем работы по восстановлению состояния процессора.
Во втором случае время реакции может быть достаточно большим. Однако при переходе к обработчику прерывания требуется запоминание минимального контекста прерываемой программы (обычно это счетчик команд и регистр флагов). В настоящее время в компьютерах чаще используется распознавание запроса прерывания после завершения очередной команды.
Время реакции определяется для запроса с наивысшим приоритетом.
Глубина прерывания — максимальное число программ, которые могут прерывать друг друга. Глубина прерывания обычно совпадает с числом уровней приоритетов, распознаваемых системой прерываний. Работа системы прерываний при различной глубине прерываний ( n ) представлена на рис. 14.2. Здесь предполагается, что с увеличением номера запроса прерывания увеличивается его приоритет.
Рис. 14.2. Работа системы прерываний при различной глубине прерываний
Без учета времени реакции, а также времени запоминания и времени восстановления:
Организация прерываний в ЭВМ (Контрольная работа)
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Брянский государственный технический университет
Курсовая работа
по Организации ЭВМ
На тему: «Организация прерываний в ЭВМ».
Выполнил:
№
Проверил:
Новозыбков 2007г.
Содержание
Введение
Ввод-вывод по прерыванию
Обработка прерывания
Проектирование механизма обработки прерываний
Контроллер прерываний Intel 82C59A
Программируемый контроллер интерфейса Intel 82C55A
Заключение
Приложение
Список литературы
Введение
Одной из разновидностей программно-управляемого обмена данными с ВУ в микроЭВМ является обмен с прерыванием программы, отличающийся от асинхронного программно-управляемого обмена тем, что переход к выполнению команд, физически реализующих обмен данными, осуществляется с помощью специальных аппаратных средств. Команды обмена данными в этом случае выделяют в отдельный программный модуль — подпрограмму обработки прерывания. Задачей аппаратных средств обработки прерывания в процессоре микроЭВМ как раз и является приостановка выполнения одной программы (ее еще называют основной программой) и передача управления подпрограмме обработки прерывания. Действия, выполняемые при этом процессором, как правило, те же, что и при обращении к подпрограмме. Только при обращении к подпрограмме они инициируются командой, а при обработке прерывания — управляющим сигналом от ВУ, который называют «Запрос на прерывание» или «Требование прерывания».
Эта важная особенность обмена с прерыванием программы позволяет организовать обмен данными с ВУ в произвольные моменты времени, не зависящие от программы, выполняемой в микроЭВМ. Таким образом, появляется возможность обмена данными с ВУ в реальном масштабе времени, определяемом внешней по отношению к микроЭВМ средой. Обмен с прерыванием программы существенным образом экономит время процессора, затрачиваемое на обмен. Это происходит за счет того, что исчезает необходимость в организации программных циклов ожидания готовности ВУ, на выполнение которых тратится значительное время, особенно при обмене с медленными ВУ. Прерывание программы по требованию ВУ не должно оказывать на прерванную программу никакого влияния кроме увеличения времени ее выполнения за счет приостановки на время выполнения подпрограммы обработки прерывания. Поскольку для выполнения подпрограммы обработки прерывания используются различные регистры процессора (счетчик команд, регистр состояния и т.д.), то информацию, содержащуюся в них в момент прерывания, необходимо сохранить для последующего возврата в прерванную программу.
Обычно задача сохранения содержимого счетчика команд и регистра состояния процессора возлагается на аппаратные средства обработки прерывания. Сохранение содержимого других регистров процессора, используемых в подпрограмме обработки прерывания, производится непосредственно в подпрограмме. Отсюда следует достаточно очевидный факт: чем больший объем информации о прерванной программе сохраняется программным путем, тем больше время реакции микроЭВМ на сигнал прерывания, и наоборот. Предпочтительными с точки зрения повышения производительности микроЭВМ (сокращения времени выполнения подпрограмм обработки, а, следовательно, и основной программы) являются уменьшение числа команд, обеспечивающих сохранение информации о прерванной программе, и реализация этих функций аппаратными средствами. Формирование сигналов прерываний — запросов ВУ на обслуживание происходит в контроллерах соответствующих ВУ. В простейших случаях в качестве сигнала прерывания может использоваться сигнал «Готовность ВУ», поступающий из контроллера ВУ в системный интерфейс микроЭВМ. Однако такое простое решение обладает существенным недостатком — процессор не имеет возможности управлять прерываниями, т. е. разрешать или запрещать их для отдельных ВУ. В результате организация обмена данными в режиме прерывания с несколькими ВУ существенно усложняется.
Целью данной работы является определение организации прерывания в ЭВМ, а задачами: а) изучение обработки прерывания, б) изучение проектирования механизма прерывания, в) определение контроллера прерывания.
Ввод-вывод по прерыванию
Мы уже отмечали, что методика программируемого ввода-вывода приводит не рациональному расходованию времени процессора, который фактически простаивает, выжидая, пока внешнее устройство завершит начатую операцию. В результате страдает производительность вычислительной системы.
Альтернативная методика предполагает, что процессор, дав команду модулю. Ввода-вывода на выполнение операции, сам переключается на выполнение какой-либо другой задачи или фрагмента программы. В свою очередь, модуль ввода-вывода, получив от процессора команду, выполняет необходимые операции и, завершив их, формирует сигнал запроса прерывания, который передается процессору и извещает его о том, что выполнение затребованной операции окончено. После этого процессор возвращается к выполнению ранее прерванной программы и, если это предусмотрено в программе, пересылает полученные данные в память.
Рассмотрим, как реализуется эта методика. Начнем с операций, выполняемых модулем ввода-вывода. При вводе данных модуль получает от процессора команду READ. Затем модуль самостоятельно выполняет все действия, необходимые для того, Чтобы получить от внешнего устройства очередную порцию данных и записать ее в свой буфер После этого модуль формирует сигнал запроса прерывания процессора на одной из линий управления системной магистрали и ждет, пока от процессора не поступит команда выставить содержимое регистра на линии данных. Когда такой сигнал поступает, модуль выставляет информацию на линии данных и после этого готов принять следующую команду обмена от процессора.
Участие процессора во всей этой процедуре выглядит следующим образом. Во-первых процедура начинается по инициативе процессора, который передает модулю команду READ. После этого процессор может перейти к выполнению дальнейших инструкций программы, не связанных с затребованными данными (ответственность зато, что в этих инструкциях не используются данные, которые ожидается получить от внешнего устройства, возлагается на программиста), или вообще переключиться на выполнение другой программы. В конце каждого цикла выполнения инструкции. Процессор проверяет, не поступил ли сигнал запроса прерывания. Если окажется, что такой сигнал поступил от модуля ввода-вывода, процессор выполняет операции, сохраняющие текущий контекст выполняемой программы (т.е. состояние счетчика команд и внутренних регистров), и переключается на программу прерывания. Эта программа, в частности, может выполнять считывание данных с модуля ввода-вывода и передачу их в оперативную память. После завершения программы обработки прерывания процессор восстанавливает сохраненный контекст прерванной программы и возобновляет ее выполнение с той же точки, как будто никакого прерывания и не было.
Алгоритм ввода данных по прерыванию исключает простои процессора в ожидании завершения операции медленно работающим внешним устройством, а потому способствует эффективному использованию ресурсов процессора в интересах повышения производительности всей системы. Но, тем не менее, и эта процедура имеет резерв для повышения производительности, поскольку она предусматривает, что все данные, вводимые в систему или выводимые из нее на внешнее устройство, обязательно проходят через процессор.
Архитектура и организация ЭВМ — тест 14
Главная / Аппаратное обеспечение / Архитектура и организация ЭВМ / Тест 14 Упражнение 1:Номер 1
Чем отличается обработка прерывания от выполнения подпрограммы?
Ответ:
 (1) при вызове обработчика прерывания адрес возврата в основную программу определяют аппаратные средства микропроцессора, а при обращении к подпрограмме адрес возврата указывает программист 
 (2) вызов обработчика прерывания связан с необходимостью реакции системы на особую ситуацию, сложившуюся при выполнении программы, или на сигнал от внешнего устройства, а вызов подпрограммы запланирован программистом в программе 
 (3) вызов обработчика прерывания данного типа может быть осуществлен не более одного раза за время выполнения одной программы, а вызов подпрограммы может осуществляться многократно 
Номер 2
Какими средствами реализуется механизм обработки прерываний?
Ответ:
 (1) исключительно аппаратными 
 (2) исключительно программными 
 (3) программно-аппаратными 
Номер 3
В какой момент в современных ЭВМ проводится проверка наличия запроса прерывания?
Ответ:
 (1) по окончании очередного этапа выполнения команды 
 (2) по окончании выполнения команды 
 (3) по окончании выполнения программы 
 (4) по окончании выполнения пакета программ 
Упражнение 2:
Номер 1
Какие из действий по обработке прерывания выполняются процессором автоматически?
Ответ:
 (1) определение источника прерывания 
 (2) формирование адреса программы – обработчика прерывания 
 (3) обработка особой ситуации, вызвавшей прерывание 
 (4) определение адреса возврата в прерванную программу 
Номер 2
Каковы достоинства дейзи-цепочки определения приоритета запроса прерывания?
Ответ:
 (1) высокое быстродействие 
 (2) возможность маскирования отдельных запросов прерывания без изменения схемы 
 (3) легкое изменение приоритетов запросов прерываний 
Номер 3
Каково назначение контроллера приоритетных прерываний?
Ответ:
 (1) определение наиболее приоритетного запроса прерывания 
 (2) общее маскирование всех запросов прерываний 
 (3) индивидуальное маскирование отдельных запросов прерываний 
Упражнение 3:
Номер 1
Какими средствами можно запретить все аппаратные маскируемые прерывания?
Ответ:
 (1) с помощью сброса флага разрешения в таблице векторов прерываний 
 (2) с помощью сброса флага разрешения прерываний в регистре флагов микропроцессора 
 (3) с помощью регистра маски в контроллере приоритетных прерываний 
Номер 2
Каким образом микропроцессор определяет адрес программы – обработчика прерывания поступившего запроса?
Ответ:
 (1) одновременно с каждым запросом прерывания в микропроцессор передается адрес программы – обработчика прерывания 
 (2) адрес программы – обработчика прерывания равен типу поступившего запроса прерывания 
 (3) адрес считывается из строки таблицы векторов прерывания, номер которой равен по типу поступившего запроса прерывания 
Номер 3
Чем определяется глубина прерывания?
Ответ:
 (1) количеством входов запроса прерываний процессора 
 (2) максимальным числом программ, которые могут прерывать друг друга 
 (3) коэффициентом мультипрограммирования данной ЭВМ 
Упражнение 4:
Номер 1
Чем отличается обработка прерывания от выполнения подпрограммы?
Ответ:
 (1) при вызове обработчика прерывания адрес возврата в основную программу определяют аппаратные средства микропроцессора, а при обращении к подпрограмме адрес возврата указывает программист 
 (2) вызов обработчика прерывания связан с необходимостью реакции системы на особую ситуацию, сложившейся при выполнении программы, или на сигнал от внешнего устройства, а вызов подпрограммы запланирован программистом в программе 
 (3) вызов обработчика прерывания данного типа может быть осуществлен не более одного раза за время выполнения одной программы, а вызов подпрограммы может осуществляться многократно 
Номер 2
В чем состоит преимущество определения наличия запроса прерывания по окончании команды перед определением наличия запроса по окончании этапа выполнения команды?
Ответ:
 (1) меньшее время реакции 
 (2) возможность увеличения глубины прерывания 
 (3) меньшее количество информации, которую следует сохранять при переходе на обработчик прерывания 
Упражнение 5:
Номер 1
Что такое "тип прерывания"?
Ответ:
 (1) номер, присваиваемый каждому из прерываний для определения адреса обработчика прерывания 
 (2) адрес обработчика прерывания от данного источника 
 (3) номер, присваиваемый каждому из прерывания для определения его приоритета 
Номер 2
Что такое "вектор прерывания"?
Ответ:
 (1) номер, присваиваемый каждому из прерываний для определения адреса обработчика прерывания 
 (2) адрес обработчика прерывания от данного источника 
 (3) номер, присваиваемый каждому из прерывания для определения его приоритета 
Упражнение 6:
Номер 1
От какого количества источников может воспринимать запросы контроллер приоритетных прерываний?
Ответ:
 (1) 1 
 (2) 2 
 (3) 8 
 (4) 15 
Номер 2
Какую информацию сохраняет микропроцессор при переходе от основной программы к обработчику прерывания?
Ответ:
 (1) счетчик команд 
 (2) регистр флагов 
 (3) тип поступившего запроса прерывания 
 (4) приоритет поступившего запроса прерывания 
%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b0%20%d0%be%d0%b1%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b8%20%d0%bf%d1%80%d0%b5%d1%80%d1%8b%d0%b2%d0%b0%d0%bd%d0%b8%d0%b9 — с русского на все языки
Все языкиАбхазскийАдыгейскийАфрикаансАйнский языкАканАлтайскийАрагонскийАрабскийАстурийскийАймараАзербайджанскийБашкирскийБагобоБелорусскийБолгарскийТибетскийБурятскийКаталанскийЧеченскийШорскийЧерокиШайенскогоКриЧешскийКрымскотатарскийЦерковнославянский (Старославянский)ЧувашскийВаллийскийДатскийНемецкийДолганскийГреческийАнглийскийЭсперантоИспанскийЭстонскийБаскскийЭвенкийскийПерсидскийФинскийФарерскийФранцузскийИрландскийГэльскийГуараниКлингонскийЭльзасскийИвритХиндиХорватскийВерхнелужицкийГаитянскийВенгерскийАрмянскийИндонезийскийИнупиакИнгушскийИсландскийИтальянскийЯпонскийГрузинскийКарачаевскийЧеркесскийКазахскийКхмерскийКорейскийКумыкскийКурдскийКомиКиргизскийЛатинскийЛюксембургскийСефардскийЛингалаЛитовскийЛатышскийМаньчжурскийМикенскийМокшанскийМаориМарийскийМакедонскийКомиМонгольскийМалайскийМайяЭрзянскийНидерландскийНорвежскийНауатльОрокскийНогайскийОсетинскийОсманскийПенджабскийПалиПольскийПапьяментоДревнерусский языкПортугальскийКечуаКвеньяРумынский, МолдавскийАрумынскийРусскийСанскритСеверносаамскийЯкутскийСловацкийСловенскийАлбанскийСербскийШведскийСуахилиШумерскийСилезскийТофаларскийТаджикскийТайскийТуркменскийТагальскийТурецкийТатарскийТувинскийТвиУдмурдскийУйгурскийУкраинскийУрдуУрумскийУзбекскийВьетнамскийВепсскийВарайскийЮпийскийИдишЙорубаКитайский
Все языкиАнглийскийНемецкийНорвежскийКитайскийИвритФранцузскийУкраинскийИтальянскийПортугальскийВенгерскийТурецкийПольскийДатскийЛатинскийИспанскийСловенскийГреческийЛатышскийФинскийПерсидскийНидерландскийШведскийЯпонскийЭстонскийТаджикскийАрабскийКазахскийТатарскийЧеченскийКарачаевскийСловацкийБелорусскийЧешскийАрмянскийАзербайджанскийУзбекскийШорскийРусскийЭсперантоКрымскотатарскийСуахилиЛитовскийТайскийОсетинскийАдыгейскийЯкутскийАйнский языкЦерковнославянский (Старославянский)ИсландскийИндонезийскийАварскийМонгольскийИдишИнгушскийЭрзянскийКорейскийИжорскийМарийскийМокшанскийУдмурдскийВодскийВепсскийАлтайскийЧувашскийКумыкскийТуркменскийУйгурскийУрумскийЭвенкийскийБашкирскийБаскский
Десятое. Обработка прерываний в реальном режиме
- Подробности
- Родительская категория: Ввод-вывод
- Категория: Программирование контроллера прерываний i8259А
Обработка прерываний (как внешних, так и внутренних) в реальном режиме микропроцессора производится в три этапа:
- Прекращение выполнения текущей программы.
- Переход к выполнению и выполнение программы обработки прерываний.
- Возврат управления прерванной программе.
Первый этап должен обеспечить временное прекращение выполнения текущей программы таким образом, чтобы потом прерванная программа продолжила свою работу так, как будто никакого прерывания не было. Любая программа, загруженная для выполнения операционной системой, занимает свое, отдельное от других программ, место в оперативной памяти. Разделяемыми между программами ресурсами являются регистры микропроцессора, в том числе регистр флагов, поэтому их содержимое нужно сохранять. Обязательными для сохранения являются регистры cs, ip и flags\eflags, поэтому они при возникновении прерывания сохраняются микропроцессором автоматически. Пара cs:ip содержит адрес команды, с которой необходимо начать выполнение после возврата из программы обслуживания прерывания, а flags\eflags — состояние флагов после выполнения последней команды прерванной программы в момент передачи управления программе обработки прерывания. Сохранение содержимого остальных регистров должно обеспечиваться программистом в начале программы обработки прерывания до их использования. Наиболее удобным местом хранения регистров является стек. В конце первого этапа микропроцессор после включения в стек регистров flags, cs и ip сбрасывает бит флага прерываний IF в регистре flags (но при этом в стек записывается предыдущее содержимое регистра flags с еще установленным IF). Тем самым предотвращаются возможность возникновения вложенных прерываний по входу INTR и порча регистров исходной программы вследствие неконтролируемых действий со стороны программы обработки вложенного прерывания. После того как необходимые действия по сохранению контекста завершены, обработчик аппаратного прерывания может разрешить вложенные прерывания командой sti.
Набор действий по реализации второго этапа заключается в определении источника прерывания и вызова соответствующей программы обработки. В реальном режиме микропроцессора допускается от 0 до 255 источников прерываний. Количество источников прерываний ограничено размером таблицы векторов прерываний. Эта таблица выступает связующим звеном между источником прерывания и процедурой обработки. Данная таблица располагается в памяти, начиная с адреса 0. Каждый элемент таблицы векторов прерываний занимает 4 байта и имеет следующую структуру:
- 1-е слово элемента таблицы — значение смещения начала процедуры обработки прерывания (n) от начала кодового сегмента;
- 2-е слово элемента таблицы — значение базового адреса сегмента, в котором находится процедура обработки прерывания.
Определить адрес, по которому находится вектор прерывания с номером n, можно следующим образом:
- смещение_элемента_таблицы_векторов_прерываний = n * 4
Таким образом, полный размер таблицы векторов прерываний 4 * 256 = = 1024 байт.
Теперь понятно, что на втором этапе обработки прерывания микропроцессор выполняет следующие действия:
- По номеру источника прерывания путем умножения на 4 определяет смещение в таблице векторов прерываний.
- Помещает первые два байта по вычисленному адресу в регистр ip.
- Помещает вторые два байта по вычисленному адресу в регистр cs.
- Передает управление по адресу, определяемому парой cs:ip.
Далее выполняется сама программа обработки прерывания. Она, в свою очередь, также может быть прервана, например, поступлением запроса от более приоритетного источника. В этом случае этапы 1 и 2 будут повторены для вновь поступившего запроса.
Набор действий по реализации этапа 3 заключается в восстановлении контекста прерванной программы. Так же, как и на этапе 1, на данном последнем этапе есть действия, выполняемые микропроцессором автоматически, и действия, задаваемые программистом. Основная задача на этапе 3 — привести стек в состояние, в котором он был сразу после передачи управления данной процедуре. Для этого программист указывает необходимые действия по восстановлению регистров и очистке стека. Этот участок кода необходимо защитить от возможности искажения содержимого регистров (в результате появления аппаратного прерывания) с помощью команды cli. Последние команды в процедуре обработки прерывания — sti и iret, при обработке которых микропроцессор выполняет следующие действия:
- sti — разрешить аппаратные прерывания по входу INTR;
- iret — извлечь последовательно три слова из стека и поместить их, соответственно, в регистры ip, cs и flags.
В результате этапа 3 управление возвращается очередной команде прерванной программы, которая должна была выполниться, если бы прерывания не было.
Аппаратные прерывания могут быть инициированы программно командой микропроцессора int n, где n — номер аппаратного прерывания в соответствии с таблицей векторов прерываний. При этом микропроцессор также сбрасывает флаг IF, но не вырабатывает сигнал INTA.
После такого обстоятельного обсуждения нам осталось рассмотреть хороший пример. Он должен показать нам ключевые моменты программирования программных и аппаратных прерываний. Выберем одно программное и одно аппаратное прерывание. Наиболее «частое» аппаратное прерывание — прерывание от таймера. Что касается программного прерывания, то основное требование при его выборе для нашего эксперимента то, чтобы его номер не совпадал с номером какого-нибудь системного прерывания.
Программа, которую мы должны будем разработать, выполняет следующие действия: подключает новый аппаратный обработчик прерываний от таймера 08h, который на каждый 4-й сигнал в цикле выводит на экран символы (0-9). Пользовательское прерывание (новый обработчик прерывания 0ffh) вызывается после запуска прерывания от таймера. Его работа заключается в выдаче сигнала сирены циклически несколько раз. После этого пользовательское прерывание производит восстановление вектора старого обработчика прерывания от таймера и завершает свою работу вместе со всей программой.
Перед обсуждением программы нужно сделать следующее замечание. По сути, мы ставим себе цель дополнить программу обработки прерывания от таймера некоторым новым свойством. Одновременно, мы не хотим портить старый обработчик этого прерывания. Такая ситуация встречается довольно часто. Существуют различные способы сцепления системных обработчиков прерываний с пользовательскими. Прерывание от таймера 08h интересно тем, что программа его обработки предусматривает возможность того, что пользователь захочет вставить в обработчик свой код. С этой целью из системной программы обработки прерывания 08h делается вызов еще одного прерывания с номером 1сh. Это пустое прерывание, обработчик которого содержит всего одну команду iret. Таким образом, пользователь имеет возможность решить проблему сцепления своего обработчика с системным обработчиком прерывания 08h косвенно — попросту заменив вектор обработчика прерывания 1сh. Этот прием реализован в листинге ниже (программный код).
Листинг
- <1> ;prg15_1.asm
- <2> MASM
- <3> MODEL small ;модель памяти
- <4> STACK 256 ;размер стека
- <5> .486p
- <6> delay macro time
- <7> local ext,iter
- <8> ;макрос задержки
- <9> ;На входе — значение переменной задержки (в мкс)
- <10> push cx
- <11> mov cx,time
- <12> ext:
- <13> push cx
- <14> ;в cx одна мкс,это значение можно
- <15> ;поменять в зависимости от производительности процессора
- <16> mov cx,5000
- <17> iter:
- <18> loop iter
- <19> pop cx
- <20> loop ext
- <21> pop cx
- <22> endm ;конец макроса
- <23> .data
- <24> tonelow dw 2651 ;нижняя граница звучания 450 Гц
- <25> cnt db 0 ;счетчик для выхода из программы
- <26> temp dw ? ;верхняя граница звучания
- <27> old_off8 dw 0 ;для хранения старых значений вектора
- <28> old_seg8 dw 0 ;сегмент и смещение
- <29> time_1ch dw 0 ;переменная для пересчета
- <30> .code ;начало сегмента кода
- <31> off_1ch equ 1ch*4 ;смещение вектора 1ch в ТВП
- <32> off_0ffh equ 0ffh*4 ;смещение вектора ffh в ТВП
- <33> char db «0» ;символ для вывода на экран
- <34> maskf db 07h ;маска вывода символов на экран
- <35> position dw 2000 ;позиция на экране — почти центр
- <36> main proc
- <37> mov ax,@data
- <38> mov ds,ax
- <39> xor ax,ax
- <40> cli ;запрет аппаратных прерываний на время
- <41> ;замены векторов прерываний
- <42> ;замена старого вектора 1ch на адрес new_1ch
- <43> ;настройка es на начало таблицы векторов
- <44> ;прерываний — в реальном режиме:
- <45> mov ax,0
- <46> mov es,ax
- <47> ;сохранить старый вектор
- <48> mov ax,es:[off_1ch] ;смещение старого вектора 1ch в ax
- <49> mov old_off8,ax ;сохранение смещения в old_off8
- <50> mov ax,es:[off_1ch+2] ;сегмент старого вектора 1ch в ax
- <51> mov old_seg8,ax ;сохранение сегмента в old_seg8
- <52> ;записать новый вектор в таблицу векторов прерываний
- <53> mov ax,offset new_1ch ;смещение нового обработчика в ax
- <54> mov es:off_1ch,ax
- <55> push cs
- <56> pop ax ;настройка ax на cs
- <57> mov es:off_1ch+2,ax ;запись сегмента
- <58> ;инициализировать вектор пользовательского прерывания 0ffh
- <59> mov ax,offset new_0ffh
- <60> mov es:off_0ffh,ax ;прерывание 0ffh
- <61> push cs
- <62> pop ax
- <63> mov es:off_0ffh+2,ax
- <64> sti ;разрешение аппаратных прерываний
- <65> ;задержка, чтобы новый обработчик таймера вывел символы на экран
- <66> delay 3500
- <67> ;завершение программы
- <68> int 0ffh
- <69> exit:
- <70> mov ax,4c00h
- <71> int 21h
- <72> main endp
- <73> new_1ch proc ;новый обработчик прерывания от таймера
- <74> ;сохранение в стеке используемых регистров
- <75> push ax
- <76> push bx
- <77> push es
- <78> push ds
- <79> ;настройка ds на cs
- <80> push cs
- <81> pop ds
- <82> ;запись в es адреса начала видеопамяти — B800:0000
- <83> mov ax,0b800h
- <84> mov es,ax
- <85> mov al,char ;символ в al
- <86> mov ah,maskf ;маску вывода — в ah
- <87> mov bx,position ;позицию на экране — в bx
- <88> mov es:[bx],ax ;вывод символа в центр экрана
- <89> add bx,2 ;увеличение позиции
- <90> mov position,bx ;сохранение новой позиции
- <91> inc char ;следующий символ
- <92> ;восстановление используемых регистров:
- <93> pop ds
- <94> pop es
- <95> pop bx
- <96> pop ax
- <97> iret ;возврат из прерывания
- <98> new_1ch endp ;конец обработчика
- <99> new_0ffh proc ;новый обработчик пользовательского прерывания
- <100> sirena:
- <101> ;сохранение в стеке используемых регистров
- <102> push ax
- <103> push bx
- <104> ;проверка для пересчета на 4:
- <105> test time_1ch,03h
- <106> jnz leave_it ;если два правых бита не 11, то на выход, ;иначе:
- <107> go:
- <108> mov ax,0B06h ;заносим слово состояния 110110110b
- <109> ;(0В6h) — выбираем второй канал порта 43h (динамик)
- <110> out 43h,ax ;в порт 43h
- <111> in al,61h ;получим значение порта 61h в al
- <112> or al,3 ;инициализируем динамик — подаем ток
- <113> out 61h,al ;в порт 61h
- <114> mov cx,2083 ;количество шагов
- <115> musicup:
- <116> ;значение нижней границы частоты в ax (1193000/2651=450 Гц),
- <117> ;где 1193000 — частота динамика
- <118> mov ax,tonelow
- <119> out 42h,al ;в порт 42h — младшее слово ax:al
- <120> mov al,ah ;обмен между al и ah
- <121> out 42h,al ;в порте 42h уже старшее слово ax:ah
- <122> add tonelow,1 ;увеличение частоты
- <123> delay 1 ;задержка на 1 мкс
- <124> mov dx,tonelow ;текущее значение частоты — в dx
- <125> mov temp,dx ;в temp — верхнее значение частоты
- <126> loop musicup ;повторить цикл повышения
- <127> mov cx,2083
- <128> musicdown:
- <129> mov ax,temp ;верхнее значение частоты — в ax
- <130> out 42h,al ;младший байт ax:al в порт 42h
- <131> mov al,ah ;обмен между al и ah
- <132> out 42h,al ;старший байт ax:ah в порт 42h
- <133> sub temp,1 ;уменьшение частоты
- <134> delay 1 ;задержка на 1 мкс
- <135> loop musicdown ;повторить цикл понижения
- <136> nosound:
- <137> in al,61h ;значение порта 61h — в al
- <138> ;слово состояния 0fch — выключение динамика и таймера
- <139> and al,0fch
- <140> out 61h,al ;в порт 61h
- <141> mov dx,2651 ;для последующих циклов
- <142> mov tonelow,dx
- <143> inc cnt ;инкремент количества проходов
- <144> cmp cnt,2 ;если сирена не звучала двух ;раз — повторный запуск
- <145> jne go
- <146> leave_it: ;выход
- <147> inc time_1ch ;пересчет на 4
- <148> ;восстановление используемых регистров
- <149> pop bx
- <150> pop ax
- <151> ;восстановление вектора прерывания от таймера
- <152> cli ;запрет аппаратных прерываний
- <153> xor ax,ax ;снова настройка es на начало таблицы
- <154> mov es,ax ;векторов прерываний
- <155> mov ax,old_off8 ;запись в таблицу смещения старого
- <156> mov es:off_1ch,ax ;обработчика прерывания от таймера
- <157> mov ax,old_seg8 ;запись сегмента
- <158> mov es:off_1ch+2,ax
- <159> sti ;разрешение аппаратных прерываний
- <160> iret ;возврат из прерывания
- <161> new_0ffh endp ;конец обработчика
- <162> end main ;конец программы
Обсудим листинг. Основная процедура main (строки 36-72) выполняет инициализацию используемых векторов прерываний. При этом необходимо запомнить содержимое старого вектора прерывания 1ch (строки 45-51), так как его придется восстанавливать перед завершением программы. Содержимое вектора пользовательского прерывания 0ffh сохранять нет смысла, так как его номер выбран исходя из того, что он не используется при работе системы. При смене вектора прерывания 1сh необходимо запретить обработку аппаратных прерываний командой cli (строка 40), так как внешние прерывания являются асинхронными и могут прийти в самый неподходящий момент, в том числе и во время смены содержимого вектора. Перед завершением работы аппаратного прерывания необходимо явно выдать сигнал EOI. Но в нашем случае это делать необязательно, так как за нас это сделает системный обработчик прерывания 08h, из которого вызывается обработчик для прерывания 1ch. В строках 52-57 и 58-63 производится запись новых значений векторов 1ch и 0ffh в таблицу векторов прерываний. После того как в строке 64 командой sti будут разрешены аппаратные прерывания, на экран будут выведены символы. Эти действия выполняет новая программа обработки прерывания для вектора 1ch (строки 73-98). Эти символы будут выводиться до тех пор, пока действует программная задержка, которую мы организовали в строке 66. После этого вызывается пользовательское прерывание 0ffh, программа обработки которого (строки 99-161) отрабатывает несколько циклов генерации сигнала «сирена» (мы обсуждали эту программу на уроке 7, и теперь вы уже в состоянии оформить ее в виде макроса или процедуры). Вызов программы обработки прерывания пользователя new_0ffh осуществляется с помощью специальной команды int. Эта команда предназначена для того, чтобы пользователь сам мог инициировать вызов прерываний. Как видите, эти прерывания являются планируемыми (синхронными), так как пользователь сам определяет момент его вызова.
После написания этой программы можно провести несколько экспериментов для исследования работы контроллера прерываний и системы прерываний в целом. К примеру, можно выполнить следующие операции:
- Изменить базовый адрес ведущего контроллера прерываний. Как мы обсуждали выше, BIOS инициализирует ведущий контроллер таким образом, что он имеет базовый адрес 08h. Попробуйте теперь изменить значение базового вектора, например, на значение 0f0h. Для этого необходимо выполнить инициализацию контроллера, которая заключается в последовательной посылке в него управляющих слов. Посмотрите последовательность приказов, которые BIOS посылает в контроллер прерываний для его инициализации при загрузке системы. Нам тоже нужно будет их сформировать, но с нужными нам значениями, и послать в контроллер прерываний. Фрагмент, осуществляющий такие действия, может выглядеть следующим образом:
- …
- mov al,00010001b
- out 20h,al ;ICW1 в порт 20h
- jmp $+2
- jmp $+2 ;задержка, чтобы успела
- ;отработать аппаратура
- mov al,0f0h
- out 21h,al ;ICW2 в порт 20h — новый базовый номер
- jmp $+2
- jmp $+2 ;задержка, чтобы успела
- ;отработать аппаратура
- mov al,00000100b
- out 21h,al ;ICW3 — ведомый подключается
- ;к уровню 2 (см. рис. 15.1)
- jmp $+2
- jmp $+2 ;задержка, чтобы успела
- ;отработать аппаратура
- mov al,00000001b
- out 21h,al ;ICW4 — EOI выдает
- ;программа пользователя
- Рассмотреть альтернативу команде cli, замаскировав аппаратные прерывания, используя прямое программирование регистра масок IMR:
- ;запретить прерывания
- mov al,0ffh
- out 21h,al ;для ведущего контроллера
- out A1h,al ;для ведомого контроллера
- ;разрешить прерывания
- mov al,00h
- out 21h,al ;для ведущего контроллера
- out A1h,al ;для ведомого контроллера
- Запретить аппаратные прерывания определенных уровней. Например, в следующем фрагменте запрещаются прерывания от клавиатуры:
- in al,21h
- or al,00000010b
- out 21h,al
- Исследовать, как меняется содержимое регистров IRR, IMR и ISR в ходе обработки аппаратного прерывания, читая состояние описанных выше портов. Если у вас проснулся интерес к подобной исследовательской деятельности, то предлагаю вам самостоятельно написать эти фрагменты программ и исследовать их с использованием листинга.
- < Назад
- Вперёд >
Программа прерывание выполнения — Справочник химика 21
Начало, конец, прерывание процесса обработки данных или выполнения программы [c.26]Самовосстанавливающаяся подпрограмма допускает многократное применение без повторной загрузки, так как после выполнения сама возвращается в исходное состояние. При этом рабочая область размещается в подпрограмме. Однако эту подпрограмму нельзя использовать в режиме мультипрограммирования (см. гл. 4), когда одновременно выполняется несколько программ и поочередно обращаются к ней. Если переключение (прерывание) произошло при выполнении подпрограммы, то другая программа не может воспользоваться ею, так как испортит данные, хранящиеся в рабочей области й относящиеся к первой программе. [c.49]
Между программами разделов установлен приоритет в первую очередь выполняются программы первого раздела переднего плана, затем — программы второго раздела переднего плана и, наконец, фоновые программы. Это означает, что фоновая программа будет выполняться лишь после выполнения программ переднего плана или в случае вынужденного прерывания этих программ. [c.201]
Функции СУПЕРВИЗОРА состоят в контролировании выполнения программы с момента ввода задания и до получения результатов. Он обеспечивает обработку прерываний, связь с оператором, обработку сбоев внешних устройств, планирование работы каналов и т. д. [c.202]
Средства трассировки позволяют ЛПР следить за действиями ЭС обычно они перечисляют имена (или номера) всех выполненных ПП или всех задействованных подпрограмм./7я/се/ г прерываний позволяет ЛПР заранее сообщить программе, где она должна остановиться, чтобы ЛПР мог остановить выполнение программы перед некоторой повторяющейся ошибкой и проверить текущие значения переменных в БД. Все средства построения ЭС должны иметь эти основные отладочные средства. Весьма немногие средства построения ЭС включают также автоматическое тестирование, несколько более сложное средство отладки по сравнению с трассировкой и прерыванием. Это средство позволяет ЛПР автоматически тестировать программы на большом числе пробных задач, чтобы обнаружить ошибки несовместимости в их решениях [7]. [c.196]
При оценке технического совершенства микропроцессоров учитывают следующие параметры среднее время выполнения команды (быстродействие процессора) число команд (гибкость применения МП) и регистров (вычислительная способность МП) адресуемую емкость памяти мощность рассеяния (характеристика, учитываемая при эксплуатации) число уровней питающих напряжений (упрощается схема и снижается стоимость системы) возможности системы прерываний, прямого доступа в память микропрограммирования наличие резидентного Ассемблера, управляющей программы, компиляторов с языков высокого уровня. [c.39]
Существуют команды печати результатов, ввода данных в мащину, выполнения циклических операций, прерывания последовательности команд (т. е. команды передачи управления) и команды включения и остановки вычислительной машины. Мы проиллюстрируем сущность подобных команд управления на примере. Предположим, что требуется вычислить и отпечатать сумму квадратных корней из первых 100 чисел натурального ряда. Один из видов программы для таких вычислений следующий [c.62]
Программы, предназначенные для решения вычислительной машиной специальных задач, называются программами пользователя (программы, ориентированные на область применения или матобеспечение области применения). Операционная система (управляющая программа) выполняет функции управления и организации более высокого уровня иерархии. Помимо решения прочих задач она позволяет проводить выполнение программы пользователя с учетом приоритетности. Приоритетность программы определяется степенью актуальности решаемых ею задач. Управляющая программа при посредстве системы прерывания по соответствующему требованию с более высоким приоритетом приостанавливает выполнение программы с более низким уровнем приоритета на время, определяемое запросом по приоритету. Затем выполнение первоначальной программы может быть продолжено. При решении задач в реальном масштабе времени мерой приоритета является обратная величина ответного времени. Уровни приоритета фоновых программ выводятся из необходимой или приемлемой последовательности задач. [c.435]
Система контроля осуществляет контроль по четности всех пересылок информации. Реакцией на обнаруженные сбои является прерывание основных программ и подключение к выполнению необходимых диагностических про- [c.293]
Отдельное прерывание может иметь соответствующий приоритет, вследствие чего программа контроля прерываний будет точно знать, что должна выполнять ЭВМ продолжать прежнюю программу или перейти к выполнению новой, вызванной поступившим прерыванием с более высоким приоритетом, а затем вернуться к исполнению прежней. [c.47]
В функции монитора входит расшифровка команд, поступающих с различных терминалов, определение порядка выполнения заданий центральным процессором и распределение ресурсов системы между различными заданиями. Всякий раз, когда выполняемая программа приходит к останову (например, если пусковой вход или выход активизирует один из семи уровней прерывания или исчерпывается интервал времени, отведенный для работы какой-либо программы), монитор ищет другое задание, которое необходимо выполнить. [c.67]
Управляющая программа представляет собой пакет взаимосвязанных, НО независимых друг от друга подпрограмм. С помощью команд с телетайпа исследователь может вызывать нужные подпрограммы для управления ходом эксперимента и организации вывода результатов. Описанный выше блок управления (см. рис. 1.1) обеспечивает дополнительные средства коммуникации с ЭВМ. Программа обработки прерываний позволяет организовать однов ременное выполнение нескольких операций (прием данных в реальном масштабе временя, шаговое управление монохроматором и т. п.). [c.214]
Система прерывания программ — логическое продолжение децентрализации устройства управления ЭВМ. Поскольку работа УВВ не зависит от работы процессора, в случае поступления данных, когда процессор занят выполнением другой программы, [c.31]
Центральный процессор выполняется на отдельном кристалле (например, серии 589) и содержит арифметико-логическое устройство, состоящее из сумматора и регистра-аккумулятора дешифратор микрокоманд блок регистров (рис. 6, б). Арифметико-логическое устройство, как и в процессоре мини-ЭВМ, предназначено для выполнения арифметических и логических операций с числами. Арифметические операции в МП производятся в сумматоре, а для логических операций используются комбинационные схемы и регистр-аккумулятор. Этот регистр также применяется для пересылки данных и служит основным рабочим регистром в арифметических и логических операциях. Дешифратор предназначен для формирования управляющих сигналов в соответствии с кодом микрооперации из блока памяти микрокоманд. В регистре хранится адрес выполняемой в данный момент команды. Остальные регистры используются для хранения данных, поступивших из сверхоперативной памяти МП, перед их обработкой в арифметико-логическом устройстве, и адреса возврата к выполнявшейся команде при прерывании программы и некоторых промежуточных результатов вычислений. Блок микропрограммного управления преобразует код команды, поступившей из оперативного запоминающего устройства МП, в последовательность микрокоманд. Блок памяти микропрограмм содержит набор микропрограмм, необходимый для организации управле- [c.40]
Использование больших ЦВМ, работающих в реальном масштабе времени, управляющих несколькими хроматографами, предполагает наличие аналого-цифровых преобразователей с переключением каналов и системы, контролирующей сбор информации. Канал связи такой ЦВМ с хроматографом может включать целый ряд устройств аналого-цифровой преобразователь, буферную память, устройства предварительной обработки и т. п. [Л. 135]. Возможны два варианта использования такой ЦВМ, отличающиеся требованиями к ее структуре. В первом случае предполагается переключение каналов по заданной программе с постоянной или переменной программируемой скоростью независимо от наличия или фазы анализа [Л. 103, 136, 144, 159] во втором случае переключение каналов производится по запросу, поступающему из канала связи 1[Л. 143, 160]. Если в первом варианте достаточно иметь возможность внутреннего прерывания выполнения программы в ЦВМ через строго нормированные по величине интервалы времени, то, во втором необходима уже возможность внешнего прерывания по приоритету. При наличии причины прерывания и разрешения прерывания происходит прерывание выполняемой программы и управление передается в определенную ячейку, называемую ячейкой прерывания. В ячейку прерывания из основной программы должна быть заслана команда передачи управления в подпрограмму, с помощью которой осуществляются действия по выполнению данной причины прерывания. Чем важнее причина, тем выше класс приоритета. При наличии нескольких причин прерывания управление будет передано в ячейку Лрерывания, соответствующую причине высшего класса приоритета. Вот как распределяются классы приоритетов в системе обработки информации ОАСЗ, разработанной фирмой 1ВМ [Л. 160] (расположение согласно убыванию класса приоритета) [c.94]
Сложная структура прикладных программ АИДОС и использование разных способов организации файлов обусловливают различные возможности повторного запуска программ. В некоторых особо сложных и особо важных программах предусмотрены контрольные точки, в которых возможно прерывание выполнения на неопределенный период времени. [c.38]
Более удобную работу пользователей с ЭВМ обеспечивает режим разделения времени в котором в распоряжение пользователей предоставляются устройства ввода-вывода информации (например, дисплеи). Программы, вводимые пользователями, обрабатываются в соответствии с их приоритетами следующим образом. Для обработки каждой программы выделяется малый интервал времени. Если обработка программы за этот период закончилась, то производится вывод полученных результатов и начинается обработка следующей программы в течение выделенного интервала времени. Если же обработка программы в течение выделенного интервада не завершилась, то ее выполнение прерывается, фиксируются полученные промежуточные результаты (позволяющие в дальнейшем продолжить решение) и начинается счет следующей программы. Таким образом, все программы по очереди обрабатываются в течение выделенного интервала времени, после чего продолжается счет первой программы в течение заданного интервала, затем второй программы и т. д. Этот режим не повышает эффективность использования функциональных устройств ЭВМ, однако существенно улучшает обслуживание пользователей. Каждый пользователь имеет непосредственный доступ к ЭВМ и работает с ней в режиме диалога. Интервалы времени, выделяемые для выполнения программ, с точки зрения пользователей, являются весьма малыми. Поэтому длительного прерывания выполнения программ пользователей не происходит, пользователь практически не замечает прерываний. Режим разделения времени сочетает преимущества режимов мультипрограммного и непосредственного доступа. [c.124]
Повышения эффективности использования вычислительной системы можно достигнуть, во-первых, за счет сокращения времени простоя процессора и, во-вторых, за счет сокращения времени ожидания решения в режиме пакетной обработки. Классическим примером повышения производительности ЭВМ является многопрограммный режим, или мультипрограммирование. Идея этого метода состоит в том, что ЭВМ настраивается на одновременное выполнение ряда задач, каждая из которых занимает часть оперативной памяти. Поскольку большинство внешних устройств может работать в автономном режиме после загрузки соответствующего канала, то совмещением работы внешних устройств и процессора можно достигнуть максимальной загрузки последнего. Как только одна из программ приостанавливается для выполнения, например, операции ввод-вывода, процессор переключается на выполнение другой программы, тем самым исключается время его ожидания. Разделам памяти присваиваются уров ни приоритетности, которые и определяют последовательность переключения программ. Этот режим не предполагает непосредственного доступа пользователя к ЭВМ, так как в каждом разделе памяти производится пакетная обработка программ. Однако за счет лучшего использования оборудования время ожидания решения обычно сокращается по сравнению с однопрограммным режимом. Разновидностью режима мультипрограммирования является параллельная обработка, идея которой состоит в том, что переход от одной программы к другой производится в результате естественного прерывания (ожидания ввода-вывода) и вынужденного переключения через короткие промежутки времени, сравнимые со скоростью работы процессора. При параллельной обработке программы выполняются по очереди в короткие промежутки времени и создается впечетление их одновременного выполнения, тем более что результаты расчета выдаются пользователю по мере завершения каждой из них. [c.249]
Физическая СУВВ управляет передачей информации между внешними устройствами и основной памятью и используется всеми программами, выполняемыми под управлением ДОС/ЕС. Она обеспечивает запуск команд ввода — вывода, их выполнение с соответствующим контролем и обработкой прерываний. Все функции физической СУВВ осуществляются подпрограммами, находящимися в СУПЕРВИЗОРЕ. Логическая СУВВ имеет дело с логическим содержанием данных, их способом организации, форматом, методами доступа. Она обеспечивает выборку логических записей данных в основной памяти, а также организацию считывания и записи. Для выполнения непосредственно команд ввода — [c.204]
Система программного управления может осуществлять прерывание обслуживания текущих запросов. Процесс прёрывания выполнения программ АИС обычно осуществляется аппаратно-программным способом. При этом реализуется следующий алгоритм системы прерывания [c.62]
Блок приоритета прерываний. Хотя для выполнения программы на языке lass от ЭВМ не требуется обеспечения прерываний, в систему была включена соответствующая аппаратура. Предусмотрено восемь уровней прерываний, каждый из которы.х предназначен для работы определеппого периферийного устройства. Например, на один из уровней можно подключить счетчик импульсов на 16 битов. [c.156]
На рис. У1-6 представлена упрощенная блок-,схема программы проведения такого эксперимента. Пунктирными линиями показана передача управления подпрограммам, вызванным исследователем с помощью системы прерываний во время выполнения текущей программы. Здесь под термином Ожидание имеется в виду та часть пролраммы управления, которая позволяет исследователю вызывать любые подпрограммы, если при этом не нарушается логическая последовательность их выполнения (например, команда вывода на самописец несобранных даяных не будет принята системой). [c.214]
прерываний — GeeksforGeeks
Прерывание — это сигнал, излучаемый аппаратным или программным обеспечением, когда процесс или событие требуют немедленного внимания. Он предупреждает процессор о высокоприоритетном процессе, требующем прерывания текущего рабочего процесса. В устройствах ввода-вывода для этой цели выделена одна из линий управления шиной, которая называется подпрограммой обслуживания прерывания (ISR) .
Когда устройство вызывает прерывание, скажем, в процессе i, процессор сначала завершает выполнение инструкции i.Затем он загружает в счетчик программ (ПК) адрес первой инструкции ISR. Перед загрузкой адреса в счетчик программ адрес прерванной инструкции перемещается во временное место. Следовательно, после обработки прерывания процессор может продолжить процесс i + 1.
Вниманию читателя! Не прекращайте учиться сейчас. Практикуйте экзамен GATE задолго до самого экзамена с помощью предметных и общих викторин, доступных в GATE Test Series Course .
Изучите все концепции GATE CS с бесплатными живыми классами на нашем канале YouTube.
Пока процессор обрабатывает прерывания, он должен сообщить устройству, что его запрос был распознан, чтобы оно прекратило посылку сигнала запроса прерывания. Кроме того, сохранение регистров, чтобы прерванный процесс можно было восстановить в будущем, увеличивает задержку между временем получения прерывания и началом выполнения ISR. Это называется задержкой прерывания.
Аппаратные прерывания:
При аппаратном прерывании все устройства подключаются к линии запроса прерывания. Для всех n устройств используется одна строка запроса. Чтобы запросить прерывание, устройство закрывает связанный с ним переключатель. Когда устройство запрашивает прерывание, значение INTR представляет собой логическое ИЛИ запросов от отдельных устройств.
Последовательность событий, участвующих в обработке IRQ:
- Устройства вызывают IRQ.
- Процессор прерывает выполняемую в данный момент программу.
- Устройство информируется о том, что его запрос был распознан, и устройство деактивирует сигнал запроса.
- Запрошенное действие выполнено.
- Прерывание разрешено, и прерванная программа возобновляется.
Обработка нескольких устройств:
Когда более одного устройства генерируют сигнал запроса прерывания, тогда требуется дополнительная информация, чтобы решить, какое устройство следует рассматривать в первую очередь. Чтобы решить, какое устройство выбрать, используются следующие методы: опрос, векторные прерывания и вложение прерываний.Это объясняется следующим образом.
- Опрос:
При опросе первое обнаруженное устройство с установленным битом IRQ — это устройство, которое должно обслуживаться первым. Соответствующий ISR вызывается для обслуживания того же самого. Это легко реализовать, но на опрос бита IRQ всех устройств тратится много времени. - Векторных прерываний:
В векторных прерываниях устройство, запрашивающее прерывание, идентифицирует себя напрямую, посылая специальный код процессору по шине.Это позволяет процессору идентифицировать устройство, создавшее прерывание. Специальный код может быть начальным адресом ISR или местом, где ISR находится в памяти и называется вектором прерывания. - Вложение прерываний:
В этом методе устройство ввода-вывода организовано в приоритетную структуру. Следовательно, запрос прерывания от устройства с более высоким приоритетом распознается, а запрос от устройства с более низким приоритетом — нет. Для реализации этого каждый процесс / устройство (даже процессор).Процессор принимает прерывания только от устройств / процессов с приоритетом выше него.
Приоритет процессоров закодирован в нескольких битах PS (регистр состояния процесса). Его можно изменить с помощью программных инструкций, которые записываются в PS. Процессор находится в контролируемом режиме только при выполнении подпрограмм ОС. Он переключается в пользовательский режим перед запуском прикладных программ.
Обработчик прерываний — обзор
11.1.2 Настройка векторной таблицы
Для простых приложений с фиксированными обработчиками прерываний таблица векторов может быть закодирована во Flash или ROM.В этом случае нет необходимости настраивать таблицу векторов во время выполнения. Однако в некоторых приложениях необходимо изменять обработчики прерываний для разных ситуаций. Затем вам нужно будет переместить векторную таблицу в доступную для записи память.
Перед перемещением таблицы векторов может потребоваться скопировать содержимое существующей таблицы векторов в новое место таблицы векторов. Сюда входят векторные адреса для обработчиков ошибок, немаскируемые прерывания (NMI), системные вызовы и т. Д.В противном случае процессор будет извлекать недопустимые адреса векторов, если эти исключения имеют место после перемещения таблицы векторов.
После того, как необходимые элементы таблицы векторов настроены и таблица векторов перемещена, мы можем добавлять новые векторы в таблицу векторов. Для пользователей библиотек драйверов, совместимых со стандартом программного интерфейса микроконтроллеров Cortex (CMSIS), регистр смещения таблицы векторов может быть доступен через « SCB-> VTOR » в определении основного периферийного устройства.
void SetVector (unsigned int ExcpType, unsigned int VectorAddress)
{// Вычислить местоположение вектора = VTOR + (Exception_Type * 4)
* ((volatile unsigned int *) (SCB-> VTOR + (ExcpType << 2 ))) = VectorAddress | 0x1;
// LSB вектора установлен в 1, чтобы указать Thumb
return;
}
Для пользователей, предпочитающих программирование на ассемблере, это можно сделать с помощью следующего примера кода:
; Подпрограмма для установки вектора исключения на основе
; тип исключения
; (Для IRQ добавьте 16: IRQ # 0 = тип исключения 16)
SetVector
; Вход R0 = тип исключения
; Вход R1 = значение адреса вектора
PUSH {R2, LR}
LDR R2, = 0xE000ED08; Регистр смещения таблицы векторов
LDR R2, [R2]
ORR R1, R1, # 1; Установите LSB вектора, чтобы указать Thumb
STR R1, [R2, R0, LSL # 2]; Записать вектор в VectTblOffset +
; ExcpType * 4
POP {R2, PC}; Возврат
Установка младшего значащего бита (LSB) в 1 в векторе не требуется в большинстве случаев, поскольку компилятор или ассемблер должен распознать адрес как адрес инструкции Thumb ® и установить его автоматически.
Обработка прерываний — обзор
Абстракция прерываний
Улучшения в основном ядре, хотя и значительны, все же не приводят нас к детерминированной производительности в реальном времени. Несмотря на то, что планировщик по умолчанию очень хорош, он все же пытается быть «честным». Также существует проблема переупорядочивания системы блочного ввода-вывода и объединения запросов ввода-вывода в интересах максимизации пропускной способности. Поэтому нам нужно обойти эти проблемы, по крайней мере, для тех частей приложения, которые действительно работают в режиме реального времени.
Оказывается, что во многих приложениях только небольшая часть системы действительно требует детерминизма жесткого реального времени. Управление высокоскоростным контуром ПИД-регулирования или перемещение манипулятора робота — вот примеры требований жесткого реального времени. Но регистрация температуры, которую пытается поддерживать контур ПИД, или графическое отображение текущего положения манипулятора робота, как правило, не требуются в режиме реального времени.
Альтернативный и, по мнению некоторых, более целесообразный подход к производительности в реальном времени в Linux, основывается на различии между тем, что работает в реальном времени, а что нет.Метод заключается в том, чтобы запустить Linux как задачу с самым низким приоритетом (задача простоя, если хотите) под небольшим ядром реального времени. Функции реального времени обрабатываются задачами с более высоким приоритетом, выполняемыми под этим ядром. Все, что не работает в режиме реального времени, например графика, управление файлами и работа в сети, с которыми Linux уже справляется очень хорошо, обрабатывается Linux.
Этот подход называется «абстракцией прерывания», потому что ядро реального времени берет на себя обработку прерываний из Linux. Ядро Linux «думает», что отключает прерывания, но на самом деле это не так.Суть абстракции прерывания проиллюстрирована на рис. 17.2. Ядро реального времени эффективно перехватывает аппаратные прерывания до того, как они попадут в ядро Linux. Linux больше не имеет прямого контроля над включением и отключением прерываний. Поэтому, когда Linux говорит «отключить прерывания», ядро RT просто сбрасывает внутренний флаг включения программного прерывания, но оставляет прерывания включенными. Когда происходит аппаратное прерывание, ядро RT сначала определяет, кому оно направлено:
Рисунок 17.2. Архитектура RT Linux.
- •
RT Задача: запланировать задачу
- •
Linux: проверить флаг программного прерывания. Если включено, вызовите соответствующий обработчик прерывания Linux. Если отключено, обратите внимание, что прерывание произошло, и доставьте его позже, когда Linux повторно включит прерывания.
Ядро Linux рассматривается как задача с самым низким приоритетом, или бездействующая, в ядре RT и запускается только тогда, когда нет готовых к запуску задач реального времени.
Конечно, будут моменты, когда ядру RT придется отключать аппаратные прерывания для управления своими собственными критическими секциями, но они намного короче, чем критические секции в Linux.
Задачи реального времени могут выполняться либо как загружаемые модули пространства ядра, либо как процессы пространства пользователя. RT-задачи пользовательского пространства взаимодействуют с RT-ядром через «приятельскую задачу» в пространстве ядра. Задачи RT в пространстве ядра обычно имеют некоторую потребность в взаимодействии с процессами пользовательского пространства для таких вещей, как доступ к файлам, сетевое взаимодействие или пользовательский интерфейс. Ядро RT предоставляет такие механизмы, как FIFO и разделяемая память, которые поддерживают связь с процессами пользовательского пространства.
Будучи намного меньше и проще, ОС реального времени поддается анализу времени выполнения, который обеспечивает надежные верхние границы задержки.И хотя этот подход также включает изменение ядра, объем модификаций существенно меньше, чем подход улучшения с приоритетным прерыванием.
ОСРВ с абстракцией прерываний представляет собственный API, и пуристы настаивают, что это не «настоящий» Linux. Но по мере того, как подход абстракции прерываний эволюционировал с годами, обе основные реализации развили «оболочки» вокруг собственного API для потоков POSIX. Это до некоторой степени смягчает возражения пуристов.
Существует две основные реализации подхода абстракции прерываний:
- •
RTLinux: это исходная реализация абстракции прерываний. Он был разработан в Институте горного дела и технологий Нью-Мексико под руководством Виктора Йодайкена. Несмотря на то, что RTLinux разрабатывался как открытый исходный код, Виктор впоследствии получил патент на идею запуска одной операционной системы поверх другой и основал компанию FSM Labs для коммерциализации проприетарной версии, которую он впоследствии продал Wind River.Открытый исходный код продолжал существовать в течение нескольких лет, но теперь его веб-сайт перенаправляется на Wind River.
- •
RTAI: это усовершенствованная версия RT Linux, разработанная в Dipartimento di Ingeneria Aerospaziale Миланского политехнического университета под руководством профессора Паоло Мантегацца. Это очень активный проект с открытым исходным кодом, в котором много участников.
Прерывания — информатика GCSE GURU
Ключевой особенностью любой операционной системы является способность обрабатывать прерывания.
Чтобы узнать больше об операционных системах, посетите нашу страницу операционных систем.
Что такое прерывание?
Прерывание — это сигнал, который отправляется устройством или программным обеспечением в операционную систему.
Сигнал прерывания заставляет операционную систему временно остановить то, что она делает, и «обслужить» прерывание.
Обработчик прерывания — это часть операционной системы, которая отвечает за обработку сигналов прерывания.
Обработчик прерываний определяет приоритеты прерываний по мере их получения, помещая их в очередь по мере необходимости.
Для каждого прерывания текущая задача должна быть остановлена с сохранением ее статуса (чтобы ее можно было возобновить позже).
Примеры прерываний
Вот несколько примеров причин прерываний. Обратите внимание, что не все требуют вмешательства пользователя.
- Аппаратная проблема, например замятие бумаги в принтере
- Нажатие клавиши пользователем, например CTRL ALT DEL
- Ошибка программного обеспечения
- Телефонный звонок (мобильное устройство)
- Диск, указывающий, что он готов для получения дополнительных данных
Многозадачность
Прерывания позволяют компьютерам создавать впечатление, что они многозадачны.
Это достигается за счет регулярных запланированных перерывов между программами.
Это «разделение времени» важно, поскольку в действительности процессор может обрабатывать только один процесс за раз.
Видео прерывания
Что такое прерывание? — Определение с сайта WhatIs.com
КПрерывание — это сигнал от устройства, подключенного к компьютеру, или от программы на компьютере, который требует, чтобы операционная система остановилась и выяснила, что делать дальше.Сегодня почти все персональные (или более крупные) компьютеры управляются прерываниями , то есть они запускают список компьютерных инструкций в одной программе (возможно, в приложении, таком как текстовый процессор) и продолжают выполнять инструкции до тех пор, пока один из них (A) они не могут двигаться дальше или (B) обнаружен сигнал прерывания. После обнаружения сигнала прерывания компьютер либо возобновляет выполнение текущей программы, либо начинает выполнение другой программы.
В принципе, один компьютер может одновременно выполнять только одну компьютерную инструкцию.Но поскольку он может быть прерван, он может по очереди выбирать, какие программы или наборы инструкций он выполняет. Это называется многозадачностью. Это позволяет пользователю делать несколько разных вещей одновременно. Компьютер просто по очереди управляет программами, которые запускает пользователь. Конечно, компьютер работает с такой скоростью, что кажется, будто все задачи пользователя выполняются одновременно. (Операционная система компьютера умеет использовать небольшие паузы в работе, и пользователь думает, что время для работы над другими программами.)
Операционная система обычно имеет некоторый код, который называется обработчиком прерывания . Обработчик прерываний определяет приоритеты прерываний и сохраняет их в очереди, если более одного ожидают обработки. В операционной системе есть еще одна небольшая программа, иногда называемая планировщиком, которая определяет, какой программе передать управление следующей.
В основном бывают аппаратные прерывания и программные прерывания. Аппаратное прерывание происходит, например, при завершении операции ввода-вывода, такой как чтение некоторых данных в компьютер с ленточного накопителя.Программное прерывание происходит, когда прикладная программа завершает работу или запрашивает определенные услуги у операционной системы. В персональном компьютере запрос аппаратного прерывания (IRQ) имеет значение, которое связывает его с конкретным устройством.
Последнее обновление было выполнено в декабре 2016 г.
Продолжить чтение о прерывании
|
|
Что, Операции, Процессы, Факты и Резюме
Функции GCSE и характеристики ЦП (14-16 лет)
- Редактируемая презентация урока PowerPoint
- Редактируемые раздаточные материалы для редакции
- Глоссарий, который охватывает ключевые терминология модуля
- Тематические карты разума для визуализации ключевых концепций
- Печатные карточки, чтобы помочь учащимся активнее вспоминать и повторять на основе уверенности
- Викторина с сопровождающим ответом ключом для проверки знаний и понимания модуля
A-Level Функции и характеристики ЦП (16-18 лет)
- Редактируемая презентация урока в PowerPoint
- Редактируемые раздаточные материалы для редакции
- Глоссарий, охватывающий ключевые термины модуля
- Тематические карты разума для визуализации ключевых понятий
- Карточки для печати на помочь учащимся активнее вспоминать и обсуждать Повторение на основе идентности
- Викторина с сопровождающим ключом ответа для проверки знаний и понимания модуля
Первоначально аппаратные прерывания были введены как оптимизация, которая устраняет непродуктивное время ожидания в циклах опроса во время ожидания внешних событий.
Циклы опроса: Под опросом понимается активная выборка состояния внешнего устройства клиентской программой как синхронное действие.
Первая система, в которой использовался такой подход, появилась в 1954 году и называлась DYSEAC, которая была создана Национальным бюро стандартов для армии США.
(Это было реализовано на грузовике, что, вероятно, сделало его одним из первых мобильных компьютеров)
Хотя первой системой, которая использовала прерывания, был компьютер UNIVAC 1103 в 1953 году, компьютер американского производства.
Что такое прерывания?
Прерывания — это реакция процессора на процесс / событие, требующее немедленного внимания со стороны программного обеспечения.
Прерывания предупреждают процессор и серверы о том, что ЦП должен прервать выполняющуюся в данный момент программу / код, если это разрешено, чтобы событие могло быть обработано в нужное время.
Если ответ от процессора принят, процессор будет реагировать, приостанавливая свои текущие действия (сохраняя свое состояние) и, таким образом, выполняя функцию, называемую обработчиком прерывания для обработки события.
Это прерывание в действиях и программах носит временный характер, то есть, если прерывание не указывает на фатальную ошибку, в противном случае процессор возобновит все нормальные активные операции после завершения обработчика прерывания.
Прерывания используются как аппаратным, так и программным обеспечением для индикации изменений электрического или физического состояния, требующих внимания.
Прерывания широко используются в компьютерной многозадачности, особенно в вычислениях в реальном времени. Более того, эти системы, которые используют прерывания, называются «управляемыми прерываниями».
Одним из преимуществ прерываний является то, что их можно использовать для разрыва бесконечного цикла, что может вызвать утечку памяти или привести к зависанию программы.
Что такое обработчик прерывания?
Обработчики прерываний, также известные как процедура обслуживания прерываний (ISR), представляют собой блок кода, связанный с определенным условием прерывания.
Аппаратные и программные прерывания или программные исключения инициируют обработчик прерывания, кроме того, обработчик прерывания используется для реализации драйверов устройств или переходов между защищенными режимами работы, такими как системные вызовы.
Прерывания имеют ряд функций, которые в конечном итоге зависят от того, что в первую очередь вызвало прерывание, поэтому скорость, с которой обработчик прерывания выполняет свои задачи, также зависит от того, что вызвало прерывание.
Например, перемещение мыши или нажатие клавиши на клавиатуре запускает обработчики прерываний, которые считывают их клавишу или положение мыши, наконец, обработчики прерываний копируют информацию, связанную с этими действиями, в память компьютера.
Существует два типа обработчиков прерываний: обработчик прерывания первого уровня (FLIH) и обработчик прерывания второго уровня (SLIH).
Джиттер: Джиттером называют небольшие прерывистые задержки во время передачи данных. Это может быть вызвано рядом различных факторов, таких как коллизии, помехи сигнала, перегрузка сети и т. Д.
Обработчик прерывания первого уровня (FLIH):
Обработчик прерывания этого типа является более быстрым из двух, он также имеет больший джиттер во время выполнения процесса, и это в основном маскируемые прерывания.
Функциональность FLIH заключается в быстром обслуживании прерывания или в записи важной информации, специфичной для платформы (которая доступна только во время прерывания), а затем в планировании выполнения SLIH для дальнейшей (более медленной) обработки прерывания.
Чтобы уменьшить джиттер и, следовательно, возможность потери данных из замаскированных прерываний в таких операционных системах (например, в операционных системах реального времени), программисты пытаются сократить время выполнения FLIH, пытаясь перенести как можно больше функциональных возможностей на SLIH. .
В конечном итоге, с нашими компьютерными системами с быстрой обработкой данных, FLIH будет реализовывать все операции, зависящие от устройств и платформ, а затем использовать SLIH для дальнейшей работы, не зависящей от платформы, в долгосрочном плане.
Обработчик прерываний второго уровня (SLIH):
Функциональность SLIH заключается в том, что они выполняют длинные задачи обработки прерываний, как и процессы. SLIH либо имеют поток ядра, выделенный для каждого обработчика, либо выполняются пулом рабочих потоков ядра.Подобно процессам, эти обработчики находятся в очереди выполнения в операционной системе до тех пор, пока процессорное время не будет доступно для выполнения обработки прерывания.
SLIH, в отличие от FLIH, можно планировать аналогично процессам и потокам.
Типы прерываний
Сигналы прерываний, как упомянуто выше, являются ответом на программные или аппаратные события в системе. Эти события классифицируются как программные прерывания или аппаратные прерывания.
Для любого процессора общее количество типов прерываний ограничено архитектурой.
Аппаратные прерывания:
Все устройства подключены к линии запроса прерывания (IRQ) или обнаружены устройствами, встроенными в логику процессора (то есть таймером ЦП), чтобы сообщить, что определенное устройство требует внимания со стороны операционной системы, а если операционной системы нет, то обратите внимание на «голую» программу, работающую на ЦП.
Считается, что для перемещения мыши используются аппаратные прерывания.
Строка запроса прерывания (IRQ): IRQ относится к аппаратному сигналу, отправляемому процессору, который временно останавливает запущенную программу и позволяет вместо этого запускать обработчик прерывания.
Что касается тактовой частоты процессора, аппаратные прерывания могут поступать асинхронно (передача данных без использования внешнего тактового сигнала) относительно тактовой частоты процессора и в любое время во время выполнения инструкции.
При этом все сигналы аппаратных прерываний обусловлены их синхронизацией с часами процессора и действуют только на границах выполнения команд.
Во многих системах устройство, которое вызывает конкретный запрос прерывания, может быть идентифицировано, поскольку каждое устройство связано с определенным сигналом IRQ.
Маскировка:
Обычно процессоры имеют внутренний регистр маски прерывания, который позволяет выборочно включать и отключать аппаратные прерывания. Кроме того, каждое прерывание связано с битом в регистре маски. В некоторых системах прерывание разрешено, когда бит установлен, и отключено, когда бит сброшен, в то время как в других системах установленный бит запрещает прерывание.
Следовательно, когда прерывание отключено, связанный сигнал прерывания будет игнорироваться процессором.
В некоторых случаях маска прерывания не может повлиять на некоторые сигналы прерывания, поэтому их нельзя отключить, они называются немаскируемыми прерываниями.
Такие типы прерываний имеют чрезвычайно высокий приоритет и не могут быть проигнорированы ни при каких обстоятельствах.
Следовательно:
- Маскируемое прерывание:
- Аппаратные прерывания могут быть отложены, если одновременно произошло прерывание с высоким приоритетом.
- Немаскируемое прерывание:
- Аппаратные прерывания, которые не могут быть задержаны и поэтому требуют, чтобы процессор немедленно их обработал.
Ложные прерывания:
Эти типы прерываний относятся к категории недействительных кратковременных сигналов на входе прерывания. Эти типы прерываний вызваны сбоями в результате электрических помех, условий гонки или неисправных устройств.
Состояние гонки: Состояние гонки относится к нежелательной ситуации, которая возникает, когда устройство или система пытается выполнить две или более операций одновременно, хотя эти операции должны выполняться в правильной последовательности для правильного выполнения.
Программные прерывания:
Программные прерывания относятся к прерыванию, которое запрашивается процессором для выполнения определенных инструкций или при выполнении определенных условий.
Эти прерывания могут быть созданы намеренно путем выполнения специальной инструкции, которая, по замыслу, вызывает прерывание при компиляции.
Кроме того, программные прерывания также могут быть вызваны неожиданно из-за ошибок выполнения программы. Они называются ловушками или исключениями.Примером этого является неправильное деление на ноль. Хотя операционная система перехватит и обработает эти исключения.
(Вы можете связать это при кодировании блоков, попытаться и поймать, вы указываете возможность ошибки (ошибок) и позволяете системе обработать решение, если эта ошибка произойдет.)
Периодическое прерывание:
Прерывания, которые происходят с фиксированным интервалом на временной шкале.
Апериодическое прерывание:
Прерывания, которые невозможно предсказать.
Синхронное прерывание:
Прерывания, которые зависят и синхронизируются с системными часами.
Асинхронное прерывание:
Прерывания, которые не зависят от системных часов и не совпадают по фазе с ними.
Прерывания, обрабатывающие более одного устройства
Обычно в компьютерных системах более одного устройства могут вызывать сигнал запроса прерывания, поэтому требуется дополнительная информация, чтобы позволить процессору решить, какое устройство следует рассматривать первым.
Ниже приводится ряд различных методов, которые процессор использует для принятия решения о своем выборе:
Опрос:
При опросе первое устройство, с которым сталкивается линия запроса прерывания (IRQ), — это устройство, которое обслуживается первым. Поэтому для обслуживания устройства вызывается соответствующая процедура обслуживания прерывания (ISR). Этот механизм аналогичен принципу «первым пришел — первым обслужен». Хотя опрос прост в реализации, много времени тратится на опрос IRQ всех устройств.
Векторные прерывания:
Векторные прерывания идентифицируют себя с помощью специального кода, который отправляется процессору по шине компьютера. Этот метод позволяет процессору идентифицировать устройство, создавшее прерывание.
Отправляемый специальный код может быть начальным адресом ISR или даже местом, где ISR находится в памяти, и называется вектором прерывания.
Вложение прерываний:
В этом методе устройства ввода / вывода организованы в соответствии со структурой приоритета.Это означает, что запросы на прерывание от устройства с более высоким приоритетом распознаются, а запросы от устройства с более низким приоритетом — нет.
Приоритет последовательного подключения:
Этот механизм состоит из последовательного соединения всех устройств, которые генерируют сигнал прерывания. Эта конфигурация регулируется приоритетом всех подключенных устройств. Первым ставится устройство с наивысшим приоритетом и так далее.
Способы запуска прерывания
Прерывания обычно запускаются двумя способами: либо по уровню логического сигнала, либо по сигналу запуска по фронту.
Запрос входов, чувствительных к уровню, в непрерывном режиме работы процессора, пока к входу применяется определенный логический уровень.
С другой стороны, вход, чувствительный к фронту, реагирует на фронты сигнала, которые представляют собой определенные нарастающие / спадающие фронты, которые вызывают фиксацию запроса на обслуживание. В конце процессор сбрасывает защелку, когда обработчик прерывания выполняет действие.
Метод запуска по уровню:
Прерывания, запускаемые по уровню, запрашиваются путем приостановки сигнала прерывания на его конкретном (высоком или низком) активном логическом уровне.
Прерывания, инициируемые уровнем, вызываются устройством, когда они передают сигнал и удерживают его на активном уровне. Обычно после того, как устройство было обслужено, оно отменяет сигнал, когда процессор дает ему команду сделать это.
Процессор распознает запрос прерывания, если сигнал заявлен, поскольку процессор производит выборку входного сигнала прерывания в течение каждого цикла команд.
Прерывания, запускаемые по уровню, всегда позволяют генерировать прерывание всякий раз, когда утверждается уровень источника прерывания.
Логический уровень: В цифровых схемах логический уровень считается одним из конечного числа состояний, в которых может находиться цифровой сигнал. Обычно это разница напряжений между сигналом и землей.
Метод запуска по фронту:
Прерывание, инициируемое фронтом, относится к прерыванию, о котором сигнализирует переход уровня на линии прерывания, либо спадающим, либо нарастающим фронтом.
Если устройство хочет сигнализировать о прерывании, оно должно будет подать импульс на линию, а затем вернуть линию в неактивное состояние, если импульс слишком короткий, чтобы быть обнаруженным входом / выходом по запросу, тогда специальный цена оборудования потребуется для его обнаружения.
В прерывании, инициированном фронтом, прерывания генерируются, если он может обнаружить подтверждающий фронт источника прерывания. Предел может быть обнаружен при изменении уровня источника прерывания, кроме того, он может быть обнаружен путем непрерывной выборки и обнаружения установленных уровней, когда предыдущая выборка была отменена.
Импульс: Термин «импульс» в обработке сигналов определяется как быстрое переходное изменение амплитуды одиночного сигнала от базового значения к более высокому или более низкому значению с последующим быстрым возвратом базового значения.
Операции и процессы прерывания
Основные операции прерываний включают:
- ЦП выдает команду чтения.
- Пока процессор обрабатывает, модуль ввода / вывода получает данные от периферийного устройства.
- Данные запроса ввода / вывода.
- ЦП запросит данные,
- Ввод / вывод передает данные.
Процесс, который происходит при обработке прерывания:
- Драйвер устройства инициирует запрос ввода / вывода от имени процесса.
- Запрошенный ввод / вывод инициируется, когда драйвер сигнализирует контроллеру ввода / вывода о правильном устройстве.
- Устройство сигнализирует контроллеру ввода / вывода, что готов к приему ввода, кроме того, вывод завершен или возникла ошибка.
- ЦП получит сигнал прерывания на IRL, таким образом, затем передав управление подпрограмме обработчика прерывания.
- На этом этапе обработчик прерывания определит причину прерывания и выполнит любую необходимую обработку, после ее завершения он выполнит команду прерывания «возврат из».
- ЦП вернется в состояние выполнения до выделения прерывания.
- ЦП продолжает обработку, пока цикл не начнется снова.
Резюме и факты
Что такое прерывания?
Прерывания — это сигналы, которые отправляются в ЦП внешними устройствами, такими как устройства ввода / вывода. Прерывания сообщают ЦП, что ему необходимо остановить его текущие действия и выполнить соответствующую часть операционной системы.
Прерывания являются важной частью системы, поскольку они обеспечивают пользователю лучший контроль над компьютером, без прерывания, пользователю, возможно, придется подождать, пока приложение, которое он хочет использовать, не получит более высокую приоритетность по сравнению с процессором для запуска, поэтому использование прерываний позволяет процессору немедленно обрабатывать требуемое приложение.
Что такое обработчик прерывания:
Обработчики прерываний, также известные как подпрограмма обслуживания прерываний (ISR), представляют собой блок кода, который связан с определенным условием прерывания.
Существует два типа обработчиков прерываний:
- Обработчик прерывания первого уровня (FLIH)
- Обработчик прерывания второго уровня (SLIH)
Типы прерываний
- Линия запроса прерывания (IRQ): An IRQ относится к аппаратному сигналу, отправляемому процессору, который временно останавливает запущенную программу и позволяет вместо этого запускать обработчик прерывания.
- Сигналы прерывания — это реакция на программные или аппаратные события в системе.Эти события классифицируются как программные прерывания или аппаратные прерывания.
- Для любого процессора общее количество типов прерываний ограничено архитектурой.
- Аппаратные прерывания
- Маскирование
- Маскируемое прерывание
- Немаскируемое прерывание
- Ложные прерывания
- Программные прерывания
- Периодическое прерывание
- Апериодическое прерывание
- Синхронное прерывание
- Опрос
- Векторные прерывания
- Вложение прерываний
- Приоритет последовательного подключения
- CPU выдает команду чтения.
- Пока процессор обрабатывает, модуль ввода / вывода получает данные от периферийного устройства.
- Данные запроса ввода / вывода.
- ЦП запросит данные,
- Ввод / вывод передает данные.
- https://static.lwn.net/images/pdf/LDD3/ch20.pdf
- https://web.archive.org/web/20160426144654/http://www.sltf .com / article / pein / pein9505.htm
- http://www.tldp.org/LDP/lkmpg/2.6/html/x1256.html
- geeksforgeeks.org/interrupts/
- https://techterms.com / definition / jitter
- https://techterms.com/definition/interrupt
- http://inputoutput5822.weebly.com/interrupt-driven-io.html
- https: // www.garystringham.com/level-triggered-vs-edge-triggered-interrupts/
- https://en.wikipedia.org/wiki/Pulse_(signal_processing)
- https://www.geeksforgeeks.org/priority-interrupts- sw-polling-daisy-chaining /
- https://www.geeksforgeeks.org/interrupts/
- https://en.wikipedia.org/wiki/Interrupt_handler
- https://medium.com/@waliamrinal/ what-are-interrupts-in-computer-organization-e23a223b3f75 #: ~: text = In% 20computer% 20architecture% 2C% 20an% 20interrupt, event% 20that% 20needs% 20immediate% 20attention
- https: // en.
0 Обработка асинхронных прерываний
9119 9119 9119 9119 более одного устройства:Методы запуска прерывания:
Прерывания обычно запускаются двумя способами: по уровню логического сигнала или по фронту срабатывающий сигнал.
Метод запуска по уровню:
Прерывания, запускаемые по уровню, запрашиваются путем приостановки сигнала прерывания на его конкретном (высоком или низком) активном логическом уровне.
Прерывания, запускаемые по уровню, всегда позволяют генерировать прерывание всякий раз, когда утверждается уровень источника прерывания.
Метод запуска по фронту:
Прерывания, инициированные по фронту, генерируются, если он может обнаружить подтверждающий фронт источника прерывания.Предел может быть обнаружен при изменении уровня источника прерывания, кроме того, он может быть обнаружен путем непрерывной выборки и обнаружения установленных уровней, когда предыдущая выборка была отменена.
Основные операции прерывания включают: