Раздел 5. Управление вводом/выводом. Файловая система
При изучении данного раздела Вы должны проработать следующие темы:
· задачи системы ввода/вывода; способы обмена данными;
· менеджер ввода/вывода;
· типы файловых систем; организация файлов, контроль доступа к файлам;
· обеспечение целостности файловой системы.
Для проверки усвоения материала тем Вам предстоит ответить на вопросы для самопроверки (темы 5.1, 5.2, 5.3 и 5.4).
Работа с разделом 5 завершается сдачей контрольного теста № 5, выполнением лабораторных работ № 2, 3 и 4. Каждый правильный ответ контрольного теста оценивается в три балла, следовательно, в сумме с учетом успешно выполненных лабораторных работ можно получить 30 баллов.
Задачи системы ввода/вывода. Способы обмена данными
Одной из важнейших задач ОС является обеспечение обмена данными между приложениями и внешними устройствами ВС. В современных ОС эту функцию обмена данными выполняет специализированная система ввода/вывода. Эта система обслуживает не только приложения, но и запросы ОС (например, при смене активного процесса необходимо записать на HDD контекст приостанавливаемого процесса и считать с HDD контекст активируемого процесса).
К основным задачам, которые решает система ввода/вывода, относят:
· организацию параллельной работы устройств ввода/вывода и процессора;
· согласование скоростей обмена и кэширование данных;
· разделение устройств и данных между процессами;
· обеспечение удобного интерфейса между внешними устройствами и остальной частью ОС;
· поддержка широкого спектра драйверов с возможностью подключения к системе новых драйверов;
· динамическая загрузка и выгрузка драйверов;
· поддержка файловых систем;
· поддержка операций ввода/вывода.
Различают два основных режима ввода/вывода: режим обмена с опросом готовности устройства ввода/вывода и режим обмена с прерываниями.
В первом случае выполнение операций ввода/вывода осуществляется под управлением процессора.Такой способ взаимодействия получил название polling или программируемого ввода/вывода.
Если скорости работы ЦП и ВУ примерно равны, то такая организация процесса обмена не приводит к потерям рабочего времени у обоих устройств.
Если же скорость работы ВУ ниже скорости работы ЦП, то рассмотренный способ взаимодействия резко снижает эффективность работы ЦП. Для устранения указанного недостатка используют механизм оповещения ЦП о завершении выполнения команды ввода/вывода. Такой способ получил название ввода/вывода по прерыванию. В этом случае по завершении выполнения команды контроллер выставляет ЦП сигнал требования прерывания. По этому сигналу ЦП переходит в режим обработки прерывания, определяет ВУ и выполняет необходимые действия для подачи следующей порции данных на ВУ. Такой ввод/вывод намного эффективнее, чем программируемый. Однако затраты процессорного времени здесь тоже достаточно велики, так как каждое слово, которое передается из ОП в ВУ, должно проходить через ЦП.
В современных ВС используется механизм взаимодействия ВУ и ОП, при котором ЦП вообще не участвует в операциях последовательного ввода/вывода. Такой механизм получил название прямого доступа ВУ к ОП (ПДП, или DirectMemoryAccess – DMA). Все управление обменом данными между ОП и ВУ реализуется контроллером прямого доступа. ЦП посылает запрос на передачу блока данных контроллеру DMA, а прерывание (как сигнал об окончании операции) происходит только после передачи всего блока данных.
Вопросы для самопроверки по теме 5.1
1. Какие запросы ОС может выполнять система ввода/вывода?
2. Чем отличается программируемый ввод/вывод от ввода/вывода по прерыванию?
3. Какой способ ввода/вывода позволяет освободить ЦП от управления вводом/выводом?
4. Какой из режимов ввода/вывода производительней – программируемый, по прерыванию или прямого доступа?
Менеджер ввода/вывода
В системе ввода/вывода наряду с модулями, отражающими специфику внешних устройств и образующими вертикальные подсистемы, существуют модули универсального назначения. Эти модули организуют согласованную работу всех остальных компонентов системы ввода/вывода и взаимодействие с пользовательскими процессами и другими подсистемами ОС. Эти организующие функции распределены по всем уровням системы ввода/вывода, образуя оболочку. Эта оболочка называется менеджером ввода/вывода.
Верхний слой менеджера составляют блоки обработки системных вызовов ввода/вывода, которые принимают от пользовательских процессов запросы на ввод/вывод и переадресуют их отвечающим за определенный класс устройств модулям и драйверам, а также возвращают процессам результаты операций ввода/вывода. Таким образом, этот слой поддерживает пользовательский интерфейс ввода/вывода, создавая для прикладных программистов максимум удобств при манипулировании внешними устройствами и расположенными на них данными.
Нижний слой менеджера реализует непосредственное взаимодействие с контроллерами внешних устройств, экранируя драйверы от особенностей аппаратной платформы компьютера — шины ввода/вывода, системы прерываний и т. п. Этот слой принимает от драйверов запросы на обмен данными с регистрами контроллеров в некоторой обобщенной форме с использованием независимых от шины ввода/вывода адресации и формата, а затем преобразует эти запросы в зависящий от аппаратной платформы формат. Менеджер ввода/вывода выполняет первичную обработку запросов прерываний и передает их диспетчеру прерываний.
Важной функцией менеджера ввода/вывода является создание среды для остальных компонентов подсистемы, которая бы облегчала их взаимодействие друг с другом. Эта задача решается за счет создания некоторого стандартного внутреннего интерфейса взаимодействия модулей ввода/вывода между собой, с прикладными процессами, другими модулями ядра и аппаратурой. Наличие такого интерфейса существенно облегчает включение новых драйверов и файловых систем в состав ОС. Кроме того, разработчики драйверов и других программных компонентов освобождаются от написания общих процедур, таких как буферизация данных и синхронизация нескольких модулей между собой при обмене данными. Все эти функции берет на себя менеджер ввода/вывода.
Примерами подобного менеджера являются менеджер ввода/вывода ОС Windows NT, а также среда STREAMS, существующая во многих версиях операционной системы UNIX. Менеджер ввода/вывода Windows NT организует взаимодействие между модулями с помощью пакетов запросов ввода/вывода — IRP (I/O RequestPacket). Получив запрос от процедуры системного вызова, менеджер формирует IRP и передает его нужному драйверу. Драйвер после выполнения запрошенной операции возвращает ответ в виде другого IRP менеджеру, а тот в свою очередь может при необходимости передать этот IRP другому драйверу. Менеджер позволяет драйверам задавать взаимосвязи (bindings) между собой, и на основании информации о взаимосвязях и происходит передача пакетов IRP. Кроме того, менеджер Windows NT поддерживает динамическую загрузку-выгрузку драйверов без остановки системы.
Наличие стандартного внутреннего межмодульного интерфейса повышает устойчивость и улучшает расширяемость подсистемы ввода/вывода, хотя может несколько замедлить ее работу, так как любое разделение на слои и части приводит к дополнительным операциям при взаимодействии по сравнению с монолитной организацией с прямыми передачами управления.
Вопросы для самопроверки по теме 5.2
1. Назовите основные задачи, решаемые менеджером ввода/вывода.
2. Каков состав и функции верхнего слоя менеджера ввода/вывода?
3. Каков состав и функции нижнего слоя менеджера ввода/вывода?
4. Почему улучшение расширяемости приводит к замедлению работы системы ввода/вывода?