Computerworld, США

Есть несколько вариантов реализации промежуточного ПО

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

Если между ОС и вычислительной системой присутствует еще один программный уровень, тогда ОС получает только ту информацию, которую этот промежуточный уровень ей предоставляет. И сведения о ресурсах и возможностях используемого аппаратного обеспечения будут зависеть от этого промежуточного программного уровня. Операционная система может контролировать нижележащее оборудование только в той мере, в какой ему позволяет этот промежуточный уровень.

Промежуточный программный уровень может сообщить ОС все, что ему известно об аппаратном обеспечении, и просто передавать управляющие директивы без каких-либо изменений. Но возможно и иное решение: промежуточный уровень может не сообщать ОС все данные об имеющемся оборудовании и до определенной степени менять управляющие директивы, передаваемые ОС.

Конечно, существуют разнообразные устройства и интерфейсы, которые добавляют свои нюансы и сложности в вычислительную среду. Но использование программного уровня для формирования набора вычислительных ресурсов и правил работы и составляют основу так называемой виртуальной машины.

Виртуальная машина — это вычислительная среда, набор ресурсов и правил работы которой формируется (с помощью программного обеспечения) в некой другой вычислительной среде.

Виртуальная машина — гипервизор

Виртуальные машины являются основой таких технологий, как ESX Server компании VMware и свободно распространяемый монитор виртуальной машины Xen. Оба продукта представляют собой серверы, в которых используется одновременно несколько операционных систем, ориентированных на архитектуру x86. Подходы, реализованные в этих продуктах, — разновидности того, что называют виртуальными машинами для аппаратного уровня, для «голого железа» или виртуальными машинами типа гипервизор. Промежуточный программный уровень (называемый монитором виртуальной машины или гипервизором) размещается между ОС и аппаратным обеспечением. Благодаря гипервизору у всех работающих на данном компьютере операционных систем создается иллюзия, что каждая из них является единственной.

Использование нескольких операционных систем на одной серверной платформе дает целый ряд преимуществ. В этом случае можно полностью задействовать ресурсы очень мощных серверов, обеспечить обратную совместимость для унаследованных программ и распределить приложения между несколькими ОС таким образом, чтобы они не создавали помех друг другу.

VMware использует прозрачную виртуализацию, что значит отсутствие необходимости менять операционные системы, работающие на гипервизоре. Xen использует «паравиртуализацию», то есть требует изменения операционных систем таким образом, чтобы они могли одновременно работать на одном и том же аппаратном обеспечении. По мнению специалистов Xen, паравиртуализация увеличивает скорость и повышает эффективность работы.

Хостовые виртуальные машины

Microsoft Virtual PC и GSX Server и GSX Workstation компании VMware называют хостовыми виртуальными машинами. В этих продуктах виртуальная машина, как и другие приложения, работает в операционной системе. Приложение виртуальной машины разделяется на промежуточный программный уровень, операционную систему и приложение, работающее в этой ОС.

Такая схема менее эффективна и предлагает не столь широкие возможности, как схема, применяемая в серверах с гипервизором, но дает свои преимущества, позволяя работать с унаследованными программами и отделять приложения от остальной системы. Пользователь, который хочет посетить потенциально опасные Web-сайты, например, может усилить защиту на время своей работы в Web за счет применения виртуальной машины.

Виртуальные машины уровня приложений

Виртуальные машины уровня приложений, такие как виртуальная машина Java, работают как приложения, что роднит их с решениями, поддерживающими хостовую модель. Такие виртуальные машины, однако, сочетают в себе промежуточный программный уровень с операционной системой. Виртуальная машина Java выполняется как приложение в исходной среде, а приложения Java работают уже на виртуальной машине.

Как утверждается, одно из преимуществ такой парадигмы программирования состоит в том, что программа на Java будет работать в любой виртуальной машине Java без перекомпиляции. И в этом случае только от поставщика зависит, сможет ли виртуальная машина Java работать с несколькими исходными операционными системами.

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

Параллельная виртуальная машина — это несколько иной подход к созданию виртуальной машины. В этом случае промежуточный программный уровень имеет вид программного демона, или серверной программы, которая наряду с набором библиотечных вызовов должна быть скомпилирована в приложение, предназначенное для работы на параллельной виртуальной машине. Библиотечные вызовы, которые предполагают обращение к серверным программам, позволяют представлять сеть компьютеров как один компьютер с параллельными процессорами.

Как говорится, вы можете заставить программу делать все что угодно. Правда, не всегда такая программа будет работать быстро и эффективно. Но до тех пор, пока существует промежуточный программный уровень, будет существовать и виртуализация.