История отечественной вычислительной техники

Операционная система М-10. Система программирования

Рассмотрены общие принципы построения и возможности универсаль?ной операционной системы разделения времени вычислительной машины М-10, Обсуждены многоязыковая метасистема, лежащая в основе реали?зованной системы трансляции, и возможности использования транслятора с языка Алгол-60.

Операционная система (ОС) М-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 в Фор?тране.

Литература

  1. Беляков М. И., Гринкруг  Е. М., Кроль  Л. А.  Универсальная операционная система разделения времени для ЭВМ М-10.  — “Управляющие системы и машины”, 1980, № 1. 
  2. Беляков М. И., Натансон  Л. Г.  Метаязык, схема трансляции и синтаксический анализ в системе построения высокоэффективных трансляторов.  — “Программирование”, 1975, № 1.
  3. Беляков М. И., Натансон  Л. Г.  Об одной модификации нисходящего грамматического разбора.  — “Программирование”, 1979, № 5. 
  4. Натансон Л. Г.  Формальное описание контекстных условий языков программирования.  — “Программирование”, 1977, № 4.
  5. Беляков М. И., Натансон  Л. Г.  Теория семантического контроля, использующего синтаксическое дерево как форму промежуточного представления программы. - “Программирование”, 1975, № 2.
  6. Беляков М. И., Натансон  Л. Г.  Распараллеливание циклов и другие оптимизирующие преобразования транслируемых программ.  — “Программирование”, 1975, № 4.
  7. Носаль Г. В.  Способ динамического распределения двухуровневой памяти в системе с разделением времени.  — “Вопросы радиоэлектроники”, сер. ЭВТ, 1972, вып. 5.
  8. Носаль Г. В., Репкина  Л. К.  Автоматическое распределение двухуровневой памяти в системе с разделением времени.  — “Вопросы радиоэлектроники”, сер. ЭВТ , 1976, вып. 8. 

Статьи об ЭВМ М-10 
Сборник “Вопросы радиоэлектроники”, серия “Электронная вычислительная техника”, выпуск 9, 1980 г.
Перепечатывается с разрешения авторов.
Статья помещена в музей 09.09.2007 г.