Я очень много добавил к своему ответу ниже, но я сохранил свой первоначальный ответ без изменений для справки.
TL: DR: Виртуальные машины - это инструмент, и хотя они предоставляют простую возможность использовать одну ОС в другой, вы должны очень хорошо знать, каким будет ваше основное предназначение компьютера, чтобы полностью использовать систему. ,
Ваш вопрос, похоже, сильно склонен к графическим возможностям и возможностям производительности интерфейса при использовании виртуальной машины, и поэтому я отвечу относительно возможностей там.
Основная проблема заключается в том, что для безопасного управления доступом гостевых операционных систем к устройствам (и, таким образом, для предотвращения того, чтобы гостевая ОС топчется на хосте и ломается) все устройства, которые вы хотите использовать, должны быть "эмулированы".
Это означает, что графическая карта, которую может видеть ваша гостевая ОС, не та же графическая карта, которую видит ваша операционная система. Возможно, вы сможете включить такие функции, как 3D-рендеринг в гостевой системе, но это обрабатывается промежуточным драйвером в вашей гостевой системе, который безопасным образом передает запросы хосту, чтобы 3D-изображение отображалось там.
Весьма сомнительно, что функции, подобные тем, которые необходимы для безопасного воспроизведения дисков blue-ray на поддерживаемом дисплее HDMI, эмулируются драйверами гостевой видеокарты, и, вероятно, это не будет работать.
В основном все, что требует аппаратной поддержки на вашем хосте, вряд ли будет работать хорошо, если вообще будет работать, у вашего гостя. Я не знаю, как работает WiDi, но если ему требуется прямой доступ к памяти вашей видеокарты, чтобы поделиться ею с телевизором, он не будет работать, если вы не используете его из операционной системы вашего хоста (Linux).
Кроме того, с точки зрения производительности, виртуальная машина может приблизиться к тому, что было бы, если бы она была основной ОС, но всегда будут штрафы с точки зрения доступа к жесткому диску или конкуренции с другими ресурсами, которые использует хост.
В начале...
В начале у нас был компьютер, который мог работать только с одной операционной системой. Эта операционная система, как правило, работала только на конкретном процессоре и другом оборудовании, которое было на машине, а другие операционные системы могли работать плохо, если вообще работали, на доступном родном оборудовании.
Чтобы люди могли использовать программное обеспечение для одной конкретной платформы на другой платформе (например, использовать программное обеспечение Pre-OSX MacOS на Commodore Amiga), требуется больше, чем просто «установка программного обеспечения». Эти две машины использовали совершенно разные процессорные архитектуры и вспомогательное оборудование. Просто одна ОС не могла работать на оборудовании другой машины.
эмуляция
Эмуляция похожа на двоюродного брата виртуализации, они на самом деле связаны и имеют схожие цели Один родил другого как бы.
Эти отличающиеся аппаратные платформы означали, что если вы хотите использовать один программный продукт из другой ОС на своем компьютере, то все о том, что эта машина должна была быть проанализирована, чтобы выяснить, как она работает, а затем был написан фрагмент кода, который функционировал так же, как аппаратная часть. Это должно было быть сделано для каждой части, процессора, графического контроллера, контроллера памяти, все ,
Затем все эти части собраны воедино, и, поскольку каждая часть эмулирует немного аппаратного обеспечения, мы назвали это эмулированная машина , Затем мы запускаем операционную систему поверх этой эмулированной машины.
Проблема в том, что этот подход медленный. Проще говоря, вам повезло, если вы смогли достичь 1/10 скорости оригинального оборудования. Вы буквально нуждались в машине в несколько раз быстрее, чем ваша целевая эмулируемая машина, чтобы запустить эмулируемый компьютер на почти полной скорости.
Так что изменилось?
Ну, вот классная вещь. Не очень на самом деле. Единственным большим изменением было то, что аппаратные платформы стандартизированы. Мы перестали получать нестандартное оборудование для каждой ОС, и все ОС перешли на единую стандартную платформу или были созданы на ней.
Компоненты, составляющие Mac в наши дни, - это в основном те же компоненты, что и ПК. Linux всегда работал на оборудовании ПК, поэтому ничего нового там нет.
Долгое время эмуляция оставалась нормой, если вы хотели запускать программное обеспечение из одной ОС в другой. Или вы можете выполнить двойную загрузку и запустить любую операционную систему так, как вам хочется, но это сделало вас болезненным и раздражающим, если вы хотите перейти от программирования в Linux к играм в Windows.
А потом..
Возникла идея, что, поскольку базовое оборудование одинаково, почему обе ОС не могут использовать его совместно?
Мы получили QEMU, WiNE и аналогичные программные решения. QEMU долгое время был фаворитом для жесткой эмуляции машин, в то время как WiNE позволяла Windows-приложениям запускаться в Linux, перехватывая и исправляя их вызовы API-интерфейса ОС и позволяя исходному коду работать на процессоре.
QEMU сделал что-то похожее на WiNE, но сделал на гораздо более низком уровне. Это по-прежнему эффективный эмулятор, но для каждого сделанного аппаратного вызова они использовали метод «исправления и перенаправления», чтобы любые вызовы переходили на собственную эмулируемую аппаратную платформу. потому что большинство работающего кода в программе на самом деле не связаны с аппаратными вызовами (большинство - это простые потоки вычислений с вызовом в конце для отображения результатов).
Это привело к мгновенному увеличению скорости почти для каждой программы в настоящее время не-очень-эмулировать машина. Программы работали с замедлением, в большей степени зависящим от того, насколько они обращались к «виртуальному» оборудованию, а не от того, насколько хорошо машина могла эмулироваться. Вместо того, чтобы работать на 1/10 скорости, они теперь работали почти с той же скоростью, как если бы они были изначально.
Итак, если мы сейчас работаем на процессоре, почему моя видеокарта не работает?
Единственная проблема с этими новыми виртуальными машинами заключается в том, что по своей природе операционная система предполагает, что она имеет прямой контроль над все аппаратное обеспечение компьютера, которое может обеспечивать такие функции, как управление памятью и контроль доступа к оборудованию.
Однако это означает, что виртуальные машины не могут полностью уйти от эмуляции, по крайней мере, в методе. Им по-прежнему необходимо эмулировать определенные функции в программном обеспечении, например, графическую карту или сетевую карту, которые должны быть представлены ОС, работающей на виртуальной машине, чтобы операционная система «Гость» считала, что она имеет полный контроль этого оборудования. Основная ОС (по требованиям безопасности) должна защищать себя от программ, напрямую обращающихся к оборудованию, и это накладывает ограничения на гостевую операционную систему.
Чтобы сделать это, они должны эмулировать «виртуальные» части оборудования для всего на компьютере. Весь код теперь выполняется непосредственно процессором, поэтому он не медленный, но каждый из этих кусков виртуального оборудования должен быть написан программно, что влечет за собой как небольшое снижение производительности, так и потенциально большое ухудшение функциональности. ,
Это означает, что ваша виртуальная видеокарта не может и не будет иметь те же функции, что и ваша реальный видеокарта. Чтобы добиться максимальной производительности, виртуальное оборудование может быть написано для поддержки наиболее часто используемых функций, а 3D-рендеринг теперь возможен на виртуальной машине, но он по-прежнему отличается от реального оборудования.
Это означает, что операционная система хоста получает лучшие аппаратные опции, а гостевая операционная система общий варианты оборудования.
Виртуальная машина не так хороша, как реальное оборудование, это всего лишь инструмент, облегчающий работу с инструментами из одной системы в другую.
Так что мне делать?
Вы должны выбрать то, что вы хотите, чтобы основная цель вашего компьютера.
Если вы хотите играть в новейшие игры на своей мощной видеокарте и использовать те же мощные видеокарты для воспроизведения фильмов в формате 1080p на своем телевизоре с диагональю 400 "HDMI, но только иногда хотите заняться программированием для Linux, то Windows может быть лучшим выбором с Linux в качестве гостя.
Если вы хотите работать с ядром Linux, создавать аппаратные драйверы для устройств на вашем компьютере, а иногда писать какое-то программное обеспечение для Windows и тестировать его на хорошем приближении к «стандартной» системе Windows, то, возможно, вам лучше с Linux в качестве хоста и Windows в качестве гостя.
Если вам нравится простота использования Mac, но вы хотите программировать для Windows (или вам нужен программный пакет, предназначенный только для Windows), то это тоже вариант.
Я не говорю, что Linux не может играть в игры, или что MacOS не для программистов, поскольку это было бы просто ложью. Просто один человек, который может сказать, какая ОС может быть более подходящей для того, что вы хотите сделать, это вы ,
Вы действительно должны понимать, что вы хотите, чтобы ваша машина делала первый , Только тогда вы сможете понять, что виртуальная машина может сделать для вас.
Чтобы ответить на ваши вопросы:
Will the graphics and video rendering quality will be just as good?
Нет. Эмулируемая графическая карта может обеспечивать некоторые функции графической карты хоста, но, вероятно, она не будет поддерживать сложные функции, такие как аппаратное ускорение видео или функции программирования CUDA.
Will there be any hardware issue such as using HDMI or WiDi?
Опять же, эти дополнительные функции, скорее всего, не будут характерны для любого доступного эмулируемого / виртуального оборудования.
Will applications run just as smoothly as long as enough RAM is allocated?
Большинство приложений (если они не требуют определенных аппаратных функций) около так же быстро, как и на реальном оборудовании, при условии, что вы не будете голодать ни у хоста, ни у гостя памяти.