» Виртуальные машины и эмуляторы. Часть 1 : Берлога инженера - бесплатные программы - стереофото - справочные материалы - обои для рабочего стола


Виртуальные машины и эмуляторы. Часть 1

Зачем виртуализировать какое-то “железо” или ОС? Я могу назвать две большие причины. Первая — использование одной аппаратной платформы несколькими ОС (используется у хостеров). Вторая — разработка и отладка. Давайте немного поговорим о виртуальных машинах, познакомимся с их обзорами и сравнениями…

Можно выделить целый ряд “полезностей” применения виртуальных машин:

  • Виртуальные машины позволяют быстро (не прибегая к реальной аппаратуре) менять конфигурацию аппаратных средств и выполнять на ней требуемый код. Я бы назвал это универсальностью и многовариантностью.
  • Вы можете на одном реальном компьютере запустить сразу несколько ОС в различных виртуальных пространствах. Эти ОС не будут (иногда) даже знать о том, что работают не на “железе”, а в программе, которая этот процессор и всё его окружающее “железо” эмулирует. Таким образом, виртуальная машина обеспечивает независимость и изолированность.
  • Зависла программа, “упала” ОС, работающая в одном из виртуальных пространств — не беда. Другие-то продолжают работать! В целом ряде случаев виртуальная машина обеспечивает устойчивость.
  • Виртуальная машина бывает гораздо дешевле реальной. Вы можете разрабатывать какую-то аппаратно-программную платформу. И пока создаётся аппаратная честь, можно уже начать писать программы, запускать ОС в эмуляторе, оценивать производительность, пытаться даже подбирать конфигурацию. Таким образом, виртуальные машины повышают рентабельность процесса разработки, увеличивают его скорость.
  • Даже загрузка программы или ОС в эмулятор чаще происходит быстрее, чем в реальное “железо”, что очень удобно при написании ПО, при отладке. Кстати, о последнем. Некоторые виртуальные средства позволяют отлаживать код, тогда как отладка на реальных системах иногда невозможна или может потребовать дополнений в схему (JTAG, например), что удорожит разработку и будет совершенно не нужно в серийном образце, и/или приобретения отладочного ПО и оборудования. Таким образом, виртуальная машина увеличивает эффективность разработки.

Чтобы получше разобраться в типах виртуальных машин, советую прочесть статью Тима Джонса Виртуальный Linux. Тим Джонс разделяет виртуальные машины на несколько классов. Выделю три из них:

  1. С эмуляцией оборудования. Это когда эмулятор выполняет код как интерпретатор. Это самая медленная эмуляция. Но она имеет одно важное преимущество — выполнение кода любой платформы под любой платформой (как программной так и аппаратной). То есть вы можете эмулировать ARM под x86, или DOS на x86 под Windiws® CE на ARM, или uLinux на Blackfin под Windows® на x86 и так далее. Да, медленно, но зато таким и только таким образом (эмуляцией оборудования) можно эмулировать любую платформу на любой платформе (иногда совершенно концептуально различные).
  2. Полная виртуализация. В этом случае на одной машине могут работать несколько ОС, работой которых управляет гипервизор. ОС совершенно “не чувствуют” присутствия на машине других ОС. Это достигается аппаратными средствами (современные процессоры x86 имеют в своём составе команды и средства, предназначенные для виртуализации; без них полная виртуализация была бы невозможной).
    Плюс полной виртуализации в том, что ОС работают быстро, так как (практически) не происходит интерпретации кода — код выполняется непосредственно процессором (практически) без модификации. Способом полной виртуализации можно запустить на машине любую (любые) ОС, которые поддерживают данную платформу. Но минус этой концепции в том, что невозможно таким образом (в принципе невозможно) запустить на машине эмуляцию аппаратной платформы, отличной от родительской (напрмер, запустить Windows® CE на ARM под x86).
  3. Паравиртуализация. В этом случае гостевую ОС модифицируют под конкретный гипервизор. То есть гостевая ОС “знает”, что виртуализирована и что на машине может работать ещё несколько таких ОС. Всё это делается для того, чтобы избежать модификации кода на лету, ускорить вызовы и переключения.
    Основным достоинством такой концепции является скорость работы гостевых ОС и приложений в них. Она максимальна. Гипервизор тратит на себя не так много ресурсов, как в случае с полной виртуализацией. Основной минус — потеря гибкости (”незаточенную” гостевую ОС в такой системе уже не запустишь).

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

Как пример можно привести известные виртуальные машины и эмуляторы, перечисленные в Сравнении виртуальных машин. Обратите внимание на то, что есть и русский вариант этой статьи, но он пока менее информативен. В колонке “Принцип действия” нет “чистых записей” “эмуляция оборудования” или “паравиртуализация”. Всё с какими-то оговорками… В этом и есть прелесть всей картины — каждый её элемент чем-то отличается от остальных и имеет свои преимущества.

В заключение приведу несколько ссылок на интересные ресурсы/продукты.

Виртуализация при помощи coLinux. По сути coLinux — способ запускать приложения Linux под Windows. coLinux — порт ядра Linux, делающий его одновременно паравиртуализированной системой и гипервизором, который отправляет запросы не оборудованию, а родительской системе — Windows®.

Cisco 7200 Simulator. Это эмулятор Циско на ПК. Позволяет, фактически, превратить ваш компьютер в маршрутизатор известного производителя. Однако для работы нужны загрузочные образы Cisco IOS. Также поддерживаются “Cisco 3600 series (3620, 3640 and 3660), 3700 series (3725, 3745) and 2600 series (2610 to 2650XM, 2691)”. Здесь ветка форума, посвящённая этому эмулятору.

Кое-что можно почерпнуть (или поделиться своими впечатлениями и переживаниями) на Нашем форуме. В его отдельной ветке Эмуляторы, симуляторы и прочее…

 Рекомендуйте на news2.ru     Занесите в del.icio.us

Читайте также:
Виртуальные машины и эмуляторы. Часть 3, серьёзная и не очень
Виртуальные машины и эмуляторы. Часть 2, про направления и перспективы
Как похудеть, и при этом продолжать есть (часть 1)
Занятия спортом, или про то, как похудеть (Часть 2)
Про то, как правильно есть и худеть (Часть 3)





4 комментария to “Виртуальные машины и эмуляторы. Часть 1”

  1. Алексей :

    Лично я иногда скучаю по синклеру с 48кб оперативки… Самый полезный симулятор на моей памяти - симулятор мобилок для тестирования java-игр.

  2. Alex :

    Спасибо за ссылки. Поставил себе VirtualBox - впечатления весьма приятные. Запустил из под него gOS ради попробовать и то и другое. Тормозов особых нет, все нормально работает. gOS в топку, сырая вещь (или так скажем - не для России), а VB оставлю, есть и другие кандидаты для проверки.

  3. Alex :

    На текущий момент под VirtualBox поставил:
    Win98 - не пашет
    WinTN - не пашет
    Win2000 - работает на ура
    Linux Mandriva - работает на ура

    Сделал виртуальную сетку из виртуальных машин :) - чтобы поработать с различным софтом для VNC

  4. Yuri :

    To Alex:
    Я тоже ставил 98, установка заняла много времени и потом всё очень сильно тормозило. Оказалось, Virtualbox не оптимизирован под win98. А вот на VMWARE server 98 установился быстро и потом работал довольно шустро.

Оставить комментарий