Сочетание ввода и вывода в системах, использующих прерывания

Прерывания ввода и вывода можно объединить в единой системе ввода-вывода информации по сигналам прерывания. В такой системе по сигналу прерывания от устройства ввода начинается процесс подготовки к приему данных; сигнал прерывания от устройства вывода информирует ЦП, что периферийное устройство готово,. после этого ЦП начнет передачу данных, как только будет закончена их подготовка.. Простые системы подобного рода — низкоскоростное оконечное устройство связи, система сбора данных, преобразователь кодов, контрол*, лер передачи информации «клавиатура — магнитная лента» или «клавиатура— гибкий диск», а также пульт управления.

На рис. 9.22 показана аппаратура, необходимая для организации такой системы прерываний. Порты ввода-вывода здесь такие же, как и на рис. 9.17 и 9.19. В каждом порте ввода фиксируются признаки прерываний, проверяя которые процессор может определить источник прерывания. Сначала рассмотрим систему прерываний с одним входом запросов на прерывание, без применения векторов. Использование более сложных систем прерываний будет описано далее.

Система работает следующим образом: , -

Шаг /. Устройство ввода посылает сигнал «данные готовы» и данные. Сигнал «данные готовы» устанавливает триггер запроса на прерывание и вызывает прерывание работы процессора, который находится в состоянии останова.

Шаг 2. В ответ на запрос ца прерывание ЦП начинает выполнять подпрограмму обработки прерывания, размещенную в памяти начиная с адреса INTADD.

Шаг З. Проверяя триггеры прерываний, ЦП определяет источник прерывания и передает управление процедуре обработки прерывания от устройства ввода.

Шаг 4. Центральный процессор читает вводимые данные и сбрасывает триггер прерывания от устройства ввода.

Шаг 5. Центральный процессор готовит выводимые данные и ожидает прерывания от устройства вывода.

Шаг 6. Устройство вывода посылает сигнал «УВВ готово». По этому сигналу устанавливается триггер запроса на прерывание и прерывается работа процессора.

Шаг 7. В ответ на запрос на прерывание ЦП начинает выполнять программу обработки прерывания, размещенную начиная с адреса INTADD.

Шаг 5. Проверяя триггеры прерываний, ЦП определяет источник прерывания и передает управление процедуре обработки прерывания от устройства вывода.

Шаг 9. Центральный процессор посылает выводимые данные (при этом сбрасывается триггер прерывания от устройства вывода) и возвращается в состояние останова, в котором он находился перед первым шагом.

Если прерывание от устройства вывода возникает раньше, чем данные будут подготовлены, то система может просто «сделать заметку»

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

В программе, описывающей работу системы, изображенной на рис. 9.22, объединены приведенные выше процедуры ввода и вывода данных. Признаки DRDY и PRDY указывают на готовность данных и устройства вывода. В целом программа выглядит следующим образом:

ORG RSTADD Установить счетчик адреса

* Сбросить признаки готовности данных и УВВ:

CLEAR DRDY Сбросить DRDY

CLEAR PRDY Сбросить PRDY

ENABLE INTERRUPTS Разрешить прерывания HALT Останов

ORG • INTADD Установить счетчик адреса

Сохранить содержимое регистров и значения признаков

* Определить источник прерывания

READ LATCHES Прочитать значения триггеров преры-

* ваний из порта-фиксатора

AND IFLAG Маскированием выделить признак ripe-

* рывания от устройства ввода

*

JUMP ON NOT ZERO RCV Если не 0, то перейти на подпрограм-NOT ZERO му RCV («принять»)

* Прерывание от устройства вывода

* Послать данные, если они подготовлены

LOAD DRDY Загрузить значение DRDY в регистр

SUBTRACT # 1 Вычесть 1 из содержимого регистра

JUMP ON ZERO SEND Если 0, то перейти на подпрограмму

SEND («послать»)

* «Сделать заметку» о готовности устройства вывода LOAD #1 Загрузить в регистр единицу STORE PRDY Установить PRDY

*

Восстановить содержимое регистров и значения признаков

RETURN Возвратить управление главной про-

грамме

* (маска IFLAG имеет 1 в разряде, соответствующем прерыванию

* от устройства ввода, и 0 — в остальных разрядах)

ORG RCV Установить счетчик адреса

ENABLE INTERRUPTS Разрешить прерывания

Подготовить данные для вывода
LOAD #1 STORE DRDY LOAD PRDY SUBTRACT #1 JUMP ON SEND ZERO HALT

ORG SEND
Загрузить в регистр 1 Установить DRDY Загрузить значение PRDY в регистр Вычесть 1 из содержимого регистра Если 0, перейти на подпрограмму «послать» (SEND)

Останов

Установить счетчик адреса

Передать данные периферийному устройству JUMP RSTADD Передать управление на начало главной программы

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

1. Первым возникает прерывание от устройства вывода. Процессор должен установить DRDY (т. е. «устройство вывода готово») и либо запретить прерывание от устройства вывода, либо послать на УВВ символ-разделитель, который игнорируется устройством. Центральный процессор должен сбрасывать или запрещать прерывание от устройства вывода так, что прерывание от устройства ввода при этом не запрещается.

2. Прерывание от устройства вывода возникает до того, как данные будут подготовлены. Центральный процессор должен установить PRDY? но не возобновлять разрешение прерываний.

Зг Перед прерыванием от устройства вывода возникает второе прерывание от устройства ввода. Центральный .процессор должен либо запретить прерывание опт, устройства ввода (после того„. как принял одно прерывание от устройства ввода), либо сохранить новые вводимые да^иые с цеша их последующей обработки. Центральный процессор не может просто игнорировать прерывание от устройства ввода, не сбрасывая его.

При выполнении подпрограмм обработки прерываний всегда возникают «мертвые» промежутки времен**, т. е. такие, когда система прерываний находится в состоянии «запрещено» и данные могут быть потеряны, Если прерывания возникают настолько часто, что наличие таких промежутков становится серьезной проблемой, то, возможно, систему ввод^-вывода вообще не следует строить на основе аппарата прерываний. Системы» управляемые по сигналам прерывания, хорошо функционируют, во-первых, когда процессор может справиться с обработкой прерываний при максимально возможной в данной системе скорости обмена данными, и, во-вторых* когда между моментами поступления запросов на прерывания проходит? большое количество машинных циклов.

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

1. Прежде чем разрешить прерывания, система должна инициализировать систему прерываний и установить начальные значения переменных параметров.

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

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

4. Подпрограмма обработки прерывания должна разрешить прерывания перед возвратом управлений главной программе; подпрограмма может разрешить прерывания даже раньше, если поступление новых прерываний не помешает работе подпрограммы. С помощью системы приоритетов можно блокировать конкретные Прерывания, которые могут помешать подпрограмме. ‘ * '*'

5. Триггер Запроса на прерывание следует сбрасййЗть. Часто этЬ выполняется аппаратно*. !

6. При разработке систем следует принимать во b низание «мертвые» промежутки времени, когда система прерываний отключена. Поэтому недостаточно заботиться только о фиксации сигналов прерываний: сигналы, возникающие слишкомчасто, также могут быт потеряны. Время реакции системы ограничивает 'скорость* с которой система успевает обрабатывать прерывания. <

В системах, управляемых* но сигналам прерываний, очень важна реентерабельность nporpiaMM: Это свойство позволяет не только осуществлять многоуровневые прерывания, йай использовать & прог^ам* мах обработки прерываний подпрограммы, которые исполнялись в момент прерывания. К таким подпрограммам относятся подпрограммы преобразования кодов, различные действия с символами, подпрограммы проверки и исправления ошибок, подпрограммы управления вводом-выводом. Составление программ, управляемых по сигналам прерывания, — дело достаточно трудное, даже если не заботиться о реентерабельности программ. г

Систему, имеющую только одно устройство ввода и одно устройство вывода, можно, конечно, расширить. Можно было бы добавить другие УВВ, сигнализаторы тревоги, таймеры, панели управления, схемы, предупреждающие о падении напряжения питания, кнопки «внешнее прерывание» {breakpoint switches) — все эти устройства могут быть источниками сигнала прерывания. Если нельзя допустить чрезмерной перегрузки процессора и программиста, то с ростом числа возможных источников прерывания потребуются и более сложные аппаратные средства. Любая из следующих задач может оказаться основной: определение источника прерывания, решение вопроса о том, каки-е прерывания следует разрешать в конкретные моменты времени* управление сигналами прерываний. Применение векторных прерываний может существенно уменьшить процессорное время, сократить программное обеспечение и аппаратные средства, необходимые для идентификации источника. В настоящее время большинство фирм, производящих микропроцессоры, поставляет специальные контроллеры прерываний, которые используются в системах сбора данных, коммутации, управления технологическими процессами и производством, системах мониторинга и обеспечения безопасности и т. д. Операционные системы, предназначенные для работы в реальном масштабе времени, смогут значительно облегчить проектирование систем, связанных с обработкой прерываний 



Приглашаем на консультацию в отделение неврологии клиник Ниармедик в Москве. . Купить металлические двери в волгограде - волгоград купить железную дверь veotab.ru.