Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Ввод – вывод и файловая система
Основными компонентами подсистемы ввода – вывода являются драйверы, управляющие внешними устройствами, и файловые системы. К подсистеме ввода – вывода можно также отнести и диспетчер прерываний; правда это весьма условно, так как он обслуживает не только модули подсистемы ввода – вывода но также планировщик или диспетчер потоков. Файловую систему целесообразно рассматривать совместно с другими компонентами ввода – вывода по двум причинам: · файловая система активно использует ввод – вывод; · модель файла может быть в основе большинства механизмов доступа к устройствам ввода – вывода.
Задачи ОС по управлению файлами и устройствами Подсистема ввода-вывода мультипрограммной ОС решает следующие основные задачи: · организация параллельной работы устройств ввода – вывода и процессора; · согласование скоростей обмена и кэширование данных; · разделение устройств и данных между процессами; · обеспечение удобного логического интерфейса между устройствами и остальной частью системы; · поддержка широкого спектра драйверов с возможностью простого включения в систему нового драйвера; · динамическая загрузка и выгрузка драйверов; · поддержка нескольких файловых систем; · поддержка синхронных и асинхронных операций ввода – вывода.
Организация параллельной работы устройств ввода – вывода и процессора. Каждое устройство ввода – вывода – снабжено блоком управления – контроллером. Контроллер взаимодействует с драйвером – системным программным модулем, управляющим данным устройством. Контроллер периодически принимает от драйвера выводимую на устройство информацию и команды управления, которые определяют, что делать с этой Устройство ввода – вывода работает под управлением контроллера в интервалах между выдачей команд независимо от ОС. От подсистем ввода – вывода требуется спланировать в реальном масштабе времени запуск и приостановку драйверов, обеспечив приемлемое время реакции каждого драйвера на независимые события контролера. Для этого все драйверы распределяются по нескольким приоритетным уровням в соответствии с требованиями по времени реакции и временными затратами процессорного времени. Для реализации этого процесса обычно используется диспетчер прерываний ОС.
Согласование скоростей обмена и кэширования данных При обмене данными возникает задача согласования скоростей. Оно достигается за счет буферизации данных в ОП и синхронизации доступа процессов к буферу. Но буферизация только на основе ОП в подсистеме ввода – вывода оказывается недостаточной – разница между скоростью обмена с ОП и скоростью работы внешнего устройства оказывается слишком большой. С другой стороны, при больших объемах ввода – вывода ОП просто может не хватить. Для таких случаев в качестве буфера используется (spool - шпулька). Типичный пример – вывод на принтер. Печать документа в несколько десятков мегабайт – не редкость. Другое решение проблемы – большая буферная память в контроллерах внешних устройств. Пример – контроллеры графических дисплеев. Их ОП соизмерима с ОП процессора.
Распределение устройств и данных между процессами Устройства ввода – вывода могут предоставляться процессам, как в монопольном, так и в разделяемом режимах. ОС должна обеспечивать контроль доступа теми же способами, что и при доступе процессов к другим ресурсам ВС. ОС может контролировать доступ не только к устройству в целом, но и к отдельным порциям данных. Например, при выводе на графический дисплей – информация по отдельным окнам экрана. Потому для организации совместного доступа к частям устройства или частям данных непременным условием является задание режима совместного использования устройствам или данных в целом. ОС предоставляет устройства, отслеживая процедуры захвата и освобождения использования устройств, оптимизируя последовательность операций ввода – вывода для различных процессов в целях повышения общей производительности, если это возможно. Например, при обмене данными нескольких процессов с дисками можно упорядочить последовательность операций так
Обеспечение удобного логического интерфейса между устройствами и остальной частью системы Все современные ОС поддерживают в качестве основы такого интерфейса файловую модель периферийных устройств. При таком подходе любое устройство выглядит как набор байт, с которыми можно работать с помощью унифицированных системных вызовов (например, read, write), задавая имя файла – устройства и смещение от начала последовательности байт. Привлекательность такой модели состоит в ее простоте и унифицированности для устройств различного типа. Иногда для специальных применений этот интерфейс используется как базовый и требует дополнительной доработки. Например, при программировании операций сетевого обмена или вводе на дисплей графической информации.
Поддержка широкого спектра драйверов и простота включения нового драйвера в систему Наличие разнообразных драйверов для всех типов внешних устройств является важной характеристикой ОС. Например, такая прекрасная во многих отношениях ОС как ОС/2 была вытеснена ОС Windows благодаря богатству драйверов. Поэтому открытость интерфейса драйверов, т.е. доступность его описания для независимых разработчиков ПО – необходимое Драйвер взаимодействует, с одной стороны с модулями ядра ОП (подсистемой ввода – вывода, системными вызовами, управления процессами и памятью), с другой стороны, с контролерами внешних устройств. Поэтому существует 2 типа интерфейсов: · драйвер – ядро; · драйвер – устройство. Интерфейс драйвер – ядро должен быть стандартизирован в любом случае. Интерфейс драйвер – устройство имеет смысл стандартизировать тогда, когда подсистема ввода – вывода не разрешает драйверу непосредственно взаимодейсвовать с аппаратурой. Экранирование драйвера от аппаратуры является весьма полезной функцией, так как драйвер становится независимым от аппаратной платформы. Для поддержки процесса разработки драйверов к ОС обычно выпускается пакет ДДК (Diver Development Kit), представляющий собой инструментарий – библиотеки, компиляторы и отладчики.
Динамическая загрузка и выгрузка драйверов Включение драйвера в состав модулей работающей ОС представляет собой самостоятельную проблему. Так как набор потенциально поддерживаемых данной ОС периферийных устройств всегда шире конкретной системе, то очень ценным свойством ОС является возможность динамически загружать в ОП требуемый драйвер (без останова ОС) и выгружать его после того, как потребность в поддержке устройства миновала. Это может существенно экономить системную область памяти. Альтернативой динамической загрузке драйверов при изменениях текущей конфигурации внешних устройств является повторная компиляция кода ядра с требуемым набором драйверов, что создает между всеми компонентами ядра статические связи вместо динамических. Изменения в процессе работы ОС невозможны.
Поддержка нескольких файловых систем Диски – особый род периферийных устройств, так как на них хранится большая часть пользовательских и системных данных. Эти данные организуются в файловые сисемы, свойства которых во многом определяют свойства ОС (отказоустойчивость, быстродействие, макс. объем хранимых данных). Хорошая файловая система обычно «кочует» из одной ОС в другую. Так файловая система FAT первоначально была разработана для MS-DOS, затем перекочевала в OS/2 и MS Windows (3.1). Важно, чтобы архитектура подсистемы ввода- вывода позволяла бы достаточно просто включать в ее состав новые типы файловых систем без необходимости переписывания кода. Для этого в ОС предусматривается специальный слой ПО, который отвечает за решение данной задачи. Например, слой VFS (Virtual File System) в версиях UNIX.
Популярное:
|
Последнее изменение этой страницы: 2016-07-13; Просмотров: 2088; Нарушение авторского права страницы