Система виртуальных машин
Систе́ма виртуа́льных маши́н (СВМ) — операционная система для ЕС ЭВМ, аналог системы VM фирмы IBM.
СВМ | |
---|---|
Разработчик | IBM, НИИЭВМ |
Семейство ОС | VM |
Тип ядра | Виртуальная машина |
Лицензия | Proprietary |
Состояние | Историческое |
Основные особенности СВМ
СВМ (VM, и её ранняя версия CP/CMS) — первая система, в которой была реализована технология виртуальных машин. Виртуализация в СВМ была последовательной и полной, в частности, на виртуальной машине можно было запустить другую копию системы СВМ, и так далее. Более того, запуск СВМ на виртуальной машине СВМ был рекомендованным методом генерации новой версии системы для установки. В частности, это означало, что любое реальное устройство ЭВМ могло быть тем или иным методом представлено в виде виртуального устройства на виртуальной машине. До сих пор ни одна другая реализация виртуальных машин не обладает таким свойством.
Статус СВМ
Система виртуальных машин в социалистическом лагере была впервые адаптирована в версии 1 предприятием «Роботрон» (ГДР), а затем, с версии 2, развивалась НИИЭВМ (Минск). Благодаря активности НИИЭВМ, СВМ рассматривалась в СССР как один из основных компонентов системного программного обеспечения ЕС ЭВМ и впоследствии стала основой версии 7 ОС ЕС, предлагавшейся в качестве штатного варианта для применения на системах ЕС ЭВМ Ряд-3 и выше. Наибольшее распространение в СССР получили версии СВМ 3 и 4. Версия 5 была выпущена уже в период распада СССР и массового отказа от использования оборудования ЕС ЭВМ, в связи с чем не получила широкого распространения, а под названием «СВМ версия 6» минские специалисты выпустили пакет программ для VM, обеспечивающий её максимальную совместимость с приложениями СВМ.
С другой стороны, по причинам, не имеющим рационального объяснения, фирма IBM никогда не поощряла использование своей операционной системы VM, и VM всегда позиционировалась маркетингом IBM на вторых ролях по отношению к другим операционным системам мейнфреймов — MVS, OS и даже DOS, гораздо менее технологичным и дружественным к пользователю. Скорее всего, низкий бюджет разработки VM как первоначально экспериментального проекта не позволил финансовому руководству IBM признать её равной тем системам, на которые было затрачено гораздо больше средств.
Архитектура СВМ
Архитектурно СВМ состояла из нескольких независимых компонентов. Центральным компонентом был монитор виртуальных машин (МВМ, IBM-овское название — CP, Control Program), который управлял аппаратурой реальной ЭВМ и реализовывал набор виртуальных машин с заданной конфигурацией. Остальные компоненты представляли собой операционные системы или системонезависимые программы виртуальных машин, работавшие под управлением МВМ: подсистема диалоговой обработки (ПДО), подсистема сетевой передачи файлов (ПСП), подсистема логической коммутации абонентских пунктов (ПЛК), подсистема анализа дампов (ПАД), подсистема дистанционной передачи файлов (ПДП), подсистема контроля технических средств (ПКТ), средства генерации и обслуживания (СГО).
ПДО
ПДО (Подсистема Диалоговой Обработки, название IBM — CMS, Conversational Monitor System, ранее Cambridge Monitor System; обратный перевод на английский — PTS, Programming and Testing System) представляла собой основную операционную систему виртуальной машины в СВМ, в которой осуществлялась работа пользователей. ПДО предоставляла пользователю диалоговый интерфейс, фактически работа пользователя за терминалом в ПДО на виртуальной машине напоминала работу на персональном компьютере. Это был очень серьёзный шаг вперёд по сравнению с более ранними операционными системами ЕС ЭВМ, диалоговые возможности которых либо полностью отсутствовали, либо были очень ограниченны.
Служебные подсистемы
Подсистемы ПСП, ПЛК, ПАД, ПДП, ПКТ, СГО были предназначены для задач обслуживания системы и прикладными программистами и пользователями не использовались.
Гостевые ОС
Кроме того, на виртуальной машине СВМ можно было запускать любую операционную систему ЕС ЭВМ, предназначенную для работы на реальном «железе» (так называемые гостевые ОС) — ОС ЕС, ДОС ЕС, МОС ЕС, МВС и т. д. В составе ОС ЕС версии 7 была разработана специальная операционная система БОС, функционально эквивалентная ОС ЕС версии 6 (SVS), но предназначенная специально для работы на виртуальной машине СВМ. БОС, в отличие от подавляющего большинства других системных средств ЕС ЭВМ, являлась самостоятельной разработкой советских программистов, независимой от фирмы IBM. Так как ОС ЕС являлась пакетной системой, пользователи ПДО могли передавать в неё подготовленные пакеты заданий и получать результаты при помощи виртуального перфоратора и виртуального АЦПУ.
Производительность монитора виртуальных машин
Монитор виртуальных машин теоретически позволял поддерживать до 10000 виртуальных машин на одной реальной системе. На практике количество одновременно активных виртуальных машин ограничивалось производительностью ЭВМ и могло достигать нескольких десятков.
В ЕС ЭВМ Ряд-3 и выше были реализованы средства микропрограммной поддержки СВМ.
Учёт времени
Архитектура СВМ позволяла естественным образом организовать учёт использования машинного времени, что было весьма актуально для дорогих в эксплуатации многопользовательских систем. Команда МВМ QUERY TIME, доступная пользователю виртуальной машины, позволяла узнать текущие дату и время, а также общую величину процессорного времени реального и виртуального процессоров, использованного в текущем сеансе работы виртуальной машины. Пользовался популярностью нехитрый скрипт на языке REXX, который при выходе из системы выдавал такую команду, умножал полученный результат на стоимость машинного времени системы и сообщал пользователю итоговую сумму, в которую обошлась его работа для эксплуатирующей ЭВМ организации. Для программиста, не занимавшего процессор интенсивными расчётами, а выполнявшего обычную разработку и отладку программ, на ЕС-1066 типичная стоимость машинного времени составляла порядка 10 рублей за рабочий день (то есть примерно была равна заработной плате). Ресурсоёмкие программы при эксплуатации могли использовать на порядки больше процессорного времени. Конечно, программисты в СССР не платили за машинное время из своего кармана, но из этой цифры видно, что труд программистов по оптимизации кода окупался в то время очень быстро.
Совместимость с ОС ЕС
Помимо возможности использования ОС ЕС и БОС под управлением МВМ, сама ПДО была спроектирована таким образом, чтобы максимально облегчить перенос программ из ОС ЕС. К виртуальной машине ПДО можно было подключать диски в формате ОС ЕС и запускать непосредственно загрузочные модули ОС ЕС специальной командой OSRUN (с определёнными ограничениями на используемые системные вызовы). Кроме того, большинство прикладных программ для ОС ЕС можно было просто перекомпилировать под ПДО, чтобы получить настоящие исполняемые модули ПДО. Системные вызовы ПДО были максимально совместимы с ОС ЕС, большинство прикладных программ для ЕС ЭВМ писалось на их общем подмножестве и могло выполняться как в среде ОС ЕС (и МВС), так и в среде ПДО.
Разделяемые сегменты
Для обеспечения эффективного использования системы виртуальной памяти предусматривалось выделение части адресного пространства, по желанию системного программиста, под так называемые разделяемые сегменты. Например, текстовый редактор, компилятор или библиотека поддержки языка программирования могли быть загружены в разделяемый сегмент и, таким образом, все использующие их пользователи фактически обращались к одной и той же копии в виртуальной памяти, вместо того, чтобы создавать отдельную копию для каждой виртуальной машины.
Работа с файлами в ПДО
В отличие от систем ДОС ЕС, ОС ЕС и МВС, предоставлявших очень громоздкую и неудобную для повседневного использования систему управления файлами (точнее, в их терминологии, наборами данных), в ПДО была реализована концепция так называемых мини-дисков с возможностью использования собственной файловой системы. Мини-диск представлял собой виртуальное дисковое устройство, эмулируемое МВМ. Мини-диск можно было отформатировать в файловой системе ПДО, в таком случае он содержал единый каталог файлов. Идентификатор файла состоял из имени файла (до 8 символов), расширения (до 8 символов) и режима файла (1 буква диска и 1 цифра режима доступа). Компоненты имени разделялись пробелом, режим файла можно было опускать целиком или указывать только букву диска. Например, файл с именем PROFILE EXEC A1 — файл автозагрузки системы ПДО типа EXEC (на одном из скриптовых языков) на основном пользовательском мини-диске A, с обычным режимом доступа 1.
Структура файлов ПДО соответствовала структуре наборов данных ОС ЕС (за исключением наиболее сложных типов наборов данных), то есть каждый файл разбивался на записи определённого формата и длины. Основным форматом текстовых файлов в ПДО был формат F(80), то есть образ виртуальной колоды 80-колоночных перфокарт.
Мини-диски могли совместно использоваться несколькими виртуальными машинами, так был организован совместный доступ к мини-дискам с системными программами и доступ пользователей к данным друг друга. Предусматривалась парольная защита мини-дисков по чтению и записи.
В целях совместимости с ДОС ЕС, ОС ЕС и МВС, в ПДО преимущественно использовался механизм внешней ассоциации файлов, заимствованный из этих систем. Хотя программа в ПДО могла открыть файл на диске непосредственно по его имени, фактически так были устроены только немногочисленные системные программы типа файловых утилит, текстового редактора и т. п. Штатным механизмом для прикладных программ было ассоциирование файла на диске (или устройства) с именем файла в программе при помощи команды FILEDEF, выдаваемой перед выполнением программы (аналог оператора DD в языке JCL для ДОС, ОС и МВС). Например, команда FILEDEF SYSPRINT DISK TEST LISTING означала, что системный вывод (SYSPRINT) следующих за ней программ следует записывать в файл на мини-диске ПДО с именем TEST LISTING (и подразумеваемым режимом A1).
Усечения и аббревиатуры
Для удобства диалоговой работы в СВМ в большинстве команд МВМ, ПДО и системных программ, а также в некоторых операндах команд допускалось использование усечений и аббревиатур. Например, слово READER могло вводиться в виде одного из усечений READER, READE, READ, REA, RE, R или в виде аббревиатуры RDR. Более часто используемые команды и операнды имели более короткие усечения, вплоть до одной буквы, более редко используемые — более длинные. В описании синтаксиса обязательная часть усечения выделялась большими буквами или подчёркивалась, например: READER | RDR.
Редактор XEDIT
Начиная с СВМ версии 3, в ПДО применялся очень развитый текстовый редактор XEDIT, который, в частности, полностью управлялся на языке REXX. С помощью скриптов на REXX для XEDIT реализовывались многие сложные системы, такие, например, как системы коллективного управления версиями программ. Впоследствии клоны XEDIT (KEDIT, SEDIT, THE) были реализованы в различных операционных системах персональных компьютеров, но не очень прижились, так как идеология XEDIT в значительной степени была ориентирована на особенности работы с терминалом мейнфрейма. Редактор THE (The Hessling Editor) в настоящее время распространяется под лицензией GPL для платформ Unix, z/OS, MS-DOS, OS/2, Windows, QNX, Amiga, BeOS, Mac OS X. Интересно, что распространением версии THE для z/OS занимается сама фирма IBM.
Электронная почта
В составе ПДО поставлялись программы для работы с электронной почтой. Обычно электронная почта работала между пользователями одной реальной ЭВМ (для старших моделей ЕС ЭВМ это могли быть сотни пользователей за терминалами в радиусе нескольких километров), но, при использовании телекоммуникационных средств, бывших в те времена ещё диковиной, различные машины могли объединяться в сеть. Также была реализована система мгновенной передачи коротких сообщений между пользователями.
Системы программирования и язык REXX
Основными средствами программирования для ПДО были скриптовые языки REXX и более ранние EXEC и EXEC2, ассемблеры, компиляторы с языков ПЛ/1, Фортран, Кобол. Также, для ПДО было реализовано множество других систем программирования, таких как: Паскаль, Си, Лисп, Пролог, система символьных вычислений REDUCE, технологический язык для разработки системного ПО PLS (язык программирования) и т. д.
Интерпретатор языка REXX был впервые включён в состав ПДО в СВМ версии 3. Язык REXX получил впоследствии широкое распространение в операционной системе OS/2 и был реализован также для многих других операционных систем. В СВМ популярность REXX среди пользователей была более ограничена, чем в OS/2, так как скриптовый язык предыдущих версий ПДО, EXEC2, обеспечивал достаточно широкие возможности, и необходимость в использовании более сложного языка REXX возникала реже, в то время как в OS/2 единственной альтернативой REXX был крайне ограниченный язык .bat/.cmd-файлов.
Литература
- Тимонин В. И. СВМ ЕС: Основы функционирования и средства обеспечения пользователя. — М.: Изд-во МАИ, 1990. — 232 с.: ил. ISBN 5-7035-0157-1
- Система виртуальных машин для ЕС ЭВМ: Справочник/И. М. Булко, Н. Н. Дорожко, Л. И. Дудкин и др.; Под ред. Э. В. Ковалевича. — М.: Финансы и статистика, 1985. — 360 с.
- Пекер Ф. Л., Морозов Б. А. Прикладное программирование в системе виртуальных машин ЕС ЭВМ: Справочное пособие. — Минск: Вышэйшая школа, 1989. — 208 с.: ил. ISBN 5-339-00213-6
- Потапов В. И., Денщиков А. В., Шкода О. Б. Работа в системе виртуальных машин ОС ЕС/Под ред. В. Н. Лебедева. — М.: Финансы и статистика, 1988. — 253 с.: ил. ISBN 5-279-00117-1