Система виртуальных машин
Систе́ма Виртуа́льных Маши́н (аббр. СВМ) — операционная система для ЕС ЭВМ, аналог системы VM фирмы IBM.
Основные особенности СВМПравить
СВМ (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 и т. д.
Интерпретатор языка 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