Введение

Семейство операционных систем IBM

VM (часто: VM/CMS) — это семейство операционных систем IBM для виртуальных машин, используемых на IBM-совместимых мэйнфреймах System/370, System/390, zSeries, System z и совместимых системах, включая эмулятор Hercules для персональных компьютеров. Известны следующие версии:

Virtual Machine Facility/370
VM/370, выпущенная в 1972 году, является перереализацией System/370 более ранней операционной системы CP/CMS. VM/370 Basic System Extensions Program Product
VM/BSE (BSEPP) — это расширение для VM/370, добавляющее поддержку большего количества устройств (таких как диски DASD с архитектурой фиксированных блоков типа 3370), улучшения среды CMS (например, улучшенный редактор) и некоторые улучшения стабильности CP. VM/370 System Extensions Program Product
VM/SE (SEPP) — это расширение для VM/370, которое включает в себя возможности VM/BSE, а также несколько дополнительных исправлений и функций. Virtual Machine/System Product
VM/SP — важная версия, заменяющая VM/370, VM/BSE и VM/SE. В релизе 1 добавлены EXEC2 и редактор System Product Editor XEDIT; в релизе 3 — REXX; в релизе 6 — общая файловая система. Virtual Machine/System Product High Performance Option
VM/SP HPO добавляет расширенную поддержку устройств и функциональность к VM/SP и позволяет некоторым машинам S/370, способным использовать более 16 МБ оперативной памяти, делать это в объеме до 64 МБ. Эта версия предназначалась для пользователей, запускающих несколько гостевых систем S/370 одновременно. VM/XA MA предназначена для упрощения миграции с MVS/370 на MVS/XA, позволяя обеим системам работать одновременно на одном процессорном комплексе. Virtual Machine/Extended Architecture System Facility
VM/XA SF — это обновленная версия VM/XA MA с улучшенной функциональностью и производительностью. Virtual Machine/Extended Architecture System Product
VM/XA SP — это обновленная версия VM/XA MA с улучшенной функциональностью и производительностью, предлагаемая в качестве замены VM/SP HPO на машинах, поддерживающих S/370 XA. Она включает в себя версию CMS, которая может работать в режиме S/370 или S/370 XA. Virtual Machine/Enterprise Systems Architecture
VM/ESA предоставляет возможности VM/SP, VM/SP HPO и VM/XA SP. VM/ESA версии 1 может работать в режимах S/370, ESA/370 или ESA/390; режим S/370 XA не поддерживается. Версия 2 работает только в режиме ESA/390. Версии VM/ESA, поддерживающие S/370, фактически являлись отдельной версией от версий VM/ESA для ESA/390, поскольку версии S/370 основаны на более старой кодовой базе VM/SP HPO, а версии ESA/390 — на более новой кодовой базе VM/XA. z/VM

z/VM — последняя версия, которая до сих пор широко используется как одно из основных полноценных решений виртуализации для рынка мэйнфреймов. z/VM 4.4 была последней версией, способной работать в режиме ESA/390; последующие версии работают только в режиме z/Architecture. CMS в названии относится к Conversational Monitor System — компоненту продукта, представляющему собой однопользовательскую операционную систему, работающую в виртуальной машине и обеспечивающую режим разделения времени в VM.

Интерфейс гипервизора

IBM ввела термин "гипервизор" для системы 360/65 и позднее использовала его для обработчика DIAG в CP 67. Инструкция Diagnose ("83'x — без мнемонического обозначения) — привилегированная инструкция, изначально разработанная IBM для выполнения "встроенных диагностических функций или других функций, зависящих от модели". IBM переназначила DIAG для "коммуникации между виртуальной машиной и CP". Инструкция содержит два четырехбитных регистра, называемых Rx и Ry, которые могут "содержать адреса операндов хранения или коды возврата, передаваемые в интерфейс DIAGNOSE", и двухбайтовый код, "который CP использует для определения выполняемой функции DIAGNOSE". Это значительно улучшило возможности хранения файлов в CMS. Файловая система CMS минидиска вообще не поддерживает каталоги (папки), однако SFS поддерживает. SFS также обеспечивает более гранулярную безопасность. С помощью минидисков CMS система может быть настроена на разрешение или запрет пользователям доступа к диску только для чтения или чтения-записи, но отдельные файлы не могут иметь такой же уровень безопасности. SFS решает эту проблему и значительно повышает производительность. SFS предоставляется сервисными виртуальными машинами. В современной системе виртуальных машин обычно требуется три: VMSERVR, "восстановительная машина", которая фактически не обслуживает файлы; VMSERVS, сервер для файлового пула VMSYS; и VMSERVU, сервер для файлового пула VMSYSU (пользовательского). На серверных машинах файлового пула обычно размещается несколько минидисков, включая CMS A-диск (виртуальный адрес устройства 191, содержащий файлы конфигурации файлового пула), управляющий диск, журнал дисков и любое количество дисков данных, которые фактически хранят пользовательские файлы. В современных версиях VM большая часть системы может быть установлена на SFS, при этом лишь несколько минидисков остаются абсолютно необходимыми для запуска системы и принадлежат серверным машинам файлового пула. Если учетная запись пользователя настроена на использование только SFS (и не имеет минидисков), A-диск пользователя будет FILEPOOL:USERID, а все последующие каталоги, создаваемые пользователем, будут FILEPOOL:USERID.DIR1.DIR2.DIR3, где эквивалентный путь в UNIX — /dir1/dir2/dir3. Каталоги SFS могут иметь гораздо более детальный контроль доступа по сравнению с минидисками (которые, как упоминалось выше, часто могут иметь только пароль для чтения, пароль для записи и пароль для многократной записи). Каталоги SFS также решают проблемы, которые могут возникнуть при одновременной записи двух пользователей на один и тот же минидиск CMS, что может привести к повреждению диска (поскольку VM CMS, выполняющая запись, может не знать, что другой экземпляр CMS также записывает на минидиск). Серверные машины файлового пула также обслуживают тесно связанную файловую систему: файловую систему Byte (BFS). BFS используется для хранения файлов в файловой системе, подобной UNIX. Ее основное назначение — среда VM OpenExtensions POSIX для CMS. Виртуальные машины пользователей CMS сами взаимодействуют с виртуальными машинами серверов SFS через механизм IUCV.

Команды CP

Начиная с выпуска 6, программа управления VM/370 имеет ряд команд для общих пользователей, связанных с определением и управлением виртуальной машиной пользователя. Строчные буквы в команде являются необязательными.

**Команда** **Описание**
#CP Позволяет пользователю выполнить команду CP из командной среды или любой другой виртуальной машины после нажатия клавиши Break (по умолчанию PA1).
ADSTOP Устанавливает адресную остановку для прекращения работы виртуальной машины при достижении определенной инструкции.
ATTN Вызывает прерывание внимания, позволяющее CP получить управление в командной среде.
Begin Продолжает или возобновляет выполнение виртуальной машины пользователя, опционально с указанного адреса.
CHange Изменяет атрибуты одного или нескольких файлов катушки. Например, можно изменить выходной класс или имя файла, либо установить специфические атрибуты принтера.
Close Закрывает открытый файл принтера, перфоратора, считывателя или консоли и передает его в систему катушки.
COUPLE Подключает виртуальный канал к адаптеру канала (CTCA) к другому. Также используется для подключения эмулированных карт QDIO Ethernet к виртуальному коммутатору.
CP Выполняет команду CP в среде CMS.
DEFine Изменяет текущую конфигурацию виртуальной машины. Добавляет виртуальные устройства или изменяет доступный объем памяти.
DETach Удаляет виртуальное устройство или канал из текущей конфигурации.
DIAL Подключает ваш терминал на экране входа в систему к эмулированным терминалам 3270 или телетайпам многодоступной виртуальной машины, в которой выполнен вход.
DISConn Отключает ваш терминал, позволяя виртуальной машине продолжать работу.
Display Отображает содержимое памяти виртуальной машины или (виртуальных) аппаратных регистров.
DUMP Создает моментальный снимок (дамп) текущей виртуальной машины и выводит его на виртуальный принтер катушки.
ECHO Настраивает виртуальную машину на эхо-отображение вводимых строк.
EXTernal Генерирует внешнее прерывание для виртуальной машины.
INDicate Отображает текущую системную нагрузку или используемые вами ресурсы.
Ipl Выполняет IPL (загрузку) операционной системы на вашей виртуальной машине.
LINK Подключает устройство от другой виртуальной машины, если определение этой машины разрешает совместное использование.
LOADVFCB Указывает буфер управления форматами (FCB) для виртуального принтера.
LOGoffLOGout Завершает выполнение текущей виртуальной машины и отключается от системы.
LogonLogin Выполняет вход в систему.
MessageMSG Отправляет однострочное сообщение оператору системы или другому пользователю.
NOTReady Приводит виртуальное устройство в состояние "не готово".
ORDer Переупорядочивает закрытые файлы катушки по идентификатору или классу.
PURge Удаляет закрытые файлы катушки для устройства по классу, идентификатору или ВСЕ.
Query Отображает информацию о состоянии вашей виртуальной машины, сообщение дня или количество/имена вошедших в систему пользователей.
READY Генерирует прерывание окончания работы устройства.
REQuest Генерирует прерывание на вашей виртуальной консоли.
RESET Сбрасывает все ожидающие прерывания для устройства.
REWind Перематывает реальную (не виртуальную) магнитную ленту.
SET Устанавливает различные атрибуты для вашей виртуальной машины, включая параметры сообщений или функциональные клавиши терминала.
SLeep Переводит вашу виртуальную машину в спящее состояние на неопределенный срок или на указанный период времени.
SMsg Отправляет однострочное специальное сообщение другой виртуальной машине (обычно используется для управления работой виртуальной машины; часто используется с RSCS).
SPool Устанавливает параметры для виртуального устройства катушки (принтера, считывателя или перфоратора).
STore Изменяет содержимое регистров или памяти вашей виртуальной машины.
SYStem Перезагружает или перезапускает вашу виртуальную машину или очищает память.
TAg Устанавливает тег, связанный с устройством или файлом катушки. Тег обычно используется подсистемой дистанционного взаимодействия VM (RSCS) для определения назначения файла.
TERMinal Устанавливает характеристики вашего терминала.
TRace Начинает или прекращает отслеживание определенных действий виртуальной машины.
TRANsfer Передает файл катушки другому пользователю или от него.
VMDUMP Создает дамп вашей виртуальной машины в формате, читаемом программой Interactive Problem Control System (IPCS).

Расширения OpenEdition

Начиная с VM/ESA версии 2, IBM представила платную дополнительную функцию OpenEdition для VM/ESA Shell и Utilities Feature, которая обеспечивает совместимость POSIX для CMS. Главной особенностью стала UNIX-оболочка для CMS. Компилятор C для этой UNIX-среды предоставляется либо C/370, либо C для VM/ESA. Ни файловая система CMS, ни стандартная общая файловая система VM не поддерживают файлы и пути в стиле UNIX; вместо этого используется файловая система Byte. После создания расширения BFS в пуле файлов SFS, пользователь может смонтировать его с помощью команды OPENVM MOUNT / /VMBFS:fileservername:filepoolname /path/to/mount/point. Пользователь также должен смонтировать корневую файловую систему командой OPENVM MOUNT / /VMBFS:VMSYS:ROOT/ /, после чего оболочку можно запустить командой OPENVM SHELL. В отличие от обычной SFS, доступ к файловым системам BFS контролируется разрешениями POSIX (с помощью команд chmod и chown). Начиная с z/VM версии 3, IBM интегрировала OpenEdition в z/VM и переименовала его в OpenExtensions. OpenEdition и OpenExtensions обеспечивают соответствие стандарту POSIX.2 для CMS. Программы, скомпилированные для запуска под оболочкой OpenExtensions, хранятся в том же формате, что и стандартные исполняемые модули CMS. Визуальные редакторы, такие как vi, недоступны, поскольку терминалы 3270 не поддерживают их работу. Пользователи могут использовать ed или XEDIT вместо vi.

Маскот VM

В начале 1980-х годов группа VM в составе SHARE (сообщества пользователей IBM) искала талисман или логотип, который могло бы принять сообщество. Это было частично реакцией на то, что пользователи MVS от IBM выбрали индейку в качестве талисмана (выбранного, по легенде, группой MVS Performance Group в первые дни MVS, когда производительность системы была острой проблемой). В 1983 году плюшевый медведь фактически стал талисманом VM на конференции SHARE 60, когда наклейки с изображением медвежонка прикрепляли к бейджам "опытных и доброжелательных участников", чтобы новички могли легко обратиться к ним за помощью. Медвежата имели большой успех и вскоре стали широко распространены. Медведей вручали новым членам "Ордена рыцарей VM" – людям, внесшим "ценный вклад" в сообщество.

Критика

В то время как VM была относительно легковесной (по сравнению с системами, такими как MVS), в первые годы она была несколько нестабильной. Считалось большим достижением поддерживать систему VM/370 в рабочем состоянии более недели. Пользователи также критиковали файловую систему CMS, отмечая, что другие операционные системы в середине 1980-х годов уже имели каталоги, символические ссылки и другие важные функции, в то время как CMS не обладала ими до 1988 года, когда с выходом VM/SP версии 6 была представлена Общая файловая система, что решило эти проблемы. Некоторые пользователи также считали VM OpenEdition несколько излишней.