Операционная система М-10
СИСТЕМА ПРОГРАММИРОВАНИЯ
М. И. Беляков, Е. М. Гринкруг, Л. А. Кроль, Л. Г. Натансон
Рассмотрены общие принципы построения и возможности универсальной операционной системы разделения времени вычислительной машины М-10. Обсуждены многоязыковая метасистема, лежащая в основе реализованной системы трансляции, и возможности использования транслятора с языка Алгол-60.
Конструкция шкафа ЭВМ М-10
Операционная система (ОС) М-10 является универсальной системой разделения времени, ориентированной на научные и инженерные задачи. Основной упор в разработке системы был сделан на предоставление пользователям широкого спектра сервисных возможностей при написании, трансляции и отладке программ на различных алгоритмических (языках. Система построена по модульному принципу и открыта для расширений.
Управление ресурсами и вычислениями в системе ОС М-10 распределено по трём уровням. Первый уровень – управление задачами – представлен супервизором, распределяющим физические ресурсы между задачами. Основываясь на ампаратно-реализованной системе прерываний, отображая виртуальные адреса в физические, квантуя время между задачами и распределяя устройства ввода-вывода, супервизор создает для каждой задачи совокупность виртуальных ресурсов (виртуальную машину), которыми задача оперирует. Задача создается для выполнения некоторого интерактивного или пакетного задания и является единицей потребления физических ресурсов системы.
Второй уровень управления – управление процессами – представлен монитором. Монитор играет роль супервизора для виртуальной машины. Потребителями ресурсов виртуальной машины являются внутризадачные процессы. В распоряжении монитора имеется аппарат создания, уничтожения, синхронизации и взаимной защиты информации процессов.
Множество процессов в задаче представляет собой дерево, корнем которого является служебный процесс. Этот процесс реализует третий (самый внешний по отношению к пользователю) уровень управления – управление диалогом. В функции служебного процесса входят интерпретация приказов языка общения пользователя с машиной и отработка стандартной системой реакции на ситуации прерывания в задаче. В связи с общим модульным принципом построения системы пользователь имеет возможность вызвать в качестве служебного процесса имеющийся в библиотеке модуль, тем самым имитируя для себя необходимую операционную среду.
Супервизор операционной системы обеспечивает распределение двухуровневой памяти ЭВМ М-10 и осуществляет программную поддержку блочно-страничной организации виртуальной памяти. Распределение памяти динамическое и обеспечивает обмен информацией между уровнями памяти параллельно с работой центрального процессора [7; 8].
Система допускает обмен с 96 внешними устройствами. Обмен с ними на физическом уровне может производиться синхронно со счетом программ или асинхронно. ОС М-10 включает в себя файловую систему, создающую интерфейс для обмена проблемных программ с внешними устройствами на логическом уровне. В качестве псевдоисточника обмена в этом случае может выступать обмен виртуальной памяти задачи. Допускаются символьный и двоичный способы обмена и разнообразные структуры файлов: строчные, последовательные, индексно-последовательные, библиотечные, прямые и т. д.
С целью организации мультипрограммной работы внутри задачи допускается ветвление задачи на параллельные процессы. В распоряжении пользователя для синхронизации процессов имеется аппарат событий. Процессы могут самостоятельно обрабатывать ситуации прерывания в задаче, необходимым образом построив работу с событиями. Мультипрограммная организация задачи позволяет пользователю, в частности, производить асинхронный обмен на логическом уровне.
Взаимодействие пользователя с системой обеспечивается в ОС М-10 специальными диалоговыми процессорами, являющимися библио течными модулям и. посредством диалоговых процессоров, функцион ирующих в качестве служебного процесса задачи, создается необходимая для данной работы операционная среда. Пользователь может вызывать диалоговый процессор из системной библиотеки или создавать свои собственные диалоговые процессоры, поместив их в личную библиотеку.
Наряду с операционной системой для вычислительной машины М-10 была разработана система трансляции – многоязыковая метасистема. В её состав входят трансляторы Автокода-1, ассемблера (Автокод-2), Алгола-60 и ряда других языков для специальных задач. В настоящее время разрабатывается транслятор дубненокой версии Фортрана;
Основным принципом построения системы было широкое использование метаязыков, разработанных для трансляции на ЭВМ М-10. Один из них основывается на (концепции абстрактной машины, обладающей достаточно универсальной и гибкой системой команд [2]. Метаязык с успехом использован как при создании некоторых частей операционной системы, так и при построении трансляторов. В последнем случае наиболее эффективное применение метаязыка связано, видимо, с языками не слишком высокого уровня (такими, как автокоды).
Что касается проблемно-ориентированных языков, то здесь возникла потребность в разработке более узконаправленных метаязыков, предназначенных для описания конкретных этапов трансляции. К ним относятся определенная разновидность БНФ, модифицированная для грамматического разбора на векторной машине [3], а также метаязык Рекол, ориентированный на анализ контекстных условий и условий оптимизации программ при трансляции [4]. Сейчас ведутся работы по практической реализации метаязыка, созданного для описания заключительного и наиболее ответственного этапа – генерации объектного кода. Метаязык обладает структурой, достаточно полно отражающей специфику команд М-10, и служит базой для разрабатываемого транслятора Фортрана.
Средством программирования на уровне, далеком от машинного, служит в настоящее время Алгол-60. После подключения к ОС М-10 транслятор приобрел ряд дополнителъных возможностей, что заметно расширило круг пользователей, работающих на Алголе.
Такая работа имеет ряд отличительных особенностей. В частности, имеется ряд сервисных программ, позволяющих редактировать алгольный текст, распечатывать его в удобном для пользователя виде вместе с разметкой, облегчающей последующую редакцию, и т. д.
По желанию пользователя трансляция может вестись в двух режимах: в одном случае генерируется программа, обрабатывающая 32-разрядные числа (типа real или integer ), в другом – 64-разрядные. Во время трансляции осуществляется полный и скрупулезный контроль возможных ошибок программирования. При этом моделируется динамика обращений к процедурам, что позволяет, например, проверять необходимые соответствия между фактическими и формальными параметрами (даже если сам идентификатор вызываемой процедуры – формальный параметр).
Одно из оптимизирующих преобразований при трансляции связано с распараллеливанием циклов [6]. Это позволяет исполнять некоторые циклические участки при одновременной загрузке нескольких процессоров, что существенно повышает быстродействие объектных программ. Распараллеливание – это преобразование, специфичное для векторной ЭВМ М-10; оно является чрезвычайно полезным атрибутом транслятора последовательного языка (такого, как Алгол-60). Но другие особенности системы команд М-10 (например, наличие двух арифметических устройств, на которых в одной команде можно осуществлять две различные операции) отражены транслятором недостаточно. Трудности, связанные с эффективной генерацией кода, побудили разработчиков к построению специального метаязыка, ориентированного на эту задачу.
В рабочую версию Алгола-60 введено средство для вызова внешних автокодных процедур, написанных по системным соглашениям (по аналогии с оператором LOADGO Фортрана – Дубна). Язык дополнен операторами форматного и бесформатного обмена, позволяющими выполнять практически то же, что операторы READ , WRITE в Фортране
Ячейка ЭВМ М-10
Литература
- Беляков М. И., Гринкруг Е. М., Кроль Л. А. Универсальная операционная система разделения времени для ЭВМ М-10. – «Управляющие системы и машины», 1980, № 1.
- Беляков М. И., Натансон Л. Г. Метаязык, схема трансляции и синтаксический анализ в системе построения высокоэффективных трансляторов. – «Программирование», 1975, № 1.
- Беляков М. И., Натансон Л. Г. Об одной модификации нисходящего грамматического разбора. – «Программирование», 1979, № 5.
- Натансон Л. Г. Формальное описание контекстных условий языков программирования. – «Программирование», 1977, № 4.
- Беляков М. И., Натансон Л. Г. Теория семантического контроля, использующего синтаксическое дерево как форму промежуточного представления программы. – «Программирование», 1975, № 2.
- Беляков М. И., Натансон Л. Г. Распараллеливание циклов и другие оптимизирующие преобразования транслируемых программ. – «Программирование», 1975, № 4.
- Носаль Г. В. Способ динамического распределения двухуровневой памяти в системе с разделением времени. – «Вопросы радиоэлектроники», сер. ЭВТ, 1972, вып. 5.
- Носаль Г. В., Репкина Л. К. Автоматическое распределение двухуровневой памяти в системе с разделением времени. – «Вопросы радиоэлектроники», сер. ЭВТ, 1976, вып. 8.
Статья опубликована в октябре 1979 года
Статья помещена в музей 26.12.2006 года