Tôi đã nối rất nhiều vào câu trả lời của tôi dưới đây, nhưng tôi vẫn giữ nguyên câu trả lời ban đầu của mình để tham khảo.
TL: DR: Máy ảo là một công cụ và trong khi chúng cung cấp khả năng dễ dàng sử dụng một hệ điều hành trong một hệ điều hành khác, bạn phải nhận thức rất rõ về mục đích sử dụng chính của máy tính sẽ là gì để sử dụng toàn bộ hệ thống .
Câu hỏi của bạn dường như bị nghiêng mạnh về khả năng thực hiện đồ họa và giao diện khi sử dụng máy ảo và vì vậy tôi sẽ trả lời về các khả năng ở đó.
Vấn đề chính là để quản lý an toàn hệ điều hành khách truy cập vào thiết bị (và do đó ngăn hệ điều hành khách không chà đạp lên máy chủ và phá vỡ mọi thứ), tất cả các thiết bị bạn muốn sử dụng phải được "mô phỏng".
Điều này có nghĩa là card đồ họa mà HĐH khách của bạn có thể nhìn thấy không giống với card đồ họa mà HĐH máy chủ của bạn có thể nhìn thấy. Bạn có thể kích hoạt các tính năng như hiển thị 3D trong máy khách, nhưng điều này được xử lý bởi một trình điều khiển trung gian trong khách của bạn để chuyển các yêu cầu đến máy chủ theo cách an toàn để 3D được hiển thị ở đó.
Điều rất đáng nghi ngờ là các tính năng như những tính năng cần thiết để phát đĩa tia xanh một cách an toàn cho màn hình HDMI được hỗ trợ được mô phỏng bởi trình điều khiển card đồ họa khách và do đó, điều này có thể sẽ không hoạt động.
Về cơ bản, bất cứ điều gì cần hỗ trợ phần cứng trên máy chủ của bạn đều không có khả năng hoạt động tốt, nếu có, trong khách của bạn. Tôi không biết WiDi hoạt động như thế nào, nhưng nếu nó yêu cầu truy cập trực tiếp vào bộ nhớ thẻ video của bạn để chia sẻ nó với TV thì nó sẽ không hoạt động trừ khi bạn sử dụng nó từ hệ điều hành máy chủ (Linux).
Khác về hiệu năng, VM có thể tiến gần đến mức nếu là HĐH chính, nhưng sẽ luôn có các hình phạt về quyền truy cập thiết bị ổ cứng hoặc tranh chấp với các tài nguyên khác mà máy chủ đang sử dụng.
Ở thời điểm bắt đầu...
Lúc đầu chúng tôi có một máy tính, máy tính đó chỉ có thể chạy một hệ điều hành. Hệ điều hành đó có xu hướng chỉ chạy tốt trên bộ xử lý cụ thể và phần cứng khác có trong máy, với các hệ điều hành khác chỉ có thể chạy kém, nếu có, trên phần cứng tự nhiên có sẵn.
Để mọi người có thể sử dụng phần mềm cho một nền tảng cụ thể trên nền tảng khác (ví dụ: sử dụng phần mềm MacOS Pre-OSX trên Commodore Amiga) không chỉ cần "cài đặt phần mềm". Hai máy này sử dụng kiến trúc bộ xử lý hoàn toàn khác nhau và phần cứng phụ trợ. Đơn giản là không có cách nào một HĐH có thể chạy trên phần cứng của máy khác.
Thi đua
Thi đua giống như anh em họ với Ảo hóa, chúng thực sự có liên quan và có mục tiêu tương tự nhau. Một người khác làm như vậy.
Những nền tảng phần cứng khác nhau này có nghĩa là gì nếu bạn muốn sử dụng một phần mềm từ một hệ điều hành khác trên máy của mình thì mọi thứ về máy đó phải được phân tích để tìm ra cách thức hoạt động của nó, và sau đó một đoạn mã được viết có chức năng tương tự như phần cứng đã làm. Điều này phải được thực hiện cho mọi phần, bộ xử lý, bộ điều khiển đồ họa, bộ điều khiển bộ nhớ, mọi thứ .
Sau đó, tất cả các phần này được đặt lại với nhau và vì mỗi phần được mô phỏng một chút phần cứng, chúng tôi gọi đây là một máy mô phỏng . Sau đó chúng tôi chạy một hệ điều hành trên đầu máy giả lập này.
Vấn đề là cách tiếp cận này chậm. Rất đơn giản, bạn đã may mắn nếu bạn có thể đạt được 1/10 tốc độ của phần cứng ban đầu. Bạn thực sự cần một máy nhanh hơn nhiều lần so với máy mô phỏng mục tiêu của bạn để chạy máy tính giả lập ở bất cứ nơi nào gần tốc độ tối đa.
Vậy điều gì đã thay đổi?
Vâng, đây là điều tuyệt vời. Thực sự không nhiều. Sự thay đổi lớn duy nhất là các nền tảng phần cứng được tiêu chuẩn hóa. Chúng tôi đã ngừng nhận phần cứng tùy chỉnh cho mọi HĐH và tất cả các HĐH đều được chuyển sang hoặc được tạo trên một nền tảng tiêu chuẩn duy nhất.
Các thành phần tạo nên máy Mac ngày nay, nói chung, chính là các thành phần tạo nên một PC. Linux luôn chạy trên phần cứng PC nên không có gì mới cả.
Trong một thời gian dài, thi đua vẫn là tiêu chuẩn nếu bạn muốn chạy phần mềm từ HĐH này trên HĐH khác. Hoặc bạn có thể khởi động kép và chạy một trong hai hệ điều hành như bạn muốn, nhưng điều này làm cho nó đau đớn và khó chịu nếu bạn muốn chuyển từ mã hóa trong Linux sang chơi game trong Windows.
Và sau đó..
Đã có ý tưởng rằng phần cứng cơ bản là như nhau, tại sao cả hai hệ điều hành không thể chia sẻ nó?
Chúng tôi đã kết thúc với QEMU và WiNE và các giải pháp phần mềm tương tự. QEMU từ lâu đã được yêu thích để mô phỏng cứng các máy, trong khi WiNE cho phép các ứng dụng Windows chạy trên Linux bằng cách bẫy và vá các lệnh gọi API hệ điều hành của chúng và để mã chạy tự nhiên trên bộ xử lý.
QEMU đã làm một cái gì đó tương tự như WiNE, nhưng đã làm ở cấp độ thấp hơn nhiều. Nó vẫn thực sự là một trình giả lập, nhưng đối với mọi cuộc gọi phần cứng được thực hiện, họ đã sử dụng phương pháp "vá và chuyển hướng" để bất kỳ cuộc gọi nào đi đến nền tảng phần cứng giả lập của riêng họ. bởi vì hầu hết các mã làm việc trong một chương trình không thực sự liên quan đến các cuộc gọi phần cứng (hầu hết là các luồng tính toán đơn giản với một cuộc gọi ở cuối để hiển thị kết quả).
Điều này dẫn đến việc tăng tốc độ tức thời cho hầu hết mọi chương trình trong máy không được mô phỏng thực sự . Các chương trình chạy với tốc độ chậm phụ thuộc nhiều hơn vào mức độ chúng truy cập vào phần cứng "ảo" thay vì phụ thuộc vào mức độ mà máy có thể được mô phỏng. Thay vì chạy ở tốc độ 1/10 tốc độ, giờ đây họ đang chạy với tốc độ gần như tốc độ như thể chúng là nguyên bản.
Vì vậy, nếu bây giờ chúng tôi đang chạy trên bộ xử lý, tại sao card đồ họa của tôi không hoạt động?
Vấn đề duy nhất với các Máy ảo mới này là về bản chất, Hệ điều hành giả định rằng nó có quyền kiểm soát trực tiếp tất cả phần cứng trong máy tính, để chúng có thể cung cấp các tính năng như quản lý bộ nhớ và kiểm soát quyền truy cập vào phần cứng.
Điều này có nghĩa là máy ảo có thể hoàn toàn thoát khỏi sự mô phỏng, ít nhất là về phương thức. Họ vẫn phải mô phỏng một số chức năng nhất định trong phần mềm, ví dụ như card đồ họa hoặc card mạng phải được trình bày cho HĐH chạy trong máy ảo để hệ điều hành "Guest" nghĩ rằng nó có toàn quyền kiểm soát phần cứng đó. HĐH chính (theo yêu cầu bảo mật) phải tự bảo vệ mình trước các chương trình truy cập trực tiếp vào phần cứng và điều này đặt ra các hạn chế đối với hệ điều hành khách.
Để làm được điều này, họ phải mô phỏng các phần cứng "ảo" cho mọi thứ trong máy tính. Hiện tại tất cả các mã được chạy bởi bộ xử lý, vì vậy nó không chậm, nhưng mỗi một phần cứng ảo đó phải được viết bằng phần mềm và điều này phải chịu cả một hình phạt nhỏ về hiệu năng và có khả năng bị phạt lớn về chức năng .
Điều đó có nghĩa là card đồ họa ảo của bạn không thể và sẽ không có các tính năng giống như card đồ họa thực của bạn . Để có được hiệu suất cao nhất, phần cứng ảo có thể được viết để hỗ trợ hầu hết các tính năng được sử dụng và hiện có thể hiển thị 3D trong một máy ảo, nhưng nó vẫn không giống với phần cứng thực.
Điều này có nghĩa là hệ điều hành máy chủ có các tùy chọn phần cứng tốt nhất, trong khi hệ điều hành khách có các tùy chọn phần cứng chung .
Một máy ảo không tốt bằng phần cứng thực, nó chỉ là một công cụ giúp làm việc dễ dàng hơn với các công cụ từ hệ thống này sang hệ thống khác.
Vậy tôi phải làm gì?
Bạn phải chọn những gì bạn muốn mục đích chính của máy tính của bạn là.
Nếu bạn muốn chơi các trò chơi mới nhất trên card đồ họa mạnh mẽ của mình và sử dụng cùng một sức mạnh của card đồ họa đó để phát phim 1080p đầy đủ cho TV HDMI 400 của bạn nhưng đôi khi chỉ muốn thực hiện một số chương trình Linux, thì Windows có thể là lựa chọn tốt nhất của bạn với Linux là khách.
Nếu bạn muốn làm việc với nhân Linux, tạo trình điều khiển phần cứng cho các thiết bị trong máy tính của bạn và thỉnh thoảng viết một số phần mềm cho Windows và kiểm tra phần mềm này gần đúng với hệ thống Windows "chuẩn" thì có thể bạn nên dùng Linux tốt hơn như một máy chủ lưu trữ và Windows như một khách.
Nếu bạn thích sự dễ sử dụng của máy Mac nhưng muốn lập trình cho Windows (hoặc có một gói phần mềm bạn muốn chỉ dành cho Windows) thì đó cũng là một tùy chọn.
Tôi không nói rằng Linux không thể chơi trò chơi, hoặc MacOS không dành cho lập trình viên vì đó đơn giản chỉ là một lời nói dối. Chỉ có một người có thể nói hệ điều hành nào có thể phù hợp hơn với những gì bạn muốn làm là bạn .
Bạn thực sự phải hiểu những gì bạn muốn máy của bạn làm đầu tiên . Chỉ sau đó bạn có thể tìm ra những gì một máy ảo có thể làm cho bạn.
Để trả lời câu hỏi của bạn:
Will the graphics and video rendering quality will be just as good?
Không. Card đồ họa mô phỏng có thể cung cấp một số tính năng của card đồ họa chủ, nhưng có thể nó sẽ không hỗ trợ các tính năng phức tạp như tăng tốc video phần cứng hoặc tính năng lập trình CUDA.
Will there be any hardware issue such as using HDMI or WiDi?
Một lần nữa, các tính năng bổ sung này có thể sẽ không phải là một tính năng của bất kỳ phần cứng giả lập / ảo nào có sẵn.
Will applications run just as smoothly as long as enough RAM is allocated?
Hầu hết các ứng dụng (miễn là chúng không yêu cầu các tính năng phần cứng cụ thể) sẽ chạy gần như nhanh như trên phần cứng thực, miễn là bạn không bỏ đói máy chủ hoặc khách của bộ nhớ.