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

Доступ с терминала к оперативной памяти осуществляется с помощью директивы OPEN, которая имитирует работу инженерного пульта в части доступа к ячейкам памяти. Список разделов оперативной памяти может быть получен директивой PARTITION. Начальная загрузка производится директивой BOOT. Директива SAVE позволяет сохранить ядро системы вместе с областью системных очередей, чтобы при последующей загрузке системы начать с состояния, в котором система находилась перед выдачей директивы SAVE. Директива TIME позволяет ввести (получить) системное время. Наконец, имеется несколько директив, поддерживающих коллективное пользование: они позволяют передать сообщение на другой терминал(ы), войти и выйти из системы, получить некоторые справки.

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

Интерфейс системы с программой пользователя. Осуществляется, как в ФОДОС, с помощью программных запросов в двух наборах; системных макрокоманд при использовании Макроассемблера и подпрограмм из библиотеки SYSLIB при программировании на языках высокого уровня. Обращение к ядру ОС из программных запросов реализуется с помощью команды синхронного прерывания ЕМТ с единственным номером 377, зарезервированным в ФОДОС.

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

  • ¤С — для разового использования программного запроса, аналогична стандартной форме макрокоманд в ОС ЕС. Макрорасширение включает построение DPB и выдачу самого запроса, при этом адрес DPB программе не передается. В микрокоманде может быть специфицирована программа обработки ошибочных ситуаций, возникающих при выполнении программного запроса.
  • ¤ — для многократного использования программного запроса. Макрорасширение включает не только построение DPB, но и передачу программе указателя на него (через стек). Непосредственно выдача программного запроса производится отдельной макрокомандой DIR ¤ общей для всех запросов. В этой макрокоманде может быть специфицирована программа обработки ошибок, возникающих при выполнении программного запроса.

Использование пары макрокоманд — в ¤ -форме макрокоманды DIR ¤ — представляет больше возможностей, чем использование микрокоманды в ¤ С-форме. В частности, между программными запросами DPB может быть скорректировано, если программные запросы одного типа имеют отличающиеся параметры. ¤ -форма позволяет более экономно использовать оперативную память.

¤ — для использования в реентерабельных модулях. Эта форма является оригинальной. Макрорасширение включает программу создания DPB в стеке в процессе выполнения программы и выдачу программного запроса. В целом использование ¤ S-формы приводит к более медленному по сравнению с ¤ и ¤ С-формами выполнению программы.

Запросы, как и директивы MCR, относятся только к ядру, а не к утилитам. Для обращения к утилитам необходимо использовать командные файлы. Все программные запросы могут быть отнесены к одной из следующих групп управления:

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