Я доклав багато до своєї відповіді нижче, але свою оригінальну відповідь я залишив недоторканою для довідки.
TL: DR: Віртуальні машини - це інструмент, і, хоча вони пропонують просту можливість використання однієї ОС всередині іншої, ви повинні дуже добре знати, яким буде призначене вами основне використання комп'ютера, щоб повною мірою використовувати систему. .
Здається, ваше запитання сильно нахилене до можливостей графічної та інтерфейсної роботи віртуальної машини, тому я відповім щодо можливостей, які існують там.
Основна проблема полягає в тому, що для безпечного управління гостьовими операційними системами доступ до пристроїв (і тим самим не дозволяє гостям ОС топтати хоста і порушувати речі) усі пристрої, які ви хочете використовувати, повинні бути "емульовані".
Це означає, що відеокарта, яку може бачити ваша гостьова ОС, - це не та сама відеокарта, яку може бачити ваша хост-операційна система. Можливо, ви зможете ввімкнути такі функції, як 3D-рендерінг у гостях, але цим керує проміжний драйвер вашого гостя, який передає запити хосту безпечно, щоб 3D-рендерінг там був наданий.
Дуже сумнівно, що такі функції, як ті, які необхідні для надійного відтворення дискових синіх променів на підтримуваний дисплей HDMI, імітують гостьові драйвери відеокарти, тому це, ймовірно, не спрацює.
В основному все, що вимагає апаратної підтримки вашого хоста, швидше за все, не спрацює, якщо взагалі, у вашого гостя. Я не знаю, як працює WiDi, але якщо йому потрібен прямий доступ до пам'яті вашої відеокарти для того, щоб поділитися ним на телебаченні, це не працюватиме, якщо ви не використовуєте його з вашої хост (Linux) операційної системи.
Крім того, що стосується продуктивності, VM може наблизитися до того, що було б, якби це була основна ОС, але завжди будуть штрафи за доступ до пристроїв жорсткого диска або суперечки з іншими ресурсами, якими користується хост.
На початку...
На початку у нас був комп’ютер, на якому комп'ютер міг працювати лише однією операційною системою. Ця операційна система, як правило, працювала лише на конкретному процесорі та іншому апаратному забезпеченні, яке було в машині, а інші операційні системи могли працювати погано, якщо взагалі, на наявному наявному апаратному забезпеченні.
Для того, щоб люди могли використовувати програмне забезпечення для однієї конкретної платформи на іншій платформі (наприклад, за допомогою програмного забезпечення Mac OS Pre-OSX на 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?
Більшість програм (до тих пір, поки вони не потребують конкретних апаратних функцій) працюватимуть майже так само швидко, як і на реальному апаратному забезпеченні, доки ви не голодуєте ні з хостом, ні з гостем пам'яті.