Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
История операционных систем.docx
Скачиваний:
2
Добавлен:
25.11.2019
Размер:
864.34 Кб
Скачать

Виртуальная машина (вм, от англ. Virtual machine) —

  • программная и/или аппаратная система, эмулирующая аппаратное обеспечение некоторой платформы (target — целевая, или гостевая платформа) и исполняющая программы для target-платформы на host-платформе (host — хост-платформа, платформа-хозяин)

  • или виртуализирующая некоторую платформу и создающая на ней среды, изолирующие друг от друга программы и даже операционные системы (см.: песочница);

  • также спецификация некоторой вычислительной среды (например: «виртуальная машина языка программирования Си»).

Виртуальная машина исполняет некоторый машинно-независимый код (например, байт-код, шитый код, p-код) или машинный код реального процессора. Помимо процессора, ВМ может эмулировать работу как отдельных компонентов аппаратного обеспечения, так и целого реального компьютера (включая BIOS, оперативную память, жёсткий диск и другие периферийные устройства). В последнем случае в ВМ, как и на реальный компьютер, можно устанавливать операционные системы (например, Windows можно запускать в виртуальной машине под Linux или наоборот). На одном компьютере может функционировать несколько виртуальных машин (это может использоваться для имитации нескольких серверов на одном реальном сервере с целью оптимизации использования ресурсов сервера).

Теория

Концепция виртуальной машины как совокупности ресурсов, которые эмулируют поведение реальной машины, появилась в Кембридже в конце 1960-х годов как расширение концепции виртуальной памяти манчестерской вычислительной машины Atlas (англ.).[1] В целомвычислительный процесс определяется в рамках этой концепции содержимым того рабочего пространства памяти, к которому он имеет доступ. При условии, что конкретная ситуация в этом рабочем пространстве соответствует ожидаемой, процесс не имеет никаких средств для определения того, является ли представленный ему ресурс действительно физическим ресурсом этого типа, или же он имитируется действиями других ресурсов, которые приводят к аналогичным изменениям содержимого рабочего пространства процесса.

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

Идея виртуальной машины лежит в основе целого ряда операционных систем, в частности, IBM VM/CMS (и её советского клона СВМ) и DEC VAX/VMS.

Задачи виртуальных машин

Виртуальные машины могут использоваться для:

  • защиты информации и ограничения возможностей программ (см.: песочница);

  • исследования производительности ПО или новой компьютерной архитектуры;

  • эмуляции различных архитектур (например, эмулятор игровой приставки);

  • оптимизации использования ресурсов мейнфреймов и прочих мощных компьютеров (см., например: IBM eServer);

  • вредоносного кода для управления инфицированной системой: вирус PMBS, обнаруженный в 1993 году, а также руткит SubVirt, созданный в 2006 году в Microsoft Research, создавали виртуальную систему, которой ограничивался пользователь и все защитные программы (антивирусы и прочие).[2]

  • моделирования информационных систем с клиент-серверной архитектурой на одной ЭВМ (эмуляция компьютерной сети с помощью нескольких виртуальных машин).

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

  • тестирования и отладки системного программного обеспечения;

Известные виртуальные машины

Некоторые известные виртуальные машины:

  • bochs

  • DOSBox

  • Virtual PC

  • Parallels Workstation

  • QEMU

  • VirtualBox

  • VMware Fusion

  • VMware Workstation

Плюсы и минусы

VirtualBox

 Режим масштабирования. Очень полезная функция, когда в виртуальной машине работаешь в терминале. При изменении размеров окна VirtualBox окно терминала тоже будет развернуто по размеру окна VirtualBox. VMware оставит его размер "как есть". 2. Настройка сети. В VMware Player я не могу отключить DHCP для виртуального адаптера или настроить диапазон адресов. Может, конечно, это можно сделать правкой конфигурационных файлов, но я не нашел такого файла (и конечно, все это есть в платной версии Workstation). 3. Снимки. В Vmware Player их нет. Ограничения версии. 4. Захват ввода клавиатуры. Маленькая, но удобная функция. Когда окно VirtualBox активно, ввод клавиатуры автоматически захватывается и отправляется в виртуальную машину. В VMware Player для этого обязательно надо передать контроль виртуальной машине самостоятельно. И так каждый раз, когда мне нужно переключиться из хостовой системы в гостевую. Неудобно.

Базовая версия полностью открыта по лицензии GNU GPL, соответственно нет ограничений в использовании. Пакет дополнений содержит закрытые компоненты и распространяется под проприетарной лицензией PUEL: RDP сервер — позволяет подключаться к виртуальной системе удалённо с помощью любого RDP совместимого клиента; Поддержка USB — позволяет передавать виртуальной машине USB устройства; Intel PXE boot ROM — загрузка операционной системы по сети. Используется для создания тонких клиентов/бездисковых рабочих станций.

VirtualBox плохо совместима с Windows 95Windows 98Windows MEWindows 2000 и Windows XP (система медленно работает)[8] и Mac OS X (звук работает на один канал и с перебоями)

VMware

Поддержка 3D. В VMware она объективно лучше. Не идеал, но ничего лучше сейчас просто нет (работу 3D в Parallels я не видел, да она и не бесплатна). Ролики с работой Quake 3, Doom 3 и UT2004 в Vmware Player я уже выкладывал: 

2. Физические жесткие диски. Насколько мне известно, VirtualBox тоже позволяет подключить физический жесткий диск к виртуальной машине, но в VMware это сделано гораздо удобнее прямо из меню программы.

Актуальная на текущий момент версия Oracle VM VirtualBox 4.x — первый крупный релиз, выпущенный под эгидой Oracle с момента приобретения ею Sun Microsystems. Нельзя сказать, что в нем произошли какие-то кардинальные изменения, касающиеся базовой функциональности, хотя среди прочего был расширен список доступного виртуального оборудования, улучшены управление вычислительными ресурсами и поддержка формата OVF и операций с виртуальными жесткими дисками. Главное же в этом релизе — переработка графического интерфейса и изменение внутренней архитектуры программы с тем, чтобы вынести «закрытые» блоки функциональности в подключаемые модули, так называемые Extension Packs, вместо того чтобы создавать ради них отдельные редакции, как это было прежде. Соответственно, упомянутые выше поддержка USB 2.0 и VRDP реализованы Oracle именно в таком модуле, распространяемом по специальной лицензии VirtualBox Personal Use and Evaluation License. Вполне возможно, что какие-то дополнения предложат и сторонние разработчики.

Рис. 1. Обновленный графический интерфейс — визитная карточка Oracle VM VirtualBox 4

Также обращает на себя внимание, что с момента выпуска версии Oracle VM VirtualBox 4.0 уже появились два официальных обновления — 4.0.2 и 4.0.4. С одной стороны, это вроде бы является признаком небезразличия Oracle к данному проекту, но с другой, свидетельствует и об определенной «сырости» ПО. Действительно, Oracle VM VirtualBox отличается некоторой нестабильностью и многочисленными нюансами, часть из которых, впрочем, честно отмечена в документации. В значительной степени это является следствием сложности ПО, тем более что разработчики стараются максимально учесть возможные ситуации и обеспечить самую широкую поддержку операционных систем (как хоста, так и гостевых). Так, Oracle VM VirtualBox может обеспечивать виртуализацию в чисто программном режиме или задействовав аппаратную поддержку в современных процессорах (для решения некоторых задач она необходима), применяет дизассемблирование кода гостевых ОС и ряд других изощренных технических приемов, комбинируя их по мере надобности. Поэтому надо иметь в виду, что применению Oracle VM VirtualBox с более-менее серьезными целями должен, безусловно, предшествовать этап тщательного тестирования.

Тем не менее разработчики Oracle VM VirtualBox постарались максимально оградить своих пользователей от возможных проблем и необходимости разбираться с техническими подробностями. В большинстве случаев достаточно соглашаться с предложенными по умолчанию настройками, регулируя лишь самые необходимые и очевидные из них, скажем, объем оперативной памяти. При этом программа в определенной степени будет контролировать корректность выбранных параметров и при необходимости вносить поправки или выдавать соответствующие предупреждения. Не случайно также все наиболее тонкие настройки и действия могут быть выполнены исключительно из командной строки, что, конечно, требует от пользователя определенного понимания происходящего.

ИСПОЛЬЗОВАНИЕ

Рис. 2. При инсталляции Oracle VM VirtualBox 4 можно смело оставлять все компоненты

Развертывание Oracle VM VirtualBox в Windows (на примере Windows 7) проходит достаточно быстро и просто, пользователь может несколько скорректировать состав установки, в чем, впрочем, совершенно нет необходимости — на самом деле, все предлагаемые компоненты могут действительно пригодиться в процессе эксплуатации, за исключением разве что поддержки Python (необходимой для управления ПО посредством скриптов). При этом инсталлируются несколько системных драйверов, о чем операционная система выдаст соответствующие предупреждения. Перезагрузки не потребуется. Сразу же имеет смысл установить стандартный Extension Pack — даже если вам не нужны средства удаленного управления (по умолчанию они остаются отключенными), расширенная поддержка USB наверняка не будет лишней. Процедура развертывания Oracle VM VirtualBox в других операционных системах может иметь свои особенности и требовать дополнительных действий, к примеру, проверку наличия необходимых пакетов в случае Linux.

Рис. 3. Подобная предупредительность делает честь разработчикам и проявляется довольно часто

 

Рис. 4. Extension Pack от Oracle — безусловно, полезный компонент, который стоит установить сразу же после Oracle VM VirtualBox

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

Рис. 5. Широкая поддержка гостевых ОС — сильная сторона Oracle VM VirtualBox. Ubuntu 10.10 после обновлений будет полностью готова к работе в ВМ и установке дополнений гостевой машины

Также в большинстве случаев имеет смысл согласиться и с выбором по умолчанию виртуального дискового контроллера. Для современных гостевых ОС обычно предлагается IDE для привода оптических дисков и SATA в режиме AHCI для жестких дисков. По утверждению самих разработчиков, использование SCSI или SAS выигрыша в производительности не дает, так что эти варианты пригодятся разве что в каких-то специальных ситуациях. Аналогично вполне разумным выбором представляется динамически расширяемый виртуальный диск, указание фиксированного размера обычно дает незначительный выигрыш в производительности, но сразу отнимает дисковое пространство хоста. Естественно, необходимо предоставить достаточно пространства для роста файлов-образов и контролировать их фрагментацию. Oracle VM VirtualBox также допускает использование iSCSI-таргетов или локальных физических жестких дисков/разделов. Выгоды от последнего варианта не вполне очевидны, так как его выбор исключает механизмы кэширования ОС хоста, влияние чего на общую производительность трудно предсказуемо.

Рис. 6. Если планируется интенсивная сетевая работа ВМ, имеет смысл поэкспериментировать с сетевым интерфейсом, в частности испытать virtio-net

Более серьезно на данном этапе стоит задуматься разве что о настройке сетевого интерфейса. В частности, интересным вариантом представляется выбор паравиртуализационного сетевого адаптера virtio-net из проекта KVM (драйверы имеются и для Windows), который не имитирует реальное оборудование, а представляет собой достаточно простой интерфейс непосредственно к управляющему гипервизору. Традиционно паравиртуализационный подход сулит рост быстродействия, так что и в данном случае можно ожидать повышения скорости сетевого взаимодействия. Кроме того, нужно обратить внимание на метод организации виртуальной сети. Предлагаемый по умолчанию NAT не позволит использовать ВМ в локальной сети и имеет ряд других ограничений, избавиться от которых поможет Сетевой мост. При отсутствии необходимости выхода ВМ во внешнюю сеть можно также выбрать Внутреннюю сеть (коммуникации будут возможны только между ВМ) или Виртуальную сеть в рамках хоста.

После настройки параметров ВМ достаточно запустить установку гостевой ОС, к примеру, подключив привод физического компьютера или ISO-образ с дистрибутивом. По сути процедура ничем не отличается от установки на физический компьютер и занимает, в общем, соизмеримое время.

Рис. 7. Настройки виртуального дисплея одни из самых интересных. Здесь включается аппаратное ускорение графики, а на вкладке Удаленный дисплей активируется VDRP

Свободное программное обеспечение

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

В настоящее время одним из наиболее популярных вариантов лицензирования является свободная лицензия General Public License (GNU), по условиям которой программные продукты, полученные в результате изменений исходного кода, обязаны наследовать принципы свободного программного обеспечения, т.е. предоставляться последующим пользователям так же с открытым кодом. Это правило распространяется так же на любые программы, в которых какая-либо часть использует свободный код по лицензии GNU. При этом не стоит смешивать понятия свободного и бесплатного программного обеспечения, так как в их основах лежат различные механизмы распространения. В случае с бесплатным программным обеспечением пользователям даруется право безвозмездного использования готовых программ, однако предоставления открытого исходного кода при этом может и не быть. Свободное ПО, наоборот, предоставляя пользователю свой исходный код и право на его изменение, вовсе не подразумевает отсутствие финансовых затрат на его приобретение, т.е. может распространяться за деньги. Материальная ценность программного обеспечения, равно как любого другого товаров или услуги, обуславливается вложением в его производство финансовых средств, времени и сил, однако, в отличие от большинства иных продуктов, возможность создавать неограниченное число копий, не затрачивая на это дополнительные ресурсы, позволяют огромному количеству пользователей использовать однажды разработанную программу. Вполне естественно, что многие разработчики не соглашаются свободно распространять свою продукцию вместо того, чтобы получать с нее прибыль и поэтому не позволяют вмешиваться в ее исходный код. Программное обеспечение, условия распространения которого не дают пользователям прав вмешиваться в исходный код и накладывают еще некоторые ограничения, называется проприетарным.

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

В качестве примеров свободного программного обеспечения можно привести наиболее известные, уже доказавшие свое качество программные продукты, которые являются серьезными конкурентами продуктов многих крупных компаний – разработчиков. Это семейство операционных систем Linux и разнообразные программы для них, веб-сервер Apache, графический редактор Gimp, пакет офисных приложений OpenOffice и многие программы для Windows.

Автономные эмуляторы компьютеров

  • bochs

  • DOSBox

  • Virtual PC

  • Parallels Workstation

  • QEMU

  • VirtualBox

  • VMware Fusion

  • VMware Workstation