Операционная система ЭВМ М-10
А. Ю. Карасик
Описана универсальная операционная система широкого назначения для многомашинных вычислительных комплексов на основе ЭВМ М-10. Приведен ряд функциональных и технологических требований, которым должны отвечать операционные системы подобного типа, в том числе и требование максимального использования всех видов параллелизма машин. Описаны принципы структурной организации системы и технологические принципы ее проектирования, дающие возможность реализовать предъявленные требования.
Обозначение основных требований к операционной системе. Операционная система (ОС) ЭВМ М-1О является операционной системой вычислительных комплексов (ВК), построенных на базе одной либо нескольких машин М-10.
Основными функциями вычислительных комплексов являются управление и обеспечение функционирования сложных автоматизированных систем, а также обработка в реальном масштабе времени больших потоков информации этих систем.
Большинство функциональных требований, предъявляемых к ВК в составе систем, идентично, что дало возможность разработать универсальную ОС широкого применения.
Основным требованием является обеспечение прохождения в реальном масштабе времени большого класса функциональных программ (называемых в дальнейшем основной задачей), т. с. организация доступа и взаимодействия основной задачи со всеми ресурсами комплекса.
Такими ресурсами являются:
- время центрального процессора;
- двухуровневая память (оперативная и большая);
- внешние сигналы и система прерывания;
- стандартные абоненты машины (ЛЦПУ, матпульты, устройства ввода-вывода с перфокарт);
- абоненты реального времени (спецабоненты);
- внешние запоминающие устройства;
- дисплей;
- средства обмена информацией между линейками комплекса;
- пульты управления работой комплекса.
Основная задача (ОЗ) представляет собой сложную программную систему, разбиваемую на большое число подзадач, каждая из которых выполняет одну либо несколько функций по управлению или обработке информации. С точки зрения функционирования всей системы в целом, отдельные задачи имеют различный приоритет исполнения и требуют различных ресурсов комплекса. Отсюда следует одно важное требование к операционной системе: обеспечение мультипрограммного режима прохождения основной задачи (режима дежурства). Для быстрого и эффективного ввода в эксплуатацию программ основной задачи ОС комплекса должна иметь также режим разделения времени, позволяющий вести одновременно со многих терминалов отладку частных программ. Требования к ОС в части режима разделения времени традиционны.
Важным требованием является возможность совмещения режимов реального времени и разделения времени. Оно диктуется необходимостью более полного использования возможностей машины в отсутствие экстремальных нагрузок, а также совершенствования программ ОЗ без прекращения функционирования системы.
Назначение ВК, обусловливающее его длительную бесперебойную эксплуатацию при работе основной задачи, диктует ряд функциональных требований:
- устранение последствий случайных сбоев машины (восстановление основной задачи после случайных сбоев);
- автоматическое резервирование линеек при отказах головной линейки;
- управление работой комплекса (назначение и снятие режимов работы комплекса и режимов основной задачи);
- отображение и регистрация состояния функционирования комплекса и основной задачи (ведение аппаратного журнала комплекса).
Помимо функциональных требований, к ОС ВК М-10 предъявляется также ряд требований, определяющих принципы построения, структуру программ и параметры ОС. К таким требованиям относятся:
- ограничительный объем памяти, занимаемый программами ядра ОС;
- малое время реакции па сигналы вызова ОС и запросы основной задачи;
- поддержание на высоком уровне производительности вычислительного комплекса благодаря использованию в программах ОС всех возможностей параллельной обработки информации машин М-10;
- обеспечение надежностных характеристик машин и живучести вычислительного комплекса, определение степени работоспособности аппаратуры, классификация и набор статистики по сбоям и отказам;
- удобство эксплуатации и надежности функционирования программ ОС, тестирование работы отдельных подсистем и ОС в целом; самодокументирование;
- возможность реконфигурации ОС в зависимости от структуры и ресурсов вычислительного комплекса;
- адаптация ресурсов и сервисных возможностей, предоставляемых пользователям ОС, к динамически нагрузкам и требованиям основной задачи;
- простота наращивания новых функций и возможность модернизации отдельных подсистем без прекращения функционирования системы в целом.
Основные технологические принципы проектирования ОС . Разработка ОС, удовлетворяющая совокупности предъявляемых требований, потребовала использования современных принципов построения сложных программных систем, модернизации этих принципов применительно к специфике многопроцессорной вычислительной машины и разработки новых принципов.
Важнейшим из них является реляционный принцип построения ОС, основанный на формализации основных понятий-примитивов ОС и установлении функциональных, а также других видов отношений (реляций) между примитивами. В частности, примитивами являются сигналы, процессы, задачи, абоненты, запросы, заявки, блоки и другие понятия.
Множество примитивов одного типа снабжается стандартным атрибутом- дескриптором примитива, представляющим собой по структуре запись, поля которой являются либо описателями элементов исходного множества, либо осуществляют его отображение в другие множества примитивов. Отображения реализуются с помощью указателей, которыми являются индексы, имена и маски. Причем, если два первых традиционных типа указателей позволяют записать лишь функциональные зависимости между примитивами, то с помощью указателей типа масок каждому из элементов исходного множества может быть поставлено в соответствие подмножество элементов другого или того же множества, находящихся с ним в каком-либо бинарном отношении. Это позволяет компактно и однотипно изобразить сложные взаимосвязи между примитивами, построить классы операторов для обработки примитивов [3] и использовать для записи алгоритмов ОС язык высокого уровня, являющийся модификацией языка Паскаль [1].
Формализация алгоритмов дала возможность использовать для программирования ОС специально разработанный операторный язык Опема [4]. В качестве простейших типов данных языка выступают такие групповые да иные, как массивы, запросы, множества, тексты, таблицы, комбинации исходных типов (например, множество из массивов, массивов из записей и др.). Адресное пространство Опемы образуют тесно базированные смещения, индексы и маски. Доступ по маскам позволяет выбрать из структуры данных некоторое подмножество позиционно отмеченных элементов, в связи с чем маски могут рассматриваться как обобщение обычного понятия индексов.
Единицы действия Опемы — операторы, представляющие собой программы, организованные по стандартным соглашениям. Операторы работают с групповыми типами данных, широко используют представление о групповых и интегральных (редуцирующих) операциях [3] и максимально вбирают в себя возможности синхронного параллелизма машины М-10.
Программа на языке Опема представляет собой выполняемые соответствии с правилами структурного программирования [5, 6] сборки операторов, которые называются модулями. Каждый из модулей имеет свое системное имя, являющееся его идентификатором при вызовах. Вызовы могут быть непосредственные, циклические и вызовы по выполнению условий; при вызовах модулей допустима рекурсия.
Наборы модулей образуют пакет. Оператор управления позволяют запускать различные последовательности модулей из пакета и допускают как статическое, так и динамическое (программное) изменение запускаемых последовательностей. Этим достигается гибкость управления, дающая возможность ОС изменять конфигурацию и перестраивать свои функции в зависимости от структуры и ресурсов комплекса, а также адаптироваться к динамически изменяемым условиям эксплуатации и нагрузкам.
Операторный язык позволил реализовать ряд других требований к ОС. В частности, в Опеме определены три уровня глобальности полей (поле глобальных переменных, рабочее поле пакета, рабочее поле модуля) и приняты меры, обеспечивающие сокрытие рабочих полей различных модулей и пакетов друг от друга. Эти меры, а также модульность, иерархичность и перемещаемость программы на Опеме позволили обеспечить такие требования к ОС, как удобство эксплуатации, надежность функционирования, простота наращивания новых функций и др.
Для удобства программирования и простоты отладки программ на Опеме был разработан технологический язык Автокод-М. Автокод-М является языком ассемблерного типа и работает с именами, метками, комментариями, а также символьными, десятичными и другими типами констант. Транслятор с Автокода-М дает возможность получать объектные программы как на машинном языке (программы операторов Опема), так и непосредственно на языке Опема.
Структура ядра операционной системы . Большинство функций, выполняемых операционной системой, прямо либо косвенно связано с организацией доступа пользователей ОС к ресурсам комплекса и динамическим распределением ресурсов между пользователями.
Непосредственными потребителями ресурсов системы являются не только пользователи, но и подсистемы (программы) самой ОС, которой они необходимы для поддержания “жизнеспособности” и для обеспечения функционирования комплекса.
Для упрощения и стандартизации процесса распределения ресурсов, сокрытия разнорядности требований непосредственных потребителей и исключения машинной зависимости физических ресурсов алгоритмами ОС вводятся в рассмотрение универсальные потребители ресурсов, называемые задачами, и логические ресурсы (процессы как ресурс времени, внутренние номера блоков как ресурсы памяти, абоненты как ресурсы внешних устройств и др.). В этих алгоритмах вместо реальных потребителей ресурсов выступают закрепленные за ними задачи, между которыми производится распределение логических ресурсов. Физические ресурсы в непосредственном распределении не участвуют, а выделяются по мере освобождения тем логическим ресурсам, которые распределены задачам.
В зависимости от типа потребителя задачи делятся на системные и пользовательские. Системные задачи отражают потребности в ресурсах, необходимых для функционирования программ операционной системы.
Единственной программой ОС, которая не представлена своей задачей, является диспетчер ОС. Основными функциями диспетчера являются управление и запуск процессов, т. е. выделение процесса физического ресурса времени. Система имеет дело с фиксированным числом процессов, каждый из которых обладает строго установленным приоритетом запуска. С точки зрения взаимодействия с задачами, процессы делятся на 3 группы.
Первая группа включает системные процессы СП0, СП1, СП2. Эти процессы распределяются диспетчером ОС между задачами, являющимися реакциями системы на сигналы вызова. Для задач реакций на сигналы третьего высшего приоритета — отводится процесс СП0, для задач — сигналов второго приоритета — СП1, первого — СП2.
Вторую группу образуют процессы, каждый из которых закреплен за одной задачей. Такими процессами являются процесс основной задачи и системные процессы ДИР (диспетчер интерактивного режима), ДВП (диспетчер внешней памяти), ФОН (фоновая задача).
ДИР выполняет функции по организации режима разделения времени, дешифровке и исполнению заявок пользователей и распределению абонентов между задачами.
ДВП обеспечивает доступ к накопителям на лентах и дисках, а также распределение внешней памяти между задачами.
ФОН является тестом операционной системы и поддерживает ее активность в отсутствие остальных задач.
Третья группа состоит из процессов пользователей, которые динамически распределяются в режиме разделения времени между большим числом пользовательских задач.
Процессы могут находиться в одном из четырех состояний: “Активен”, “Очередь”, “Жду ресурса”, “Пассивен”.
В состоянии “Активен” процессу представлено время центрального процессора.
В состоянии “Очередь” процесс выделен некоторой задачей, которая имеет все ресурсы, за исключением времени центрального процессора. Процессы, находящиеся в этом состоянии, образуют очередь готовых к запуску процессов.
В состоянии “Жду ресурса” процесс распределен задаче, однако не находится в очереди, так как ожидает ресурса или выполнения каких-либо других условий для постановки в очередь.
В состоянии “Пассивен” процесс не предоставлен никакой задаче. Управление процессами производится следующим образом. Активен фоновый процесс, задача которого работает на резидентной памяти и не требует, кроме времени, других ресурсов. Работа фонового процесса прерывается сигналами прерывания, по которым управление передается диспетчеру ОС. Диспетчер ОС снимает фотографию состояния регистров прерванного процесса и инициирует задачу реакции, которой предоставляется соответствующий системный процесс. Система прерывания настраивается таким образом, чтобы следующее прерывание могло произойти только от сигнала более высокого приоритета по сравнению с предыдущим. Если прерывание происходит, то диспетчер инициирует еще одну задачу, запускает ее на более приоритетном процессе, а прерванный процесс ставит в очередь.
При работе системных процессов возможны следующие ситуации:
- Задача активного процесса доходит до конца и возвращает управление диспетчеру. Диспетчер переводит процесс в состояние “Пассивен” , выбирает из очереди готовых к запуску процессов самый приоритетный, восстанавливает его фотографию и активизирует.
- Задача активного процесса обнаруживает потребность в ресурсах, без которых дальнейшее ее прохождение невозможно, и вызывает диспетчера соответствующей заявкой. Процесс переходит в состояние “Жду ресурса”, и активизируется наиболее приоритетный процесс из очереди.
- Задача активного процесса определяет выполнение условий инициализации процессов, находящихся в состоянии “Жду ресурса”, и переводит их в состояние “Очередь”.
Активностью процесса ОЗ управляет задача “Запуск ОЗ” — реакция на соответствующий внешний сигнал. При работе ОЗ от нее могут поступать макрокоманды на подкачку памяти либо окончание работы с ожиданием периодического запуска. В этих случаях ОЗ переводится на общей схеме в состояние “Жду ресурса”.
Описанный механизм управления процессами обладает достаточной гибкостью, дает возможность динамической реконфигурации ОС и позволяет легко реализовать синхронность работы центрального процессора и каналов обмена.
Распределение пользовательских процессов между задачами пользователей производится подсистемой управления задачами (УЗ). Непременным условием предоставления процесса задаче пользователя является наличие в оперативной памяти заказанного задачей текущего сегмента ее математической памяти и копии этого сегмента в большой памяти. В связи с этим в функции УЗ входит организация асинхронной работы аппарата обмена между двумя уровнями памяти с целью подкачки в оперативную память текущих сегментов и их копирования.
В режиме дежурства основном режиме работы комплекса — статус ОЗ закрепляется за одной задачей. При этом доступ к операционной системе возможен только с того терминала, который предоставлен этой задаче. (Каждой задаче — пользовательской либо системной — выделяется один терминал, при этом к одному терминалу может быть прикреплено несколько задач.)
В режиме разделения времени статус ОЗ предоставляется по заявкам терминалов; пользователи могут конкурировать за этот статус и получать его в порядке поступления от них заявок. Этим достигается возможность производства отладки программ реального времени в режиме разделения времени.
В модифицированном режиме дежурства статус ОЗ закрепляется за задачей одного терминала, а с других терминалов может вестись отладка в режиме разделения времени, но без предоставления статуса ОЗ.
Кроме диспетчера и подсистемы УЗ, ядро операционной системы включает в себя подсистему взаимодействия задач с абонентами. Эта подсистема представлена задачами процессов ДИР и ДВП, а также задачами “Канал”, “Спецканал”, обеспечивающими физический уровень обмена и работающими на процессе СП2.
Физический обмен с различными абонентами производится по-разному. Спецабоненты, СВЗУ и абоненты межмашинного обмена производят ввод вывод информации в математическую память пользователя и занимают время центрального процессора лишь для поддержания работы мультиплексного канала.
Обмен с остальными абонентами требует редакции входной и выходной информации. Программы редакции, особенно при сложных ее видах (автокодная, десятичная, шаблонное редактирование), занимают много времени, в связи с чем редактирование не может производиться “на проходе”, т. е. по мере поступления информации.
Для поддержания непрерывной асинхронной работы устройства ввода — вывода и скорости должны быть согласованы со скоростью переработки информации редактирующими программами, которые находятся в составе ДИР и работают на “остатках” времени от основной задачи. Согласование обеспечивается использованием динамически распределяемых буферов, которые заказывают при вводе информации — задача КАНАЛ, при выводе — задача ДИР.
В заключение отметим связь операционной системы с другими разделами математического обеспечения.
База данных ОС содержит в настоящее время в постоянной памяти следующие разделы:
- библиотека стандартных программ; библиотека операторов Опемы;
- транслятор с языка Автокод-1;
- транслятор с языка Автокод-М;
- редактор символьного текста.
Во внешней памяти находится библиотека типовых программ. Операционная система предоставляет пользователям следующую систему программирования:
- Язык Автокод-1 (транслятор и система отладки);
- Язык Опема;
- Язык Автокод-М (транслятор и редактор символьного текста).
Литература
- Вирт Н. Язык программирования Паскаль. — “Алгоритмы и организация решения экономических задач”, Вып. 3. М ., “Статистика”, 1974.
- Вирт Н. Модула: язык для модульного мультипрограммирования. Перевод № А- 80 255. М ., Всесоюзный центр переводов, 1978.
Статьи об ЭВМ М-10
Сборник “Вопросы радиоэлектроники”, серия “Электронная вычислительная техника”, выпуск 9, 1980 г.
Перепечатывается с разрешения авторов.
Статья помещена в музей 08.09.2007 г.