Назначение системы прерываний – быстрая реакция на события, происходящие внутри и вне ЭВМ. Быстрая реакция обеспечивается путем реализации специальной операции прерывания. Под операцией прерывания понимается прекращение процесса выполнения текущей программы и переключение процессора на выполнение другой программы, обслуживающей данную причину прерывания.
По завершении обслуживания прерывания прерванный процесс должен быть продолжен, причем, естественно, с того момента, в котором он был прерван. С этой целью в момент прерывания процесса необходимо запомнить (сохранить) всю информацию, необходимую для его возобновления, т.е. информацию о состоянии процесса. Эту информацию в ВТ принято называть вектором состояния процесса. Он включает информацию о состоянии ЦП — т.н. слово состояния процессора (ССП), которое включает адрес следующей команды, признаки результата – флаги и др., а также значения переменных процесса, которые хранятся в ресурсах общего назначения – в частности, в регистрах общего назначения (РОН). Для хранения вектора состояния процесса обычно используют специальную область ООП, организованную как стек.
09. Прерывания (эфир)
Операция прерывания реализуется аппаратурой ЭВМ и сводится к выполнению следующих действий.
1. Выполнение текущей программы прерывается. Прерывание осуществляется по завершении текущей i-й команды программы. Выполнение i+1 команды не начинается (блокируется).
2. Запоминается информация о состоянии процессора в виде ССП: адрес следующей команды, признаки результата, маски и т. п. информация.
3. Управление передается специальной программе (обработчику), обслуживающей данную причину прерывания. Она выполняет все действия, необходимые для обработки прерывания.
Структура (типовая) обработчика прерывания:
1) сохранение используемых РОН (как части вектора состояния процесса) в ячейках ОП;
2) собственно обработка прерывания;
3) восстановление РОН (ОП→РОН) и возврат из прерывания.
Операция прерывания запускается (возбуждается) либо по сигналам прерывания, либо по командам прерывания (похожим на команду CАLL – вызов подпрограммы).
Причины, по которым формируются (вырабатываются) сигналы прерываний, различны и делятся на внутренние и внешние.
Внешние причины – это события, которые возникают вне ЭВМ: в ПУ (например, в клавиатуре и т.п.), в других ЭВМ ВК, сигналы времени от таймера и т.п.
Внутренние причины – это события, которые происходят внутри ЭВМ. Их можно разделить на два типа: 1) причины (события), при возникновении которых нормальное развитие (продолжение) вычислительного процесса становится невозможным, или бессмысленным; 2) причины (события) нормальные, естественные для вычислительного процесса.
Рассмотрим их более подробно. Сначала рассмотрим несколько примеров событий (причин), возникновение которых делает бессмысленным продолжение текущей программы. Во-первых, это сигналы прерываний от схем контроля. В состав ЭВМ обычно для выявления отказов аппаратуры встраиваются специальные схемы контроля, которые вырабатывают сигналы об ошибках (отказах) аппаратуры.
09 — Этот байт кончился, несите следующий
По этим сигналам происходит прерывание текущей программы и процессор переключается на выполнение специальной программы диагностики неисправностей. Программа диагностики определяет (локализует) место неисправности и сообщает об этом человеку – для ремонта (устранения отказа).
Другая группа причин (событий), при появлении которых продолжение текущей программы становится бессмысленным, – это различного рода некорректности при выполнении программ – т.н. программные причины прерываний. Это прежде всего переполнение разрядности сетки машины при обработке чисел, запрещенный код команды, неправильный адрес и т.п.
Нормальные (естественные) причины прерываний: это процессы ввода/вывода информации, которые часто инициируются по сигналам прерываний от устройств ввода-вывода (УВВ) информации, а также обращение к различным ресурсам (программам) ОС.
Прерывания от УВВ. Сигналы прерываний в них вырабатываются в момент готовности устройства к обмену информацией. По этому сигналу прерывания запускается специальная программа-обработчик, которая обеспечивает обмен информацией между регистром данных (РД) УВВ и ячейкой ОП. Этот способ ввода-вывода используется обычно для обслуживания медленнодействующих ПУ (клавиатуры, например).
Прерывания при обращениях к сервисным программам ОС обычно осуществляются по специальным командам прерываний. В IBM PC, например, для этих целей можно использовать специальную команду прерывания типа INT N, которая встраивается в пользовательскую программу в необходимых местах. Эту группу причин прерываний принято называть «командные прерывания».
Маскирование прерываний. ЭВМ должна иметь средства, позволяющие избирательно, гибко реагировать на различные сигналы (причины) прерывания.
Например, если пришел сигнал прерывания от одной из схем контроля (которая обнаружила факт отказа аппаратуры), то в этом случае нет необходимости (бессмысленно) реагировать на другие сигналы прерываний (например, на переполнение разрядной сетки) до тех пор, пока неисправность аппаратуры не будет устранена. Для этих целей используется маска прерываний – двоичный код М=m1…mk, , в котором каждой причине прерывания ставится в соответствие бит маски mi. Если, например, бит маски mi=0, то прерывание по i-й причине запрещено, т.е. замаскировано. Если mi=1, то разрешено, т.е. не замаскировано. Таким образом, операция прерывания инициализируется (возбуждается) только незамаскированным сигналом прерывания.
Как быть, если одновременно вырабатывается несколько сигналов прерывания? Как разрешить конфликт между ними? Для исключения конфликтной ситуации сигналам (причинам) прерываний присваиваются различные приоритеты. Приоритет – это преимущественное право (перед другими) на обслуживание – привилегия в обслуживании.
Назначение приоритетов осуществляется человеком исходя, например, из динамики процессов: быстропротекающим процессам назначают более высокие приоритеты. Или, например, исходя из ранжировки некорректностей: некорректность в аппаратуре (отказ) в отличае от некорректности в программе необходимо обслуживать в первую очередь. Почему?
Некорректную программу можно снять со счета и начать обслуживать другую программу. Отказ же аппаратуры делает невозможным выполнение любой программы. Поэтому реакция на отказ должна иметь преимущества перед программными некорректностями и другими причинами прерываний.
![]() |
Для реализации назначенных приоритетов в ЭВМ используется т.н. система приоритетов, которая является составной частью системы прерываний ЭВМ. Простейшая схема системы приоритетов представлена на рисунке 2.4.
Как работает эта схема? При поступлении хотя бы одного незамаскированного сигнала прерывания λ`i в цепь запросов процессор прерывает выполнение текущей программы, а арбитр приступает к поиску источника (устройства), пославшего запрос (сигнал) на прерывание.
Поиск осуществляется в порядке установленных приоритетов, т.е. начинается с источника (устройства), имеющего наивысший приоритет и ведется в порядке убывания приоритетов. Поиск продолжается до тех пор, пока не обнаружится устройство, пославшее сигнал прерывания (например, λ`5 =1). Другими словами, арбитр осуществляет поиск устройства с наивысшим в данный момент времени приоритетом. После этого запускается подпрограмма, обслуживающая данную причину прерывания.
Как быть, если в процессе обслуживания причины прерывания вырабатывается другой сигнал прерывания? Здесь возможны две схемы поведения – две дисциплины обслуживания. Первая — обслуживание по схеме с относительными приоритетами (ОПР). Вторая – обслуживание по схеме с абсолютными приоритетами (АПР).
В случае ОПР приоритет, который присваивается сигналу прерывания, относителен, т.е. действует не всегда, а только в момент одновременного поступления нескольких запросов (сигналов) прерываний. Если же высокоприоритетный сигнал поступил позже сигнала с более низким приоритетом, то обслуживание этого более низкоприоритетного сигнала не может быть прервано сигналом с более высоким приоритетом, т.е. осуществляется без прерывания до завершения и только потом начинается обслуживание запроса с более высоким приоритетом. Этот механизм обеспечивается путем маскирования сигналов прерываний от других устройств на время обслуживания.
В случае с АПР приоритет абсолютен, т.е. действует всегда (на временной оси) и вызывает прерывание подпрограмм прерывания с более низкими приоритетами. Обслуживание по схеме с относительными и абсолютными приоритетами можно проиллюстрировать временной диаграммой (рисунок 2.5).
Дисциплина с ОПР имеет глубину прерываний 1, с АПР – глубину прерываний больше 1: 2,3,… (вложенные прерывания). Чем отличаются еще? Временем ответа (реакции) – как видно из временной диаграммы в случае АПР обслуживание запросов 2 и 3 завершается раньше, чем для случая ОПР.
![]() |
Способы реализации функций арбитра. Применяются два основных способа: программная и аппаратная реализация.
При программном способе функции арбитра выполняет специальная программа, которую, естественно, реализует процессор – «программа-арбитр». Ее структура представлена на рисунке 2.6. Достоинство способа: минимальные затраты оборудования. Недостаток: существенные (большие) затраты времени на арбитраж, т.е. на поиск устройства, пославшего запрос на прерывание с наивысшим в данный момент времени приоритетом.
Для уменьшения этого времени естественно использовать второй способ – аппаратную реализацию функций арбитра. Простейшая схема: в состав системы прерывания вводится еще одна цепь – разрешение прерывания РП (дейзи-цепочка), которая последовательно подключается ко всем устройствам в порядке установленных приоритетов (рисунок 2.7).
Порядок функционирования: устройство, посылая сигнал прерывания в цепь запросов прерываний ЗП, размыкает ключ в цепи РП. Такую цепь называют дейзи-цепь.
Арбитр, получив хотя бы один незамаскированный запрос на прерывание, ждет завершения текущей команды в процессоре, ЦП прерывает выполнение текущей программы, т.е. не переключается на выполнение следующей команды программы, а арбитр запоминает информацию о состоянии ЦП (обычно путем заталкивания в стек содержимого счетчика команд СК и регистра флагов). После этого арбитр вырабатывает ответный сигнал (импульс) «разрешение прерывания» и посылает его в цепь РП.
Этот сигнал распространяется до ближайшего к арбитру устройства, пославшего запрос на прерывание (т.е. до устройства с наивысшим в данный момент времени приоритетом). Получив сигнал по цепи РП, это устройство выставляет на ШД процессора (и арбитра) свой индивидуальный адрес вектора прерываний АВП. Этот адрес используется ЦП для извлечения из ОП т.н. вектора прерываний ВП.
ВП – это обычно пара слов: адрес программы- обработчика и новые значения для регистра флагов. ВП обычно хранится в фиксированных ячейках ОП. Назначается ВП индивидуально для каждого устройства. По АВП ЦП извлекает адрес обработчика из ОП и загружает его в СК, а значения флагов — в регистр состояния. Тем самым запускается программа обслуживания данного устройства.
Все эти действия на аппаратном уровне реализуются значительно быстрее, чем в случае программной реализации, т.к. поиск осуществляется со скоростью распространения электрических сигналов по электрическим цепям. Для увеличения гибкости система приоритетов может быть организованна по многоуровневой схеме (рисунок 2.8).
Рисунок 2.6
![]() |
Рисунок 2.7 — Одноуровневая система приоритетов
![]() |
Рисунок 2.8 – Многоуровневая система приоритетов
Система прерываний ПЭВМ IBM PC. В IBM PC используется т.н. векторная система прерываний, в составе которой используется двухуровневая система приоритетов (рисунок 2.9).
![]() |
Рисунок 2.9 – Система прерываний IBM PC
Здесь арбитр системы прерываний имеет два входа для приема сигналов прерываний от устройств ВК и других источников. Вход NMI имеет более высокий приоритет, чем вход INTR. Кроме того, вход NMI не маскируется, а маскируемый вход INTR маскируется маской прерываний IF из регистра флагов ЦП. Таким образом, аппаратные (внешние) прерывания делятся на два типа: маскируемые и немаскируемые.
Кроме аппаратных прерываний есть и внутренние прерывания. Это прерывания типа отказ (fault) – такого рода прерывание наступает в случаях, когда в результате различных некорректностей невозможно нормальное выполнение команды – прерывание наступает до выполнения команды. Прерывание «ловушка» (trap) – прерывание наступает в результате выполнения команды, например, команды прерывания INT N. Прерывание «аварийное завершение команды» (abort) из-за ошибки аппаратуры. Этот тип прерываний не маскируется.
Обслуживание прерываний: сначала в стек заталкивается адрес следующей команды: CS, IP (2 слова) и регистр флагов RF (третье слово), кроме того, сбрасываются биты IF=0, TF=0 в RF ЦП. После этого по номеру ВП N, полученному от внешнего устройства или сгенерированному внутри ЦП, из ОП извлекается ВП. Адрес ВП формируется следующим образом: АВП=4N.
По нему из ОП извлекаются два слова адреса обработчика, которые загружаются в регистр CS (базовый адрес) и IP (смещение). По ним выбирается первая команда программы обработки прерывания. В конце программы-обработчика ставится команда iret – возврат из прерывания, по которой из стека выталкиваются 2 слова адреса возврата к прерванной программе и загружаются в CS и IP, и третье слово — в RF.
В PC каждой причине прерывания ставится в соответствие свой номер ВП (тип прерывания). Например, деление на 0 имеет ВП с номером 0 (тип 0). Всего в IBM PC можно использовать 256 ВП с номерами от 0 до 255 (от 0 до FFh).Все ВП располагаются в сегменте данных, начиная с 0 адреса, АВП кратен 4. Запросом на прерывание является положительный перепад сигнала на входе NMI.Запрос по входу NMI обслуживается ВП с номером 2 (тип 2). Этот номер генерируется (формируется) внутри ЦП автоматически. Обслуживание прерывания по входу NMI осуществляется без прерывания обработчика, т.е. по схеме с ОПР, т.к. сигнал запроса сбрасывается только после выполнения команды IRET.
На входе INTR сигналом запроса является сигнал высокого уровня. По этому сигналу арбитр заталкивает в стек IP, CS, RF и вырабатывает два ответных сигнала (импульса) INTA1, INTA2.
Получив второй из них, программируемый контроллер прерываний ПКП сбрасывает сигнал на входе INTR и посылает по ШД в ЦП номер ВП, соответствующий причине прерывания с наивысшим в данный момент времени приоритетом (IRQi). По ВП запускается программа-обработчик, которая не может быть прервана (т.к. IF=0) до тех пор, пока сама не установит маску IF=1 (по команде STI). Отметим еще раз, что эта п/п может быть прервана сигналом прерывания на входе NMI, т.к. на него флаг IF не действует (АПР). Кроме того, эта п/п может быть прервана и некоторыми внутренними причинами прерывания – например, делением на 0.
Рекомендуемая структура программы-обработчика для IBM PC представлена на рисунке 2.10.
Противоречия (недостатки). Фирма Intel зафиксировала векторы с номерами от 0 до 31 для обслуживания исключений (внутренних прерываний процессора): тип 0 – деление на 0 и т.д. Однако фирма IBM при разработке ПЭВМ типа PC часть из них использовала под системные прерывания BIOS и DOS. Возникает конфликтная ситуация, которую разрешить не просто!
Источник: studopedia.su
Организация ввода/вывода в системе прерываний
В тех случаях, когда в МС существует дефицит времени ЦП, а периферийные устройства работают медленно, используется их обслуживание по прерываниям. Например, алфавитно-цифровое печатающее устройство (АЦПУ) обеспечивает печать символа с номинальной скоростью 100 знаков в секунду или 1 знак за 10 мс. Если предположить, что цикл обращения к памяти составляет 2 мкс, то для вывода одного знака ЦП потребуется около 0,1 мс (см. процедуру РАО ИРПР-адаптера). Следовательно, из 10 мс (интервал вывода одного знака) 9,9 мс ЦП простаивает, ожидая готовности АЦПУ к приему нового знака.
Эффективность МС может быть существенно повышена, если отказаться от малопроизводительного ожидания готовности на программном уровне и передать функцию специальным аппаратным средствам. В это время ЦП может выполнять некоторую полезную работу, связанную с обработкой данных или обслуживанием других ПУ.
При готовности приступить к очередной операции ВВ устройство посылает в ЦП запрос на прерывание, по получении которого он временно приостанавливает выполнение текущей программы и переходит на обслуживание ПУ. После этого ЦП возвращается к прерванной программе, продолжая ее с момента приостановки. Обслуживание прерываний осуществляется в незаметном для основной программы режиме, поэтому их наличие прямо не влияет на работу последней, за исключением времени ее исполнения. Следует отметить, что обслуживание прерываний приводит к изменению общего состояния МС, что в дальнейшем может сказаться и на поведении основной программы, однако такое воздействие прерываний не будет прямым.
Рис. 13.1. Обслуживание ввода-вывода по прерываниям
Обслуживание ВВ по прерываниям (рис. 13.1.) является альтернативой программно-управляемому обмену. Если при чисто программном управлении как начало процедуры, так и непосредственное ее исполнение находятся под управлением программы, то обслуживание по прерываниям инициируется аппаратными средствами.
Совокупность этих средств, команд и программ их обслуживания называется системой прерываний. Прежде чем обслуживание ПУ по прерываниям будет начато, система прерываний должна быть настроена на это. Функция запуска МС возлагается на специальную процедуру инициализации обслуживания.
После окончания работы с ПУ также может потребоваться специальная процедура, которая завершит эту работу. Для того чтобы прерванная программа могла быть продолжена после обслуживания очередного запроса на прерывание с того места, на котором она была приостановлена, состояние ЦП должно быть восстановлено. Сохранность состояний сигналов управления в аппаратуре обеспечивается тем, что переход к обработке прерывания и возврат к прерванной программе осуществляется в строго определенные моменты времени, когда состояния этих сигналов однозначны и известны, т. е. в конце очередного командного цикла перед фазой выборки последующего. Состояние программно-доступных регистров может быть сохранено в памяти МС, а затем восстановлено непосредственно перед возвратом в прерванную программу. Этот процесс называется контекстным переключением и выполняется как программными, так и аппаратными средствами.
[Вернутся к плану лекции]
Источник: studfile.net
Большая Энциклопедия Нефти и Газа
Обслуживание прерывания начинается выполнением процедур классификации ошибок как сбоев ( восстанавливающихся отказов) или невосстанавливающихся отказов. Если при повторениях программы ошибка подтверждается, то она классифицируется как отказ и осуществляется переход к локализации неисправности. Вход в процедуру локализации неисправности может осуществляться автоматически или с пульта управления оператором. В системе автоматической диагностики ЭВМ ЕС-1030 реализован метод раскрутки, который характеризуется последовательным расширением работоспособной части ЭВМ. Поэтому диагностика неисправностей идет по схеме: ОЗУ — Управление режимами работы ОЗУ — — ЗУМК — — Управление режимами работы ЗУМК — Процессор ( проверка узлов с запоминанием информации) — — Процессор ( проверка комбинационных узлов) — Проверка, мультиплексного канала — Проверка селекторного канала. [1]
Закончив обслуживание прерывания и выполнив команду RTI, процессор продолжит работу по основной программе с восстановленным значением PSW. После того как в CSR принтера будет установлен флаг готовности, снова произойдет прерывание выполнения основной программы уже в новом месте и в буфер принтера будет передан код очередного символа текста. Хотя фактически работа процессора основана на выполнении последовательных действий, вывод сообщения на принтер, с точки зрения пользователя, будет происходить параллельно с выполнением основной программы. После очередного прерывая, когда будет обнаружен признак конца текста — нулевой байт, перед выходом из подпрограммы принтеру будет запрещено прерывать процессор и содержимое счетчика COUNT будет восстановлено. Далее работа по основной программе будет продолжена. [2]
После обслуживания прерывания ЦП выдает сигнал сброса, который возвращает в исходное состояние все разряды в регистре прерываний. [3]
Подпрограмма обслуживания прерываний , начинающаяся меткой PRINT и заканчивающаяся командой RTI возврата из прерывания, размещается вслед за основной программой. Подпрограмма начинается с проверки байта, на который указывает ячейка COUNT. Если содержимое байта отлично от нуля, оно передается в регистр данных принтера, значение COUNT увеличивается на единицу ( при этом он будет указывать на следующий байт строки текста) и происходит выход из прерывания. [4]
Программа обслуживания прерываний всегда начинается в ячейке 00018 и может иметь самый различный характер в зависимости от набора внешних устройств, входящих втистему, и принципов построения общей программы. Для этого требуется минимум три команды: запись HP в некоторой буферной ячейке, циклический сдвиг1, обычно влево для того, чтобы сбдержимое ДР ( ДРС) попало в HP ( CAl), и запись ( в другую буферную ячейку) этого содержимого. Таким образом, необходимый минимум информации о прерванной задаче оказывается обеспеченным — в ячейке 00008 имеется адрес продолжения задачи, в буферных ячейках запасены состояния двух других основных регистров машины в момент прерывания. [5]
Логика обслуживания прерывания ( как и — всего диспетчера) заметно усложняется, если глубина прерывания должна быть более единицы. В этом случае допускается многократное прерывание одних задач другими в любом месте их рабочих программ. Поэтому все задачи идут с разрешенным прерыванием, а у блока обслуживания прерывания появляется новая сторона взаимодействия с диспетчером. [6]
Программа обслуживания прерываний , написанная пользователем, может применяться и в присутствии монитора, но тогда необходимо сохранять ячейки 10 и 12, а перед выходом восстанавливать их, чтобы не потерять путь в мо-ниторную программу обработки. [7]
Программы обслуживания прерываний по команде ЕМТ могут употребляться только в программах, работающих без операционной системы, потому что в программном обеспечении фирмы DEC эта команда существенно используется. Вместо нее пользователь может писать команду TRAP, которая отличается от команды ЕМТ только адресом вектора прерывания. Код операции равен 104400, причем снова младший байт может быть использован для передачи информации программе обработки. [8]
Подпрограмма обслуживания прерывания — набор команд, которые обрабатывают информацию, относящуюся к прерывающему устройству. [9]
Подпрограмма обслуживания прерывания опрашивает эти устройства и определяет то, в котором установлен признак прерывания. В многоуровневой одноприоритетной системе имеется одна линия сигнала прерывания и ряд линий идентификации устройства. Когда внешнее устройство выдает сигнал в общую линию прерывания, оно также устанавливает свой уникальный код на линиях идентификации. Такая система более сложна в плане ее реализации, ко обеспечивает ускоренный ответ, В одноуровневой многоприоритетной системе линии прерываний различных устройств подключены к единственному входу прерываний процес-сорй через логическую схему, обеспечивающую маскирование прерываний низкоприоритетных устройств прерываниями устройств с более высоким приоритетом. Процессор опрашивает устройства в порядке их приоритета и определяет то из них, которое инициировало прерывание. В многоуровневой многоприоритетной системе имеются средства маскирования прерываний в соответствии с приоритетом и немедленной идентификации по сигналам соответствующих линий. [10]
При обслуживании прерываний по опросу микропроцессор блокирует свой вход INT, так как инициатором обслуживания является он сам. В этом случае по каждому сигналу RD, поступающему после подачи команды Обслуживание по результатам опроса, при наличии запросов считывается код номера запроса, имеющий наивысший в данный момент уровень приоритета. [11]
При обслуживании прерываний по опросу микропроцессор блокирует свой вход INT, так как в этом случае инициатором обслуживания является микропроцессор. [12]
Этот порядок обслуживания прерываний может быть изменен путем установки для каждой программы соответствующей маски. При наличии в соответствующей маске запрета на прерывание какого-либо класса прерывание по замаскированной причине не будет реализовано. [13]
Настройка блока обслуживания прерываний состоит в уточнении номеров подключенных внешних устройств, присылающих свои запросы по каналу прерывания, и заполнении таблицы характеристик запрашиваемых задач. Таким образом, кроме таймера и устройств ввода — вывода, по каналу прерывания могут присылать свои запросы еще пять внешних устройств. [14]
Настройка блока обслуживания прерываний состоит в уточнении номеров подключенных внешних устройств, присылающих свои запросы по каналу прерывания, и заполнении таблицы характеристик запрашиваемых задач. В исходной редакции программа-диспетчер после прерывания опрашивает флаги таймера, устройства ввода, внешних устройств с номерами 148 и 158, входного коммутатора дискретных сигналов и устройств вывода. Таким образом, кроме таймера и устройств ввода — вывода, по селекторным каналам могут присылать свои запросы еще два внешних устройства и 12 устройств имеют вход в машину через групповой флаг входного коммутатора дискретных сигналов. Номера соответствующих селекторов, предусмотренных настоящим вариантом операционной еистемы, и адреса констант, характеризующие задачи, которые вызываются по запросам этих устройств, сведены в таблицу. [15]
Источник: www.ngpedia.ru