Иерархия функций
Рис. 3.4.
На первом уровне иерархии имя логического файла используется для определения физического размещения файла. Если файл недоступен, то выдается сообщение с просьбой установить носитель с данным файлом. Как только файл становится доступным, информация из его дескриптора запоминается в некоторой таблице для непосредственного доступа в соответствии с требованиями процесса. Повторный вход на данный уровень обычно не осуществляется.
На втором уровне в соответствии с различными спецификациями осуществляется настройка подпрограмм, которые будут выполнять команды доступа к файлу. К этим спецификациям относятся логическая организация файла (например, последовательная, прямая или инвертированная), дисциплина буферизации и признак использования блокирования. Командами этого уровня являются ОТКРЫТЬ и ЗАКРЫТЬ. Подпрограммы этого уровня обычно вызываются только в начале и в конце использования файла. Однако в некоторых ситуациях они могут вызываться несколько раз, например, при записи информации во временный файл и последующем чтении из него, когда этот файл сначала открывается для вывода, затем закрывается, далее открывается для ввода и закрывается опять. Уровень 3 можно опустить, если не используется блокирование. В противном случае он интерпретирует такие команды, как ПОЛУЧИТЬ (GET) и ПОМЕСТИТЬ (PUT), переводя логические записи в физические блоки и наоборот. Четвертый уровень присутствует во всех системах, за исключением самых простейших. Такие команды, как ПРОЧИТАТЬ (READ) и ЗАПИСАТЬ (WRITE), вызываемые либо прямо пользователем, либо подпрограммами третьего уровня, осуществляют обмен физических записей с буферами в соответствии с используемой дисциплиной. Хотя блокирование и буферизацию легче всего понять в контексте последовательных файлов, они используются также и при других логических организациях файлов. Инвертированные файлы могут требовать и того и другого, в то время как прямая организация использует только блокирование. На пятом уровне начинается процесс подготовки доступа к физическому устройству, когда пуст буфер ввода или заполнен буфер вывода. Для такой организации как прямая, требуемый физический адрес нельзя определить до того, как произойдет доступ к таблице индексов. Однако можно определить адрес этой таблицы. На данном уровне требуется знать ключ блока или положение блока в логическом файле и представление физического файла в терминах параметров устройства, таких как длина дорожки. На шестом уровне требования к внешнему устройству, устройству управления или каналу выстраиваются в очередь в порядке приоритетов. На этом этапе для каждого требования строятся канальные программы и определяются начальные ячейки оперативной памяти, к которым будет осуществляться доступ. Итак, устройство идентифицировано и построена канальная программа для его управления. Определено направление передачи данных. На следующем, седьмом уровне должен быть установлен путь связи между устройством и оперативной памятью. Обычно эта функция выполняется аппаратно. Если существует возможность выбора, то необходимо выбрать один из нескольких путей. Это также может выполняться аппаратно, но обычно выбор осуществляется управляющей программой. Определение всех ячеек оперативной памяти указано на восьмом уровне главным образом потому, что оно осуществляется аппаратными средствами ЭВМ. Фактические ячейки памяти, которые будут использоваться при обмене, могли бы быть определены даже на четвертом уровне. Наконец, на девятом уровне исполняется канальная программа и осуществляется работа устройства и передача данных. В вышеизложенной иерархии не рассматривалось выделение устройств; считалось, что устройство было выделено статически до первого упоминания файла в программе. В некоторых системах делается по-другому: когда файл упоминается впервые, то генерируется запрос на выделение устройства и оно выделяется динамически. Необходимо помнить, что логическое деление задач управления ресурсами на иерархию функций не подразумевает автоматического оформления каждой, функции в иерархию модулей. Одни системы могут полностью соответствовать приведенной выше иерархии, другие системы могут быть организованы иначе, выполняя тем не менее те же самые функции.