
- •Глава 11
- •Глава 12. Управление файлами
- •Глава 11 Управление вводом-выводом и дисковое планирование
- •11.1. Устройства ввода-вывода
- •11.2. Организация функций
- •11.3. Вопросы проектирования операционных систем
- •11.4 Буферизация операций ввода-вывода
- •11.5. Дисковое планирование
- •Выбор в соответствии с источником запроса
- •Выбор в соответствии с содержимым запроса
- •11.6. Raid
- •Буфер кэша
- •Очередь символов
- •Небуферизированный ввод-вывод
- •11.9. Ввод-вывод в windows 2000
- •Асинхронный и синхронный ввод-вывод
- •11.10. Резюме, ключевые термины и контрольные вопросы
- •Ключевые термины
- •Рекумендуемая литература
- •11.12. Задачи
- •Приложение. Дисковые устройства Магнитный диск
- •Оптическая память
11.3. Вопросы проектирования операционных систем
Цели проектирования
При проектировании средства ввода-вывода разработчики руководствуются двумя целями: достижением высокой эффективности и универсальности. Эффективность очень важна в силу того, что операции ввода-вывода часто способствуют возникновению "заторов" в компьютерной системе. Взгляните еще раз на рис. 11.1 — большинство устройств ввода-вывода работают по сравнению с основной памятью и процессором чрезвычайно медленно. Одним из способов решения этой проблемы является многозадачный режим, который позволяет процессору во время выполнения операций ввода-вывода одного процесса работать над выполнением других. Однако даже при наличии большого объема основной памяти в современных компьютерах зачастую будет возникать ситуация, когда операции ввода-вывода отстают от процессора. Для сохранения высокой загруженности процессора применяется подкачка, которая загружает в память готовые к выполнению процессы, но сама она представляет собой не что иное, как операцию ввода-вывода. Таким образом, основное внимание при создании операционной системы направлено на поиск эффективной схемы выполнения операций ввода-вывода. В силу своей важности дисковые операции ввода-вывода являются областью, заслуживающей особого внимания, и большая часть этой главы посвящена именно изучению производительности дисковых операций ввода-вывода.
Другой важной задачей является универсальность. Чтобы упростить работу с устройствами ввода-вывода и снизить вероятность возникновения ошибок, желательно иметь возможность одинакового управления различными устройствами. Это относится как к управлению устройствами ввода-вывода со стороны пользовательских процессов, так и со стороны операционной системы. Достичь реальной универсальности на практике, по сути, невозможно в силу огромного разнообразия характеристик устройств ввода-вывода, и самое большее, что можно сделать в подобной ситуации, — это применить модульный подход при разработке функций ввода-вывода. Такой подход позволяет скрыть детали устройства, так что пользовательские процессы обращаются к устройству только с высокоуровневыми вызовами: чтение и запись, открытие и закрытие, блокирование и разблокирование.
Логическая структура функций ввода-вывода
В главе 2, "Обзор операционных систем", при обсуждении структуры системы мы придавали особое значение иерархической природе современных операционных систем. Философия иерархии состоит в том, что функции операционной системы следует разделять в соответствии с их сложностью, характерной временной шкалой и уровнем абстракции. Следуя этому подходу, можно прийти к такой организации операционной системы, при которой она будет представлена серией уровней. Каждый уровень представляет связанное подмножество функций, необходимых операционной системе. Выполнение примитивных функций передается более низкому уровню; при этом более высокий уровень не знает никаких деталей выполнения поставленных задач более низким уровнем. Со своей стороны любой из уровней обеспечивает обслуживание следующего верхнего уровня. В идеале уровни нужно организовывать таким образом, чтобы изменения в одном уровне не приводили к необходимости внесения изменений в остальных уровнях.
Вообще говоря, чем ниже уровень, тем более короткой оказывается его временная шкала. Некоторые части операционной системы должны непосредственно взаимодействовать с аппаратным оборудованием компьютера, где продолжительность различных событий может оказаться на уровне нескольких микросекунд; другие части операционной системы работают с пользователем, ввод команд которым может осуществляться со скоростью один раз в несколько секунд. Использование множества уровней идеально подходит для этих условий.
Такая философия по отношению к средствам ввода-вывода определяет организацию, приведенную на рис. 11.5. Детали организации будут зависеть от типа устройства и его применения. На рисунке представлены три наиболее важные логические схемы. Естественно, что конкретная операционная система может и не соответствовать в точности этим схемам, но общие положения остаются справедливыми в любом случае, и большинство операционных систем используют ввод-вывод приблизительно таким образом.
Рассмотрим в первую очередь самый простой случай, когда локальное периферийное устройство осуществляет связь посредством потока байтов или записей (рис. 11.5,а). В этом случае уровни будут следующими.
Логический ввод-вывод. Модуль логического ввода-вывода обращается с устройством как с логическим ресурсом и не обращает внимания на детали фактического управления устройством. Логический модуль ввода-вывода работает посредником между пользовательскими процессами (предоставляя им набор высокоуровневых функций) и устройством.
Устройство ввода-вывода. Запрошенные операции и данные (буферизированные символы, записи и т.п.) конвертируются в соответствующие последовательности инструкций ввода-вывода, команды управления каналом и команды контроллера. Для более эффективного использования устройства может быть применена буферизация.
Планирование и контроль. На этом уровне происходит реальная организация очередей и планирование операций ввода-вывода, а также управление выполнением операций. Осуществляется работа с прерываниями, получение и передача информации о состоянии устройства. Это уровень программного обеспечения, которое непосредственно взаимодействует с контроллером ввода-вывода, а следовательно, с аппаратным обеспечением устройства.
Для устройств связи структура ввода-вывода (рис. 11.5,6) выглядит почти так же, как и рассмотренная выше. Принципиальное отличие состоит в том, что логический модуль ввода-вывода заменяется коммуникационной архитектурой, которая, в свою очередь, может состоять из некоторого количества уровней.
На рис. 11.5,в представлена характерная структура управления вводом-выводом во внешнее запоминающее устройство, поддерживающее файловую систему. Здесь имеется три уровня, с которыми мы не сталкивались ранее.
Управление каталогами. На этом уровне происходит преобразование символьных имен файлов в идентификаторы, указывающие на файл — непосредственно или косвенно, с использованием файлового дескриптора или индексной таблицы. Этот уровень также связан с такими пользовательскими операциями с каталогами файлов, как их добавление, удаление или реорганизация.
Рис. 11.5. Модель организации ввода-вывода
• Файловая система. Этот уровень работает с логической структурой файлов и операциями с ними, такими, как открытие, закрытие, чтение и запись. Кроме того, управление правами доступа также происходит на этом уровне.
• Физическая организация. Как адреса виртуальной памяти должны быть преобразованы в физические адреса основной памяти с учетом сегментации и страничной организации, так и логические ссылки на файлы и записи должны быть конвертированы в физические адреса конкретного внешнего запоминающего устройства с учетом физической структуры дорожек и секторов внешнего запоминающего устройства. На этом же уровне происходит общее управление распределением пространства внешней памяти и буферов основной памяти.
Учитывая значимость файловой системы, в этой и следующей главе мы остановимся на рассмотрении ее различных компонентов. В данной главе обсуждаются три нижних уровня; два верхних уровня рассматриваются в главе 12, "Управление файлами".