Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
У. Столлингс ГЛАВА 11 Операции в-в и файлы.doc
Скачиваний:
52
Добавлен:
11.05.2015
Размер:
549.89 Кб
Скачать

11.3. Вопросы проектирования операционных систем

Цели проектирования

При проектировании средства ввода-вывода разработчики руководствуют­ся двумя целями: достижением высокой эффективности и универсальности. Эффективность очень важна в силу того, что операции ввода-вывода часто спо­собствуют возникновению "заторов" в компьютерной системе. Взгляните еще раз на рис. 11.1 — большинство устройств ввода-вывода работают по сравне­нию с основной памятью и процессором чрезвычайно медленно. Одним из спо­собов решения этой проблемы является многозадачный режим, который по­зволяет процессору во время выполнения операций ввода-вывода одного про­цесса работать над выполнением других. Однако даже при наличии большого объема основной памяти в современных компьютерах зачастую будет возни­кать ситуация, когда операции ввода-вывода отстают от процессора. Для со­хранения высокой загруженности процессора применяется подкачка, которая загружает в память готовые к выполнению процессы, но сама она представля­ет собой не что иное, как операцию ввода-вывода. Таким образом, основное внимание при создании операционной системы направлено на поиск эффектив­ной схемы выполнения операций ввода-вывода. В силу своей важности диско­вые операции ввода-вывода являются областью, заслуживающей особого вни­мания, и большая часть этой главы посвящена именно изучению производи­тельности дисковых операций ввода-вывода.

Другой важной задачей является универсальность. Чтобы упростить рабо­ту с устройствами ввода-вывода и снизить вероятность возникновения ошибок, желательно иметь возможность одинакового управления различными устрой­ствами. Это относится как к управлению устройствами ввода-вывода со сторо­ны пользовательских процессов, так и со стороны операционной системы. Дос­тичь реальной универсальности на практике, по сути, невозможно в силу ог­ромного разнообразия характеристик устройств ввода-вывода, и самое большее, что можно сделать в подобной ситуации, — это применить модуль­ный подход при разработке функций ввода-вывода. Такой подход позволяет скрыть детали устройства, так что пользовательские процессы обращаются к устройству только с высокоуровневыми вызовами: чтение и запись, открытие и закрытие, блокирование и разблокирование.

Логическая структура функций ввода-вывода

В главе 2, "Обзор операционных систем", при обсуждении структуры сис­темы мы придавали особое значение иерархической природе современных опе­рационных систем. Философия иерархии состоит в том, что функции операци­онной системы следует разделять в соответствии с их сложностью, характер­ной временной шкалой и уровнем абстракции. Следуя этому подходу, можно прийти к такой организации операционной системы, при которой она будет представлена серией уровней. Каждый уровень представляет связанное под­множество функций, необходимых операционной системе. Выполнение прими­тивных функций передается более низкому уровню; при этом более высокий уровень не знает никаких деталей выполнения поставленных задач более низ­ким уровнем. Со своей стороны любой из уровней обеспечивает обслуживание следующего верхнего уровня. В идеале уровни нужно организовывать таким образом, чтобы изменения в одном уровне не приводили к необходимости вне­сения изменений в остальных уровнях.

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

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

Рассмотрим в первую очередь самый простой случай, когда локальное периферийное устройство осуществляет связь посредством потока байтов или запи­сей (рис. 11.5,а). В этом случае уровни будут следующими.

  • Логический ввод-вывод. Модуль логического ввода-вывода обращается с устройством как с логическим ресурсом и не обращает внимания на детали фактического управления устройством. Логический модуль ввода-вывода работает посредником между пользовательскими процессами (предоставляя им набор высокоуровневых функций) и устройством.

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

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

Для устройств связи структура ввода-вывода (рис. 11.5,6) выглядит почти так же, как и рассмотренная выше. Принципиальное отличие состоит в том, что логический модуль ввода-вывода заменяется коммуникационной архитектурой, которая, в свою очередь, может состоять из некоторого количества уровней.

На рис. 11.5,в представлена характерная структура управления вводом-выводом во внешнее запоминающее устройство, поддерживающее файловую сис­тему. Здесь имеется три уровня, с которыми мы не сталкивались ранее.

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

Рис. 11.5. Модель организации ввода-вывода

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

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

Учитывая значимость файловой системы, в этой и следующей главе мы ос­тановимся на рассмотрении ее различных компонентов. В данной главе обсуж­даются три нижних уровня; два верхних уровня рассматриваются в главе 12, "Управление файлами".