Скачать презентацию Программные уровни и функции ввода-вывода Основная идея Скачать презентацию Программные уровни и функции ввода-вывода Основная идея

Лекция 15. Ввод-вывод 2.ppt

  • Количество слайдов: 31

Программные уровни и функции ввода-вывода Программные уровни и функции ввода-вывода

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

Программные уровни вводавывода • ПО ввода-вывода обычно организуется в виде четырех уровней. Программное обеспечение Программные уровни вводавывода • ПО ввода-вывода обычно организуется в виде четырех уровней. Программное обеспечение ввода-вывода уровня пользователя Устройство-независимое программное обеспечение операционной системы Драйверы устройств Обработчики прерываний Аппаратура

Многоуровневая организация подсистемы ввода-вывода Многоуровневая организация подсистемы ввода-вывода

Программные уровни вводавывода • У каждого уровня есть четко очерченная функция, которую он должен Программные уровни вводавывода • У каждого уровня есть четко очерченная функция, которую он должен выполнять, и строго определенный интерфейс с соседними уровнями.

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

Обработчики прерываний • Алгоритм: – Драйвер начинает операцию ввода-вывода. – Драйвер блокирует сам себя, Обработчики прерываний • Алгоритм: – Драйвер начинает операцию ввода-вывода. – Драйвер блокирует сам себя, выполнив - на семафоре процедуру down - на переменной состояния процедуру wait - на сообщении процедуру receive – Происходит прерывание – Обработчик прерываний начинает работу – Обработчик прерываний может разблокировать драйвер (например, выполнив на семафоре процедуру up)

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

Логическое расположение драйверов устройств Логическое расположение драйверов устройств

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

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

Функции драйверов • обработка запросов чтения или записи • инициализация устройства • управление энергопотреблением Функции драйверов • обработка запросов чтения или записи • инициализация устройства • управление энергопотреблением устройства • прогрев устройства (сканера) • включение устройства или запуска двигателя

Независимое от устройств программное обеспечение вводавывода • Функции независимого от устройств программного обеспечения вводавывода: Независимое от устройств программное обеспечение вводавывода • Функции независимого от устройств программного обеспечения вводавывода: – Единообразный интерфейс для драйверов устройств – Буферизация – Сообщения об ошибках – Захват и освобождение выделенных устройств (блокирование) – Размер блока, не зависящий от устройств

Единообразный интерфейс для драйверов устройств • Главный вопрос ОС — как сделать так, чтобы Единообразный интерфейс для драйверов устройств • Главный вопрос ОС — как сделать так, чтобы все устройства ввода-вывода и драйверы выглядели более-менее одинаково. • Этот вопрос связан с интерфейсом между драйверами устройств и остальной ОС • Кроме интерфейса, в него также входят проблемы: – именование устройств – защита устройств

Буферизация • Несколько примеров буферизации: – Не буферизованный ввод – Буферизация в пространстве пользователя. Буферизация • Несколько примеров буферизации: – Не буферизованный ввод – Буферизация в пространстве пользователя. – Буферизация в ядре с копированием в пространство пользователя – Двойная буферизация в ядре

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

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

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

Двойная буферизация в ядре • В ядре создается два буфера. • Если один буфер Двойная буферизация в ядре • В ядре создается два буфера. • Если один буфер заполнен, и пока он выгружается, символы пишутся во второй буфер.

Несколько примеров буферизации ввода Несколько примеров буферизации ввода

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

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

Ошибки ввода-вывода • Ошибки ввода-вывода: например, попытка записать в поврежденный блок диска или попытка Ошибки ввода-вывода • Ошибки ввода-вывода: например, попытка записать в поврежденный блок диска или попытка прочитать данные с выключенного сканера. • Драйвер сам решает, что ему делать. • Если драйвер не может принять решение, он передает сведения о возникшей проблеме в вышестоящие инстанции (независимому от устройств программному обеспечению).

Захват и освобождение выделенных устройств • Вариант 1. Процессы должны обращаться к системному вызову Захват и освобождение выделенных устройств • Вариант 1. Процессы должны обращаться к системному вызову open по отношению к специальным файлам для данных устройств. • Если устройство недоступно вызов open завершается неуспешно. • Системный вызов close освобождает устройство.

Захват и освобождение выделенных устройств • Вариант 2. Попытка захватить недоступное устройство вызовет блокировку Захват и освобождение выделенных устройств • Вариант 2. Попытка захватить недоступное устройство вызовет блокировку вызывающего процесса. • Блокированные процессы выстраиваются в очередь. • Когда устройство освобождается первому процессу в очереди разрешается захватить устройство и продолжить выполнение.

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

Программное обеспечение ввода-вывода пространства пользователя Программное обеспечение ввода-вывода пространства пользователя

ПО ввода-вывода пространства пользователя • Большая часть ПО ввода-вывода находится в ОС • Небольшие ПО ввода-вывода пространства пользователя • Большая часть ПО ввода-вывода находится в ОС • Небольшие части ПО ввода-вывода (библиотеки, присоединенные к программам пользователя и т. д. ) работают вне ядра.

ПО ввода-вывода пространства пользователя • библиотечные процедуры – ввод-вывод (write, …) – форматный ввод-вывод ПО ввода-вывода пространства пользователя • библиотечные процедуры – ввод-вывод (write, …) – форматный ввод-вывод (printf, scanf ) • спулинг (spooling — подкачка, предварительное накопление данных)

Уровни и основные функции системы ввода-вывода Уровни и основные функции системы ввода-вывода