Филипп Смита (Philip Smith III) от 11 мая 2010 с сайта
mainframezone.com Ссылка на оригинал.
VM существует давно, уже сменился целый ряд его поколений (VM/370, VM/SP, VM/XA, VM/ESA, теперь – zVM) и разновидностей (вроде HPO – high performance option). Все это время VM успешно применяется для тестирования, совместного использования ресурсов и всего того, что удобно делать в виртуальных средах. В середине 80-х в VM/XA была представлена команда CP SET MACHINE, предназначенная для выбора архитектуры виртуальной машины – 370, XA или (позже) ESA. В настоящее время поддержка архитектуры 370 отсутствует, однако в будущем у пользователей VM может появиться желание выдать команду вроде CP SET MACHINE INTEL для того, чтобы запускать стандартные приложения для PC на мейнфрейме. Естественно, реализация такого рода возможности требует от разработчиков огромных усилий и, вполне может быть, даже невозможна. Этот вызов готовы принять бесстрашные программисты из Mantissa Corp. Они уже занимались исследованием возможности эмуляции PC на мейнфрейме в 1993 году. В то время соотношение скорости работы процессоров не позволило реализовать этот проект, поэтому он был отложен. Однако в 2006 году, с появлением быстрых процессоров z10 и других особенностей работы новейших мейнфреймов (среди которых, в частности, быстрая работа с сетевыми устройствами), похоже, пришло время реанимировать этот проект. Надо сказать, не им одним приходила в голову подобная дерзость. В 2001 году сотрудник Sine Nomine Associates Адам Торнтон (Adam Thornton) запустил свободно распространяемый в исходных кодах эмулятор Intel-процессоров Bosch под Linux на Multiprise 3000. Учитывая более чем скромные вычислительные возможности Multiprise 3000 и количество задействованных уровней эмуляции, все работало очень медленно. Например, удалось запустить Windows и даже увидеть логотип Windows Exchange Server. Однако всем было понятно, что аппаратные возможности ЭВМ не соответствуют предъявляемым требованиям.
В 2008 году сотрудники Mantissa Corp объявили в листе рассылки IBMVM о работе над Intel-on-zVM-продуктом, получившим наименование z/VOS. Эта новость вызвала сдержанное оживление. Существование Intel-процессоров десятилетиями угрожало самому существованию мейнфреймов, так что перспектива смешивания самих этих архитектур не выглядела такой уж необходимой. С другой стороны, перспектива замены десятков маленьких черных ящиком одним большим мейнфреймом вполне могла способствовать повышению спроса на них, как, например, способствовало этому в свое время появление Линукса на платформе z. В течение нескольких месяцев от Mantissa Corp не было никаких новостей. Презентация на SHARE в 2009 году была разочаровывающей – это было просто записанное заранее и не слишком информативное выступление. Общественность начала подозревать, что проект провалился, пока совсем недавно представители Mantissa Corp не предоставили подробной информации о состоянии проекта и о том, почему они так долго все скрывали. Продукт, называемый теперь z86VM, в настоящее время близок к выходу на рынок. Некоторые по-прежнему сомневаются, а нужен ли этот продукт вообще. Mantissa Corp указывает на традиционные сильные стороны архитектуры z:легкость создания, администрирования и настройки виртуальных машин;
унифицированные устройства ввода-вывода (не надо беспокоиться о многочисленных драйверах);
меньшее количество требуемого пространства, электричества и объема;
более эффективное использование вычислительных ресурсов.
Иными словами, речь идет о консолидации серверов, то есть приводятся те же аргументы, что и для использования Линукса на платформе z, может, даже в большей степени, учитывая большее количество приложений для платформы Windows, нежели для Линукс.
Как заявлено представителями Mantissa Corp, в z86VM используется некий программный код, осуществляеющий преобразование двоичных кодов "на лету” (real-time binary translation engine). Это быстрая однопроходная трансляция бинарных кодов архитектуры Intel в архитектуру z. Естественно, речь не идет о преобразовании процессорных инструкций «один-в-один» (кстати, книга Principles of Operations для системы z содержит около 1400 страниц, а аналогичная книга для Intel – более 4000 страниц), не говоря уже о том, что управление памятью, система прерываний и модель управления приоритетами у этих архитектур очень отличаются друг от друга. В начале реализации проекта в основе подхода Mantissa Corp лежало применение в качестве базовой мейнфреймовской ОС CMS – зрелой, быстрой и надежной операционной системы, работающей в виртуальной машине. Ранее CMS была однозадачной, но в связи с появившейся относительно недавно поддержкой многозадачности выбор среды для реализации эмулятора стал очевиден. Однако потратив 18 месяцев на работу, программисты Mantissa Corp пришли к неутешительным выводам: ограничения CMS в 64-битном режиме и проблемы в реализации многозадачности не позволяют применить эту ОС для решения поставленной перед ними задачи. Результатом стал длительный период отсутствия новостей о проекте. Стало очевидно – для виртуальной машины эмулятору требуется другая операционная среда. Новый гипервизор должен быть легким и быстрым, чтобы не приводить к высоким накладным расходам. Он должен делать не только преобразование кодов – он должен обеспечивать реализацию таких, например, особенностей Intel-архитектуры, как возможность непривилегированной инструкции менять порядок пересчета виртуальных адресов памяти в реальные. Результатом напряженной работы стала новая операционная система для виртуальной машины. Она грузится с помощью команды IPL так же, как и CMS, а затем осуществляется загрузка гостевой Intel-системы. BTE (Binary Translation Engine) транслирует фрагменты кода, а кэш-менеджер управляет их загрузкой в память. При передаче управления трансляция нового фрагмента кода осуществляется только в том случае, если этот фрагмент не сохранился в кэше уже оттранслированным. Этот же z86VM-гипервизор управляет прерываниями, таймером, вводом-выводом, диспетчеризацией задач и выборочным выделением места под файловую систему (то есть выделяет столько места, сколько реально занимается данными). Сразу возникает вопрос – как идет работа с экраном? Разумеется, глупо монопольно отдавать каждой виртуальной машине физический экран. Поэтому применяется тот же протокол RDP (Remote Desktop Protocol), который задействован в службе терминалов Windows (Windows Terminal Services). Этот протокол обеспечивает графический удаленный доступ, а свободная программа, которую можно для этого использовать, rdesktop, есть на многих платформах. То есть для работы с любой x86-системой, выполняющейся на мейнфрейме в гостевой виртуальной машине под управлением zVM и z86VM, можно использовать полноценный графический интерфейс! Вполне понятно, что у такой реализации есть и некоторые ограничения, связанные с нагрузкой на сеть.
Mantissa Corp в настоящее время активно занимается патентованием своих решений. В частности, оформляются патенты на: алгоритм разграничения кодовых фрагментов;
эффективный алгоритм обнаружения и учета изменения содержимого памяти;
алгоритм преобразования адресов z86 и System z;
алгоритм работы с файловой системой;
алгоритм управления приоритетами и последовательностью обработки гостевых прерываний;
алгоритм управления временем жизни транслированных фрагментов программного кода;
алгоритм защиты памяти x86.
Осталось дождаться выхода продукта на рынок, и тогда будет видно, что получилось у разработчиков. В любом случае у сторонников System z впереди много всего интересного! Подробнее – на www.mantissa.com.