Самая виртуальная машина

21 апрель, 1999 - 14:54Андрей Зубинский

Эмуляторами операционных систем и даже «полноценных» компьютеров сегодня удивить кого-нибудь трудно. Действительно, на радость любителям «старых добрых» восьмибитовых машинок написано огромное количество полнофункциональных имитаторов, позволяющих сохранить (и даже приумножить) богатое программное наследие (на сайте www.emunews.net собраны просто залежи информации, посвященной эмуляторам). Однако в развитии эмуляторов наблюдалась ярко выраженная тенденция. которую можно в общем виде описать такой фразой: «на машине X подлежит эмуляции машина Y только в том случае, если разрядность процессора и производительность X намного больше показателей Y». Естественно, существуют специализированные эмуляторы, позволяющие отлаживать «виртуальные» процессоры очень большой разрядности, но в этой статье речь идет о программной «имитации», направленной на применение «чуждого» данной операционной системе двоичного кода в повседневных пользовательских (а не исследовательских) целях.

«Подвижный в подвижном»

Предсказаниям Жюля Верна уготована самая неожиданная судьба. Метафора «Наутилуса» неожиданно получила еще одно овеществление — в компьютинге, в виде виртуального ПК. Выпущенный компанией VMware одноименный продукт является ни чем иным, как эмулятором настоящего персонального компьютера — со своим «процессором» (архитектуры х86), оперативной памятью, видеокартой и даже... BIOS.

Самая виртуальная машина

В отличие от всевозможных «надстроенных» систем (представляющих собой, по сути, «переходник», согласующий системные вызовы основной и «гостевой» ОС), VMware позволяет избежать самого неприятного момента — сложностей (и даже невозможности) реализации недокументированных производителем системных вызовов и скрытых особенностей архитектуры гостевой операционной системы. Естественно, что стоила эта возможность достаточно дорого: пользователям ПК с процессорами моделей младше Pentium II VMware даст возможность «насладиться» только ну очень продолжительным процессом загрузки гостевой ОС, а на машинах с процессорами семейства 486 вообще следует забыть о существовании подобного продукта.

Симптоматическая революция

Прежде чем поделиться своим опытом непродолжительной «войны» с бета-версией VMware (которая, кстати, оказалась не «бескровной» — об этом позже), поспешу определиться с собственной позицией в отношении этого (и ему подобных) продукта. Появление на свет VMware не случайно, несмотря на то что уже есть целый ряд программных систем (как коммерческих, так и свободно распространяемых), позволяющих в операционной системе X запускать программы для операционной системы Y. Не секрет, что под X и У понимаются в первую очередь Unix и MS Windows — по явной причине как противоборства, так и популярности этих платформ.

Однако существенные различия в принципах распространения и развития Unix и Windows поставили эти платформы в совершенно неравные условия. Если использовать неформальный, но достаточно понятный из определения термин «эмуляционная пригодность» (ЭП), можно обоснованно утверждать, что ЭП Unix намного выше, чем ЭП Windows: системные вызовы любой «самой коммерческой» версии Unix всегда «лежат на ладони», а их основное подмножество детально определено стандартами Posix, чего, увы, нельзя сказать о MS Windows.

При этом каждая платформа имеет определенные достоинства и недостатки и успешно доказала свою состоятельность (Unix — почти тридцатилетней историей и неослабевающей популярностью в научных кругах, секторе ISP и крупномасштабных системах; MS Windows — доминирующей позицией на рынке настольных систем и в секторе сетевых решений малого и среднего уровня).

С появлением полноценных 32-битовых версий MS Windows пользователям этой платформы предоставилась возможность (правда, не бесплатная) выполнять приложения из Unix-мира (естественно, после перекомпиляции исходных текстов с использованием ряда «согласующих» библиотек). Приверженцев Unix при этом почему-то забыли: все, чем могли порадовать эмуляторы до появления «на арене» VMware — это очень ограниченными возможностями запуска ряда 16-битовых приложений MS Windows (правда, существует коммерческий эмулятор SoftWindows 95 для Unix/RISC-машин, но по очевидным причинам дороговизны RISC-систем и массовой популярности Unix-клонов для ПК подобные продукты «погоды» не делают).

Самая виртуальная машина

Так чем же является VMware революцией или симптомом? Вероятнее всего, и тем и другим. Можно даже сказать, что симптоматичности в ней больше... В первую очередь, VMware — симптом уже плохо скрываемой болезни «закрытости» коммерческого программного обеспечения. Симпатии и антипатии — дело второстепенное, а вопрос возможности использования действительно хорошего программного обеспечения (в первую очередь прикладного характера) на любой платформе остается самым наболевшим. Учитывая устойчивое нежелание «горы идти к Магомету» и несуразно высокую стоимость портирования приложений на «неродные» платформы (доходящую до $10–15 за строчку кода), VMware в добровольном порядке вызвалась стать пресловутым «Магометом».

Есть еще одна сторона симптоматичности VMware — не столь очевидная, но достаточно интересная... Если на ПК класса Pentium II можно загрузить основную ОС, эмулятор «всего» (VMware), в нем — гостевую ОС и при этом вполне приемлемо работать одновременно в двух операционных системах с различными приложениями, напрашивается вопрос: а не переплачивает ли «обычный» пользователь подобного компьютера за избыточную производительность, абсолютно ненужную вега повседневной деятельности? Возможность ответить на этот сложный вопрос оставляю читателям...

Ну и последнее соображение в рамках этой краткой «истории болезни»: симптоматичен и выбор основных платформ, для которых сегодня существует VMware. Коммерческий характер продукта, казалось бы, предопределяет выбор — коммерческие же Unix и семейство MS Windows. Но компания VMware предпочла свободно распространяемую Linux... Если предположить, что это предпочтение — не грубейшая ошибка управляющего персонала VMware, остается (опять же выражаясь псевдомедицинским языком) констатировать не просто «растущую популярность...», а доминирование Linux в классе рабочих станций среднего уровня (т. е. в самом массовом классе Unix-систем). Хорошо это или плохо — разговор отдельный, в котором больше вопросов,чем ответов...

VMware — это просто

Все гениальное просто, и VMware не является исключением из правила. Если разработчики ПО не желают по тем или иным (отнюдь не благородным) соображениям детально специфицировать свои продукты, производители «железа» зачастую действуют с точностью до наоборот — вот главная предпосылка и определяющий фактор появления VMware.

Вместо многолетних судебных разбирательств без всякой гарантии на успех компания VMware сосредоточилась на создании действующей программной модели ПК. Высокая производительность новых процессоров семейства х86 также способствовала реализации проекта.

В основе VMware лежит концепция так называемой виртуальной платформы, являющаяся интеллектуальной собственностью разработчика (VMware) и защищенная патентом США. Трудно сказать, что, собственно, абсолютно нового в идее и технологиях «виртуальной платформы» (уже были SVM для мэйнфреймов IBM 370 и есть множество эмуляторов «компьютеров в целом»), однако факт остается фактом. На уровне программной реализации VMware представляет собой достаточно большую, но не очень сложную систему, разработанную на ISO-стандартном языке С, что, по идее, должно обеспечивать высокую мобильность. Однако эффективность опять требует своего, и, вероятно, по этой причине нет какой-либо информации о возможности портирования VMware, например, на RISC-машины.

Под «виртуальной платформой» понимается целый комплекс программ-эмуляторов: микропроцессора, материнской платы, НЖМД, сетевой карты, видеокарты, BIOS и т. д. Реальное «железо» компьютера разделяется между основной операционной системой и несколькими процессами VMware (такой режим возможен, но при сегодняшней производительности микропроцессоров и ресурсоемкости операционных систем почти нереален) с помощью так называемых драйверов виртуальной платформы (ДВП), которые поставляются компанией VMware для основных операционных систем (Linux/MS Windows). Именно ДВП являются единственной платформенно-зависимой частью VMware (естественно, в идеале).

Функции ДВП — изоляция гостевой операционной системы от особенностей основной ОС, которая, в свою очередь, ограждает ДВП от проблем, вызванных применяемым в данной конфигурации компьютера аппаратным обеспечением, за счет собственных достаточно высокоуровневых драйверов и интерфейсов. Такая трехуровневая «изоляция» гарантирует практически полную независимость гостевой операционной системы от конкретного «железа». Если для MS Windows это достоинство весьма сомнительно (очень трудно найти нeWindows-совместимые аппаратные средства для компьютеров х86-архитектуры), то в случае запуска «гостевой» Linux или FreeBSD под Windows (что, естественно, позволяет VMware) открывается возможность полноценно использовать совершенно специфические для Windows принтеры и факс-модемы, для которых еще нет (и, вероятнее всего, никогда не будет) программной поддержки в Unix-клонах.

Самая виртуальная машина

Интересная особенность VMware — способность работать непосредственно на «голом железе» без основной операционной системы. Ее можно назвать

потенциальной, а после непродолжительных рассуждений — очень перспективной и, может быть, вообще главной в далекоидущих планах компании VMware (но об этом позже).

Обеспечивается эта способность специальным модулем в составе VMware, называемом монитором виртуальной платформы (МВП). Суперминиатюрный по нынешним меркам размер МВП в составе дистрибутива VMware занимает всего около 24 КВ, собственно размер VMware — порядка 2,5 МВ, что наводит на определенные размышления об относительно низкой ресурсоемкости системы в целом (если не считать эмуляцию процессора). МВП позволяет как запускать на машине без основной ОС ряд гостевых операционных систем, так и допускает мирное сосуществование комбинаций MBFl-VMware-гостевая ОС и основная OC-VMware-гостевая ОС. На момент написания статьи возможности МВП не проверялись в связи с ограничениями во времени.

На системном уровне установленная VMware является обычным пользовательским процессом и не требует каких-либо особенных привилегий (например, режима суперпользователя). Такое решение, несомненно, гарантирует достаточно высокий уровень безопасности и не создает заметных на первый взгляд «брешей» в защите основной операционной системы.

К безусловно привлекательным особенностям VMware можно отнести достаточно лояльное поведение в основной ОС и максимально возможное «невмешательство» в ее файловую систему. Для установки гостевой ОС не требуется дополнительных разделов на уже имеющемся НЖМД — виртуальная файловая система гостевой ОС располагается в одном-единствен-ном файле основной операционной системы, при этом гостевая ОС может разделять «дисковые» ресурсы с основной стандартными способами (например, сетевым соединением). Степень «абстрагирования от железа» очень высока -так, каждая гостевая ОС может иметь свой собственный TCP/1Р-ад-рес, не совпадающий с «реальным» адресом основной операционной системы. Такая возможность просто незаменима для разработчиков контента Web-узлов, применяющих в процессе разработки ПО на платформе MS Windows, а в качестве серверной платформы — ОС Linux или FreeBSD.

Хождения по мукам эмуляции

Испытания бета-версии VMware проводились на двух машинах, существенно отличающихся конфигурациями. Для простоты назовем их «завтра» (Pentium II 350 MHz, 128 МВ ОЗУ) и «вчера» (Pentium MMX 166 MHz, 32 МВ ОЗУ). Были проведены несколько попыток добиться успешной работы под управлением ОС RedHat Linux 5.2 (в том числе с ядром ОС Linux версии 2.2.5) и SuSE Linux 6.0 (ядро 2.0.36).

Первое, что бросается в глаза при инсталляции VMware, — простота. Над установочной программой в VMware потрудились на славу. Вся процедура не занимает одной минуты и не требует углубленного изучения многотомных руководств — достаточно запустить файл с немудреным названием install.pl (если точно — это скрипт на языке Perl), VMware практически все сделает сама и покажет опять же немудреное окно с минимальным набором конфигурационных средств. Определяем файл, в котором будет размещаться виртуальный НЖМД гостевой ОС, выбираем выделяемый основной ОС под «виртуальный ПК» объем физической оперативной памяти, нажимаем кнопку «виртуальный сброс» (не путать с Reset на передней панели корпуса компьютера) — и все. Это по теории. На практике получается немного иначе: то VMware не находит нужных версий различных утилит, то не хватает дискового пространства (это возможно даже при заполненном всего на 20% трехгигабайтовом диске из-за так называемого механизма квотирования дискового пространства, принятого в Unix). Короче говоря, не следует подкупаться простотой установки, а необходимо тщательно проанализировать все требования VMware и соответствие им вашей системы («когда никакие методы не помогают, надо прочитать документацию»).

После инсталляции следует забыть на некоторое время о существовании основной ОС и относиться к окну vmware как к новенькому ПК. Установите инсталляционный CD с требуемой ОС (MS Windows 95/98/NT/2000, FreeBSD/Linux/ Solaris) и при необходимости — загрузочную дискету (если CD гостевой ОС загрузочный, дискета не нужна), «включите питание» виртуального ПК кнопкой в окне VMware — и дальше в соответствии с рекомендациями по установке настоящей гостевой ОС.

Советы пользователям MS Windows, мечтающим получить доступ к Unix непосредственно в окне Windows, абсолютно аналогичны. Единственное условие — основной ОС может быть толь ко Windows NT.

Также общей для двух основных платформ является невозможность установки в «гостевом» режиме BeOS — в результате ваша машина гарантированно и безболезненно «погибнет», требуя реинсталляции основной ОС со всеми вытекающими отсюда последствиями.

Круг приложений, выполняющихся под гостевой ОС, обширен, но не безграничен. В гостевом Unix-клоне можно запускать практически любые Unix-задачи (за исключением абсолютно «нечестных», пытающихся напрямую обращаться к «железу» на низком уровне, слава Богу, что таких программ очень мало и они никакой ценности не представляют). В том случае, если гостевая ОС — MS Windows и установили вы ее для игровых приложений, разочарование последует незамедлительно. Большинство игр широко применяют указанные выше «нечестные» методы при работе с видеоподсистемой ПК, что непременно вызовет крах VMware. Игры, использующие только возможности Windows, работать будут, но скорость их исполнения превратит игру в занятие для убежденных мазохистов. Несмотря на такие ограничения, MS Word 7.0 успешно работал на машине класса «завтра» (см. выше), а установка Windows 95 также безболезненно осуществилась на ПК «вчера» (правда, кроме нажимания кнопок примитивного калькулятора, чтолибо сделать было просто невозможно).

Ранняя пташка

Время VMware еще не пришло: несмотря на работоспособность и достаточную надежность программы, возможности сегодняшних настольных компьютеров х86 еще не позволяют в полной мере ощутить всю прелесть технологии «виртуального ПК».

Компания VMware подробно рассказывает на сайте www.vmware.corn о перспективах применения своей технологии, но умалчивает об одном очень важном моменте... Как известно, чудо-процессор Merced уже «не за горами». Несомненно, раньше него выйдет очень производительный (по крайней мере, согласно обещаниям) AMD-K7. Ни тот ни другой не нацелены на рынок настольных систем. Мощность их явно избыточна для деловых приложений. Но если на сервере с процессором Merced установить комбинацию Linux + VMware (к моменту появления Merced компания VMware, безусловно, успеет подготовить соответствующую версию), а под ней запустить несколько различных гостевых ОС, то можно получить отличный сервер приложений с поддержкой тонкихХ-клиентов ( VMware использует ДВП X-Window) и одновременным доступом к приложениям практически всех основных ОС платформы х86 (MS Windows, Unix). Причем «безболезненная» миграция уже разработанного ПО на такую уникальную «виртуальную серверную платформу» гарантирована. Если компания VMware действительно работает с таким дальним прицелом, то в ближайшие несколько лет мы о ней обязательно услышим... По крайней мере, при цене $290 VMware может нанести сильнейший удар по ближайшим конкурентам в этом секторе — серверам приложений Insignia Solution NTRIGUE, Citrix WinFrame и многим коммерческим версиям Unix.