Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


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




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

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

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

Независимое от устройств программное обеспечение ввода-вывода предназначено для выполнения функций ввода-вывода, общих для всех устройств и предоставления единообразного интерфейса для программ уровня пользователя. В функции такого программного обеспечения входят: единообразный интерфейс для драйверов устройств; буферизация; сообщения об ошибках; захват и освобождение выделенных устройств; установление размера блока, не зависящего от устройств.

1) Единообразный интерфейс.

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

2) Буферизация.

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

3) Обработка ошибок.

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

4) Захват и освобождение выделенных устройств.

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

5) Независимый от устройств размер блока.

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

 


Поделиться:

Дата добавления: 2014-11-13; просмотров: 529; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты