КАТЕГОРИИ: Архитектура-(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; Просмотров: 487; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |