Theo những gì tôi hiểu thì một máy ảo rơi vào hai loại là "máy ảo hệ thống" hoặc "máy ảo xử lý". Nó là loại mờ đối với tôi nơi BEAM nằm. Có một loại máy ảo khác mà tôi không biết?
Theo những gì tôi hiểu thì một máy ảo rơi vào hai loại là "máy ảo hệ thống" hoặc "máy ảo xử lý". Nó là loại mờ đối với tôi nơi BEAM nằm. Có một loại máy ảo khác mà tôi không biết?
Câu trả lời:
Erlang VM chạy như một tiến trình HĐH. Theo mặc định, nó chạy một luồng hệ điều hành trên mỗi lõi để đạt được mức sử dụng tối đa của máy. Số lượng luồng và lõi mà chúng chạy có thể được đặt khi VM được khởi động.
Các quy trình Erlang được thực hiện hoàn toàn bởi Erlang VM và không có kết nối với các quy trình HĐH hoặc các luồng hệ điều hành. Vì vậy, ngay cả khi bạn đang chạy một hệ thống Erlang gồm hơn một triệu quy trình, nó vẫn chỉ là một quy trình HĐH và một luồng trên mỗi lõi. Vì vậy, theo nghĩa này, Erlang VM là một "máy ảo xử lý" trong khi hệ thống Erlang hoạt động rất giống như các quy trình của OS và Erlang có các thuộc tính rất giống với các quy trình của OS, ví dụ như cách ly. Thực sự có một máy ảo Erlang, dựa trên BEAM, chạy trên kim loại trần và thực tế là một hệ điều hành theo đúng nghĩa của nó, xem Erlang trên Xen .
Nhân tiện, hoàn toàn có thể có các hệ thống chạy hàng triệu quy trình Erlang và nó thực sự được thực hiện trong một số sản phẩm, ví dụ WhatsApp .
Chúng tôi chắc chắn đã suy nghĩ rất nhiều về các hệ điều hành khi chúng tôi thiết kế môi trường Erlang cơ bản.
Máy ảo là một hệ thống máy tính. Mục tiêu cuối cùng của một hệ thống máy tính là thực hiện logic được lập trình. Từ quan điểm này, các máy ảo có thể được phân thành 4 loại theo mức độ trừu tượng và phạm vi mô phỏng:
Loại 1: Máy ảo Kiến trúc tập lệnh đầy đủ (ISA) cung cấp mô phỏng hoặc ảo hóa toàn bộ hệ thống máy tính của hệ thống máy tính. Các hệ điều hành và ứng dụng khách có thể chạy trên đỉnh của máy ảo như một máy tính thực tế (ví dụ: VirtualBox, QEMU, XEN ).
Loại 2: Máy ảo Giao diện nhị phân ứng dụng (ABI) cung cấp mô phỏng ABI quy trình khách. Các ứng dụng chống lại ABI đó có thể chạy song song với các quy trình khác của các ứng dụng ABI gốc (ví dụ: Lớp thực thi IA-32 của Intel trên Itanium, Mô phỏng mã của Transmeta cho mô phỏng X86, lớp dịch Rosetta của Apple cho mô phỏng PowerPC ).
Loại 3: Máy ảo ISA ảo cung cấp một công cụ thời gian chạy để các ứng dụng được mã hóa trong ISA ảo có thể thực thi trên nó. Virtual Virtual thường định nghĩa một phạm vi cao và phạm vi hạn chế của ngữ nghĩa của ISA, do đó, nó không yêu cầu máy ảo mô phỏng một hệ thống máy tính đầy đủ (ví dụ, JVM của Sun microsystem, Thời gian chạy ngôn ngữ chung của Microsoft, máy ảo Parrot của Parrot Foundation).
Loại 4: Máy ảo ngôn ngữ cung cấp công cụ thời gian chạy thực thi các chương trình được thể hiện bằng ngôn ngữ khách. Các chương trình thường được trình bày cho máy ảo ở dạng nguồn của ngôn ngữ khách, mà không được biên dịch đầy đủ thành mã máy trước đó. Công cụ thời gian chạy cần diễn giải hoặc dịch chương trình và cũng đáp ứng một số chức năng nhất định được trừu tượng hóa bằng ngôn ngữ như quản lý bộ nhớ (ví dụ: các công cụ thời gian chạy cho Basic, Lisp, Tcl, Ruby ).
Ranh giới giữa các loại máy ảo không rõ ràng. Ví dụ, một máy ảo ngôn ngữ cũng có thể sử dụng kỹ thuật của máy ảo ISA ảo bằng cách biên dịch chương trình thành một loại ISA ảo và sau đó thực thi mã trên một máy ảo của máy ảo ảo đó.
Nhiều thiết kế VM, chẳng hạn như BEAM , vượt qua các ranh giới. Họ có thể phù hợp với cả loại thứ 3 và thứ 4.
nguồn:
Tôi giả sử rằng bạn đã đọc http://en.wikipedia.org/wiki/Virtual_machine - theo thuật ngữ đó, BEAM là một "máy ảo xử lý", giống như JVM.