Это зависит от вашего программного обеспечения для виртуализации. В основном у вас есть три варианта:
- Эмулируйте весь компьютер, включая процессор.
- Запустите программное обеспечение как есть, используя аппаратное обеспечение хоста, но перехватите несколько системных вызовов и инструкций.
- Измените программное обеспечение так, чтобы оно работало на оборудовании хостов, но инструкции, которые были бы перехвачены 2), теперь заменены другими процедурами.
Все три работы. Все три в использовании. Все три имеют разные характеристики производительности.
1) подражать
Это всегда будет самый медленный вариант. У него есть два преимущества:
- Вы можете эмулировать совершенно другой хост (например, эмулировать компьютеры на базе ARM на AMD64).
- Вам не нужно никакой аппаратной поддержки.
2) Перехват системных вызовов
Этот ответ в основном основан на AMD64. Современный процессор x86 имеет несколько уровней с разными разрешениями. Это так называемые кольца. Программное обеспечение VM берет на себя кольцо 0 (кольцо с наибольшим количеством разрешений) и получает право делать что угодно на компьютере. Программное обеспечение на компьютере (и хост, и виртуальные машины) этого не замечают. Используя эти права, он гарантирует, что несколько ОС не мешают друг другу.
В результате обычный код работает на полной скорости (тестирование dnetc показало около 99% скорости в виртуальной машине). Код, который выполняет системные вызовы, перехватывается и изменяется, и, следовательно, работает намного медленнее. Обычно чистым результатом этого является потеря скорости на несколько процентов.
3) Модифицированный код
Вместо перехвата системных вызовов в режиме реального времени вы можете заранее изменить программное обеспечение. Таким образом, ваш код может быть немного быстрее, но вам нужно заранее изменить программное обеспечение.
Especially I am talking about QEMU and virtualbox, how are they?
У меня есть друг, который является программистом. Она посмотрела на код QEMU. Рекомендуемый совет - не трогать его. Когда-либо. Даже с 10-футовым шестом. QEMU работает с готовой конфигурацией, но часто выходит из строя, если вы не используете настройки по умолчанию. Он распределяет ресурсы и никогда не проверяет, удалось ли это ... Я мог бы продолжать, но чем меньше упомянуто, тем лучше.
Virtualbox: я использовал virtualbox один раз. Это сработало. Версия для Windows имела приятный понятный интерфейс. Я не проверял ни производительности, ни игр.
Will it run games without problems?
Единственные игры, которые я запускаю, находятся под Vmware (игроком). Это сработало достаточно для 2D игр. 3D-игры обычно ломают мой компьютер (как Vm, так и хост).