Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы построения операционных систем.doc
Скачиваний:
50
Добавлен:
07.11.2018
Размер:
5.07 Mб
Скачать

6.3.3. Подготовка : открыть и закрыть

Детали блокирования и буферизации зависят от файла, записи которого нужно обрабатывать. Длины записей, коэффициенты блокирования и дисциплины буферизации должны отражаться в подпрограммах обработки записей. Способ организации файла также влияет на разработку этих подпрограмм. Часть необходимой информации известна во время трансляции, оставшаяся информация может указываться во время планирования и даже исполнения. Команда, используемая для этих целей во время исполнения, называется ОТКРЫТЬ.

Разработчик операционной системы должен решить, каким образом настраивать различные подпрограммы, чтобы они соответствовали характеристикам файла. К подпрограммам, требующим такой настройки, относятся: ПОЛУЧИТЬ/ПОМЕСТИТЬ, подпрограммы блокирования/деблокирования и управления буферами. Существует два способа использования информации, получаемой по команде ОТКРЫТЬ. Одним из них является предоставление интерпретирующих подпрограмм, которые используют описание файла в ка­честве параметров для настройки себя на конкретное исполнение.

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

Исполнение команды ОТКРЫТЬ устанавливает файл и соответствующие подпрограммы в такое состояние, что можно начинать работу с устройствами ввода-вывода. Эта команда предшествует использованию команд ПРОЧИТАТЬ, ЗАПИСАТЬ, ПОЛУЧИТЬ и ПОМЕСТИТЬ. Во многих системах каждый файл содержит не только записи данных, но и идентифицирующую его информацию, известную как метка файла. Обычно по команде ОТКРЫТЬ выполняются следующие действия:

1 - чтение и проверка метки входного файла или запись метки выходного файла;

2 - выделение буферов, а для ввода - еще и их первоначальное заполнение;

3 - генерация специальных подпрограмм или сбор параметров для интерпретирующих подпрограмм;

4 - выдача требования на загрузку необходимых стандартных подпрограмм управлением файлами и устройствами.

Команда ЗАКРЫТЬ завершает работу с файлом. Ее выполнение обычно ограничивается:

1 - записью частично заполненных буферов вывода;

2 - освобождением буферов;

3 - записью маркеров конца файла и, возможно, метки конца в выходные файлы;

4 - и, в некоторых случаях, возвратом носителей в исходное состояние (например, перемоткой магнитных лент).

Пары ОТКРЫТЬ/ЗАКРЫТЬ, ПРОЧИТАТЬ/ЗАПИСАТЬ и ПОЛУЧИТЬ/ПОМЕСТИТЬ определяют операции ввода-вывода на трех различных уровнях: файл, блок и логическая запись соответственно. За их правильное исполнение несет ответственность супервизор ввода-вывода, в обязанности которого входит также помещение запросов ввода-вывода в очередь и выбор путей связи для каждого затребованного устройства. Чтобы предотвратить доступ одного процесса к устройству, принадлежащему другому процессу, все запросы к устройству проходят через супервизор, который кроме этого выполняет как обработку нормальных прерываний, так и обработку ошибок. Так как большинство действий супервизора ввода-вывода зависит от специфических особенностей сотни типов устройств, то он одновременно является и самым интересным, и самым большим из основных компонент операционной системы.