Многотерминальная дисковая операционная система. Часть 6.

В отличие от ФОДОС, файлы во внешней памяти прямого доступа могут храниться вразброс, не обязательно должны быть физически непрерывны. Поэтому в справочнике хранится имя файла и указателя карты файла. В карте указано размещение файла на устройстве (указаны экстенты и их длины). Такое управление внешней памятью существенно уменьшает ее фрагментацию.

Как и в ФОДОС, независимость программы от устройств и конкретных файлов, с которыми она работает, достигается введением пронумерованных логических каналов (потоков обмена информацией между программой и внешним миром). Каждая задача имеет свое пространство номеров логических каналов, и присваивание файлу (или устройству) номера логического канала производится с помощью программного запроса из самой же задачи. Это одно из отличий рассматриваемой системы от систем пакетной обработки, где такое присваивание осуществляется на уровне языка управления заданиями.

Ядро системы, как и в ФОДОС, обеспечивает доступ к файлу на драйверном уровне, т. е. к виртуальному (номер блока отсчитывается от начала файла) или логическому (номер отсчитывается от начала устройства) блоку. Размер блока также сохранен — 512 байт. Однако в систему включены два пакета подпрограмм методов доступа. Один (FCS) обеспечивает последовательный доступ ко всем устройствам и прямой к файлам, которые размещены на устройствах прямого доступа, и состоят из записей постоянной
длины. Второй пакет (RMS) обеспечивает, кроме этого, прямой доступ к записям переменной длины и индексным файлам. Прямой доступ к записям переменной длины обеспечивается за счет объединения дескрипторов всех записей в начале файла. Дескрипторы имеют постоянную длину, а также содержат указатели на соответствующие записи.

Индексные файлы основаны на современных идеях размещения информации и доступа к ней по признакам-ключам. Каждая запись может иметь по нескольку признаков (до 255), и дескрипторы записей упорядочиваются по каждому. Таким образом, по любому признаку может быть осуществлен как прямой, так и последовательный доступ. Возможен также поиск по части признака-ключа, это является поддержкой группового поиска в иерархических моделях данных. Так как сами записи при размещении не упорядочиваются ни по каким признакам, отпадает необходимость в областях переполнения, перекомпоновках и т. д. Сами записи могут иметь произвольную длину. Индексные файлы удобно использовать как физический уровень систем управления базами данных (инвертированные файлы).

Интерфейс системы с пользователем. Осуществляется с помощью директив MCR консольного монитора (интерпретатора директив), В отличие от набора директив KMON ФОДОС, директивы MCR не охватывают функций, выполняемых утилитами и системными программами, в частности обработку файлов и манипуляции с ними. Эти функции выполняются с помощью вызовов соответствующей утилиты, причем каждый пользователь может вызвать утилиту, которая используется в настоящий момент другим пользователем. При этом в оперативную память загружается копия этой утилиты, и образуется новая задача, в имя которой кроме имени утилиты входит имя терминала, с которого она запущена.

Вызов утилиты, находящейся в пассивном состоянии (т. е. объявленной в системе), может быть осуществлен по имени без специальных директив MCR; в противном случае необходимо воспользоваться директивой перевода задачи в пассивное состояние INSTALL либо директивой запуска RUN. Если командная строка утилиты приведена непосредственно в директиве, то после ее выполнения управление возвращается интерпретатору MCR; если в директиве командная строка отсутствует, утилита присоединяется к терминалу, последовательно выполняя вводимые с него командные строки. Возврат к MCR осуществляется нажатием клавиши СКЛ-С.

Практически все директивы MCR являются запросами к ядру системы (EXECUTIVE). Большинство директив относится к управлению выполнением задач. С помощью директив этой группы можно перевести задачу из состояния хранения в пассивное состояние, т. е. объявить ее в системе и, наоборот, перевести задачу из пассивного состояния в состояние готовности; отменить запуск, если еще не истек заданный для пуска интервал; прекратить выполнение задачи — перевести ее в пассивное состояние, можно изменить ее приоритет; объявить задачу резидентной в оперативной памяти и наоборот; запустить приостановленную задачу; получить различные справки об установленных в системе задачах. Значительная часть этих директив является привилегированной — они могут быть введены только с привилегированного терминала (или привилегированным пользователем).

Директивы, связанные с управлением устройствами, позволяют: закрепить устройство за пользователем; связать устройство с логическим номером, отменить или изменить эту связь; получить список логических каналов; приписать очередь задач к одному устройству другому; получить статическую (об объявленных в системе типах устройств) и динамическую (об очередях) информацию; изменить некоторые общесистемные характеристики и характеристики отдельных устройств (в основном терминалов).

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