2009-05-14 17 views

Trả lời

22

số

VMWare và phần còn lại thực sự ảo hóa phần cứng của máy. Hệ điều hành chạy bên trong một thùng chứa VMWare (hoặc các thùng chứa ảo hóa của Parallels hoặc Windows hoặc Bochs hoặc ...) có các mức nhận thức khác nhau về việc chạy trong một thùng chứa ảo hóa. Trong VMWare, hệ điều hành không có ý tưởng rằng nó đang chạy trong một thùng chứa ảo. Hệ điều hành không được sửa đổi chút nào, mặc dù các trình điều khiển chuyên dụng thường được cài đặt (quan trọng nhất là video) để ngăn chặn các vấn đề về hiệu suất. Một số máy ảo khác không làm ảo hóa phần cứng đầy đủ và thay vào đó yêu cầu hệ điều hành bên trong thùng chứa thực hiện cuộc gọi đặc biệt đến vùng chứa thay cho các cuộc gọi phần cứng thông thường.

JVM không phải là một máy ảo theo nghĩa đó. Không có phần cứng nào khác ngoài bộ vi xử lý được ảo hóa. JVM về cơ bản là một CPU ảo hóa cộng với cùng một kiểu thời gian chạy được bao gồm với một C++ hoặc bất kỳ ngôn ngữ hướng đối tượng nào khác, cộng với bộ sưu tập rác và các nhu yếu phẩm khác. Ngoài ra, tất nhiên, các tệp lớp Java (và các tệp JAR, v.v.) không phải là mã máy, mà là một mã byte trung gian. Vì vậy, JVM phải biên dịch hoặc giải thích các tệp lớp (cho dù có chứa trong một tệp JAR hay không) trong thời gian chạy và có khả năng tải và tìm mã mới một cách linh động khi chạy.

JVM được gọi là máy ảo vì định nghĩa JVM xác định máy trừu tượng. Điều này bao gồm các thanh ghi, ngăn xếp, vv và mã byte mà nguồn Java được biên dịch thành thực tế là mã máy cho máy ảo này. JVM sau đó diễn dịch hoặc biên dịch mã byte này thành các chỉ dẫn máy tính bản địa.

Sự khác biệt chủ yếu là các JVM là một ảo xử lý và các máy ảo khác là ảo máy (bao gồm card màn hình, mạng, và các thiết bị bên ngoài khác và đăng ký phần cứng).

6

Không. Có sự khác biệt giữa máy ảo hệ thống và máy ảo quá trình. JVM là một máy ảo quá trình, trong khi VMWare và loại đó là các máy ảo hệ thống. Để biết thêm, vui lòng tham khảo wikipedia entry.

Theo như các máy ảo song song là mối quan tâm, các quốc gia nhập nêu trên,

PVM (Parallel Virtual Machine) không máy Nghiêm ảo, như ứng dụng chạy trên đầu vẫn có quyền truy cập vào tất cả các dịch vụ hệ điều hành, và là do đó không giới hạn trong hệ thống mô hình được cung cấp bởi "VM".

2

Có một bản tóm tắt về sự khác biệt trong "Chạy Xen: Hướng dẫn thực hành về nghệ thuật ảo hóa" của Jeanna Matthews, et al. (Amazon). VMWare là một ví dụ về ảo hóa đầy đủ và tìm cách ảo hóa kiến ​​trúc phần cứng vật lý để các hệ điều hành khách chưa sửa đổi khác nhau có thể ngồi trên đó. Máy ảo Java là một ví dụ về những gì họ gọi là ảo hóa ứng dụng, trong đó "Ứng dụng chạy trong môi trường thực thi ảo cung cấp API chuẩn cho thực thi trên nhiều nền tảng và quản lý việc sử dụng tài nguyên cục bộ của ứng dụng". (p.13)

Trong cả hai trường hợp, bạn có một lớp ảo hóa mà phần mềm chạy trên đầu trang. JVM chạy các ứng dụng Java, trong khi VMWare chạy các hệ điều hành đầy đủ. VMWare ảo hóa một máy được sử dụng để luôn được thể hiện dưới dạng phần cứng vật lý. Một JVM ảo hóa một máy mà có thể được thể hiện bằng phần cứng vật lý, nhưng hầu như không phải lúc nào (nhưng xem hardware JVMs).

Các vấn đề liên quan