Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

При реализации ввода/вывода по прерываниям необходимо дать ответы на два вопроса




Реализация ввода/вывода по прерываниям

Рассмотрим случай принтера, не буферизирующего символы, а печатающего их сразу по прибытии.

Когда внешнее устройство готово к обмену данными

· оно через модуль ввода-вывода извещает об этом процессор с помощью запроса на прерывание

· ЦП осуществляет передачу очередного элемента данных

· после чего возобновляет выполнение прерванной программы.

 

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

· Когда выполняется системный вызов печати строки буфер копируется в пространство ядра и первый символ строки копируется на принтер, как только принтер выставит бит готовности.

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

· Когда принтер напечатал символ и готов принять следующий, он инициирует прерывание.

· Это прерывание вызывает остановку текущего процесса и сохранение его состояния.

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

 

Этот метод эффективнее программно управляемого ввода-вывода, поскольку устраняет ненужные ожидания, однако обработка прерывания занимает достаточно много времени ЦП. Кроме того, каждое слово, пересылаемое из памяти в модуль ввода-вывода или в противоположном направлении, как и при программно управляемом вводе-выводе, проходит через ЦП.

 

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

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

 

Рассмотрим вопрос идентификации устройства. Здесь возможны три основных метода:

1. множественные линии прерывания;

2. программная идентификация;

3. векторное прерывание.

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

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

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

· ЦП помещает на адресную шину адрес опрашиваемого модуля ввода-вывода и формирует на этой линии сигнал опроса.

· Реакция модуля зависит от того, выставлял он запрос или нет.

 

Возможен и иной вариант, когда каждый модуль ввода-вывода включает в себя адресуемый регистр состояния.

· ЦП считывает содержимое регистра состояния каждого модуля

· выясняет источник прерывания

· источник прерывания установлен

· ЦП переходит к программе обработки прерывания, соответствующей этому источнику.

Недостаток метода программной идентификации заключается в больших временных потерях.

Векторное прерывание. Наиболее эффективную процедуру идентификации источника прерывания обеспечивают аппаратные методы, в основе которых лежит идея векторного прерывания.

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

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

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

Входом в таблицу служит вектор прерывания.

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

Наиболее распространены два варианта векторной идентификации источника запроса прерывания: цепочечный опрос и арбитраж шины.

 

1. При цепочечном методе для передачи запроса прерывания модули ввода/вывода совместно используют одну общую линию.

Линия подтверждения прерывания последовательно проходит через все модули ввода-вывода.

· ЦП обнаруживает запрос прерывания

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

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

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

2. В варианте арбитража шины модуль ввода-вывода, прежде чем выставить запрос на линии запроса прерывания, должен получить право на управление шиной.

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

· Когда ЦП обнаруживает прерывание, он отвечает по линии подтверждения.

· После этого запросивший модуль помещает на шину данных свой вектор прерывания.

 




Поделиться с друзьями:


Дата добавления: 2014-01-14; Просмотров: 486; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.006 сек.