Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Принципы построения обработчиков прерываний ввода-вывода




Уровни программного обеспечения ввода-вывода. Абстрагирования ввода вывода. Понятие HAL.

Принципы создания программного обеспечения вводом-выводом. Асинхронная, синхронный способ передачи данных.

Основные задачи, которые должны решать программное обеспечение ввода-вывода:

1. Независимость от устройств. Пример: Программа читающая данные из файла не должна задумываться с чего она читает.

2. Единообразное именование. Пример. Имя файла или устройства не должна отмечаться.

3. Обработка ошибок. Пример ошибки могут быть отслежены на уровне в контроллере, в драйверах и т.д.

4. Перенос данных

 Синхронный

 Асинхронный (Процессор запускает перенос данных и переключается на др. задачи до прерывания)

5. Буферизация

6. Проблема выделенных (принтер) и не выделенных (диск)

Принтер должен предоставляться только одному пользователю, а диск многим. ОС должна решать все возникающие вопросы.

Для решения поставленных проблем нужно разделить программное обеспечение ввода-вывода на 4 слоя:

  1. Обработка прерываний. Прерывания должны быть скрыты как можно глубже в ОС, чтобы как можно меньшая часть ОС имела с ними дело. Наилучший способ составить в разрешении процессу, создавшему операцию ввода-выводу блокировать себя до завершения операции и наступления прерываний.
  2. Драйверы устройств. Весь зависимый от устройств код помещается в драйвер устройств. Каждый драйвер управляет устройствами одного вида или может быть одного класса. В ОС только драйвер устройства знает о конкретных особенностях какого-либо устройства. Драйверы устройства принимают запрос от устройств программного слоя и решает как его выполнить
  3. Независимая от устройств ОС.
  • Типичными функциями для независимого от устройств слоя являются:
  • обеспечение общего интерфейса к драйверам устройств,
  • именование устройств,
  • защита устройств,
  • обеспечение независимого размера блока,
  • буферизация,
  • распределение памяти на блок-ориентированных устройствах,
  • распределение и освобождение выделенных устройств,
  • уведомление об ошибках.
  1. Пользовательский слой программного обеспечения

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

 

После того как устройство ввода-вывода начало работу, процессор переключается на другие задачи. Чтобы сигнализировать процессору об окончании работы, устройство инициализирует прерывание, выставляя сигнал на выделенную устройству линию шины (а не выделенный провод). Когда происходит прерывание, то все необходимое для его обработки делает процедура - обработчик прерывания. Затем она может разблокировать запустивший ее драйвер. В ряде случаев она просто выполяет процедуру up на семафоре. В других случаях она вызывает процедуру signal для переменной условия в мониторе. Во всех остальных случаях она посылает заблокированному драйверу сообщение.

Кроме этого программное обеспечение выполняет следующие шаги.

  1. Сохранить все регистры(включая PSW) которые еще не были сохранены аппаратурой, вызвавшей прерывание.
  2. Установить контекст для процедуры обработки прерывания. Здесь может быть задействована установка NLB, MMU и таблицы страниц.
  3. 3Установить с тек для процедуры обработки прерывания.
  4. Послать подтверждение контроллеру прерываний. В отсутствие централизованного контроллера прерываний разрешить прерывания.
  5. Скопировать регистры из того места, где они были сохранены в таблицу процессов.
  6. Запустить процедуру обработки прерывания, которая извлечет информацию из регистров контроллера устройства, вызвавшего прерывание.
  7. Выбрать следующий запускаемый процесс. Если прерывание привело к готовности какаго-то ранеее заблокированного процесса, имеющего высокий уровень приоритета, то теперь может быть выбран запуск именно этого процесса.
  8. Установить контекст MMU для следующего запускаемого процесса. Могут потребоваться и некоторые установки TLB.
  9. Загрузить регистры нового процесса, включая ег PSW.
  10. Запустить выполнение нового процесса.

 




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


Дата добавления: 2015-06-25; Просмотров: 565; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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