Я очень много добавил к своему ответу ниже, но я сохранил свой первоначальный ответ без изменений для справки.
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?
Большинство приложений (если они не требуют определенных аппаратных функций) около так же быстро, как и на реальном оборудовании, при условии, что вы не будете голодать ни у хоста, ни у гостя памяти.
Виртуальные машины (ВМ) всегда работают медленнее, чем хост-система, потому что гостевая система должна запросить хост для взаимодействия с аппаратным обеспечением, таким как ваша видеокарта, жесткие диски, память и т. Д., Потому что это программа, работающая в хост-системе не имеет прямого контроля над оборудованием. Однако, если ваше оборудование может справиться с этим, медлительность может быть не слишком заметна.
Причина этого в том, что процессор может выполнять только одну инструкцию за раз. Программы обычно состоят из тысяч или миллионов машинных инструкций. Когда машина запускается, она сканирует основную загрузочную запись (MBR) на наличие загрузчика. Затем загрузчик запускает ядро. Ядро является основным процессом, который контролирует все оборудование. Многозадачность, которая заключается в переключении между несколькими задачами, позволяет нам запускать более одной программы одновременно, даже если в данный момент выполняется только одна программа. Большинство процессоров тратят только около 20% своего времени на выполнение математических вычислений. Многоядерные процессоры позволяют извлекать следующую инструкцию, ожидая, пока другое ядро выполнит математику, уменьшая время простоя и значительно ускоряя систему. В дополнение к ядру есть оболочка (которая обеспечивает интерфейс для пользователей), службы / демоны (процессы, которые выполняются в фоновом режиме, например, для поддержки системы, безопасности и т. Д.) И приложения.
Программное обеспечение для виртуализации - это приложение, которое, как и любое другое приложение, управляется ядром. Таким образом, ядро виртуальной машины должно ждать разрешения от ядра хоста, чтобы сделать что-либо, и будет часто прерываться. Чем больше процессов запущено в хост-системе, тем меньше времени выполнения будет выделено для ВМ, что замедляет работу. Виртуальные машины обычно работают в три-четыре раза медленнее, чем физические машины.
Если вы собираетесь запускать игры или что-то подобное, я бы выделил много оперативной памяти и как можно больше времени на ядро. Несколько процессоров помогают. Однако выделение слишком большого объема ОЗУ замедлит работу системы, поскольку это займет больше времени для доступа к данным и может вызвать чрезмерное кэширование жесткого диска в хост-системе. Но с другой стороны, слишком мало будет вызывать чрезмерное количество кэширования жесткого диска на гостевой. Поскольку Windows так жаждет ресурсов, я бы выделил как минимум от 2 до 4 ГБ ОЗУ, но не выделять более половины вашей ОЗУ для ВМ.
Если он реагирует слишком медленно, лучшим вариантом может быть двойная загрузка. Таким образом, оба смогут полностью использовать системные ресурсы, но, к сожалению, вы можете запускать только по одному за раз. Если вы сделаете это, вам, вероятно, понадобится как минимум три раздела: один для Linux, один для Windows и один (или более) для ваших файлов.
источник
Так. VMWare Player - это гипервизор типа 2. Это означает, что гость сидит поверх ОС. На гипервизоре типа 1 платформа виртуализации располагается над оборудованием. Именно потому, что VMWare Player находится на гипервизоре типа 2, он будет работать медленнее, чем что-либо на типе 1. Однако VMWare Player предлагает возможность настроить требования к оборудованию для вашей виртуальной машины. Так что если у вас есть система с четырехъядерным процессором с 4 ГБ оперативной памяти, вы можете позволить себе предложить 1 или 2 ядра, а затем 2 ГБ ОЗУ (минимальное требование для Windows x64), чтобы иметь виртуальную машину, которая работает эффективно.
Например, у меня XPS 14z и Windows 7 на нем. Я также запускаю виртуальную машину Windows 7 - я выделил ей 2 ГБ ОЗУ & amp; 2 ядра процессора (из моих 4).
Поэтому, когда я запускаю на нем программы (Notepad ++, Transwiz, Outlook, Word, Excel и т. Д.), Заметного замедления не происходит. Я никогда не пытался запустить на нем интенсивное программное обеспечение (Photoshop и т. Д.). Таким образом, в зависимости от того, для чего вы его используете - гипервизор 2 типа может соответствовать или не соответствовать вашим потребностям. Если вы хотите использовать его для игр, это будет зависеть от игры. Я запустил на нем несколько игр Steam, и у меня не было никаких проблем (иногда я пересылаю RDP с моей машины Fedora на мою виртуальную машину), но это действительно будет зависеть от требований игры. Для игр во всех смыслах я бы не использовал виртуальную машину для этого. Я играю на своей машине W7, а затем использую виртуальную машину (на самом деле Fedora) для других целей. Вы хотите, чтобы наиболее интенсивные приложения имели первый доступ к оборудованию.
источник
Поэтому я установил Windows 7 в Linux Mint 12 через VMWare Player. Видео рендеринг Windows 7 внутри Linux Mint хуже, чем Windows 7 в качестве основной ОС. Я ничего не настроил и не знаю, нужно ли что-то настраивать, чтобы сделать видео рендеринг AVI файлов лучше
Я обнаружил, что скорость запуска приложений на моей машине с 8 ГБ памяти высока. Это не было проблемой. Тем не менее, я не пробовал ничего сверх интенсивного использования памяти, такого как редактирование видео или фото. Просто обычные офисные приложения.
источник
Проблема с технологией VM заключается в том, что она не может обращаться к вашей физической памяти одинаково, если вы работали с реальной ОС, использующей указанную память. Образ виртуальной машины использует логическую адресацию памяти, если он работал с тем же физическим адресным пространством, что вы не сможете запускать обе операционные системы одновременно. Несмотря на то, что современные виртуальные машины прошли долгий путь, можно даже сказать, что качество игр составляет 90-95%, но им по-прежнему не хватает возможности запускать ваши игры на полной скорости. Эти 90% -95% направлены исключительно на логическую адресацию по сравнению с физической адресацией памяти вашего компьютера. Теперь, когда речь идет только об аргументе адресации / выделения памяти, другая проблема заключается в том, что Windows использует DirectX, поскольку, насколько я знаю, ни одно программное обеспечение для виртуальных машин, включая VMware, не имеет полной поддержки любого из последних DX. Так что, если вы используете что-то кроме DX 9, вы в значительной степени облажались.
QEMU на Linux, вероятно, лучший для игр!
источник