Trong tin học, máy ảo (VM) là ảo hóa / giả lập hệ thống máy tính. Máy ảo dựa trên kiến trúc máy tính và cung cấp chức năng của một máy tính vật lý. Việc triển khai chúng có thể liên quan đến phần cứng, phần mềm chuyên dụng hoặc kết hợp.
Các máy ảo khác nhau và được tổ chức theo chức năng của chúng, được hiển thị ở đây:
Một số trình giả lập máy ảo, chẳng hạn như QEMU và trình giả lập bảng điều khiển trò chơi điện tử, được thiết kế để mô phỏng (hoặc “hầu như bắt chước”) các kiến trúc hệ thống khác nhau, do đó cho phép thực thi các ứng dụng phần mềm và hệ điều hành được viết cho CPU hoặc kiến trúc khác. Ảo hóa mức hệ điều hành cho phép phân vùng tài nguyên của máy tính thông qua hạt nhân. Các điều khoản không thể hoán đổi cho nhau.
“Máy ảo” ban đầu được Popek và Goldberg định nghĩa là “một bản sao hiệu quả, biệt lập của một máy tính thực.” Việc sử dụng hiện tại bao gồm các máy ảo không tương ứng trực tiếp với bất kỳ phần cứng thực nào. Phần cứng vật lý, “thế giới thực” chạy VM thường được gọi là ‘máy chủ’ và máy ảo được mô phỏng trên máy đó thường được gọi là ‘máy khách’. Máy chủ có thể mô phỏng một số khách, mỗi khách có thể mô phỏng các hệ điều hành và nền tảng phần cứng khác nhau.
Mong muốn chạy nhiều hệ điều hành là động cơ ban đầu cho các máy ảo, để cho phép chia sẻ thời gian giữa một số hệ điều hành đơn tác vụ. Ở một khía cạnh nào đó, máy ảo hệ thống có thể được coi là sự tổng quát hóa khái niệm bộ nhớ ảo có trước nó. CP / CMS của IBM, hệ thống đầu tiên cho phép ảo hóa hoàn toàn, đã thực hiện chia sẻ thời gian bằng cách cung cấp cho mỗi người dùng một hệ điều hành dành cho một người dùng, Hệ thống giám sát cuộc trò chuyện (CMS). Không giống như bộ nhớ ảo, một máy ảo hệ thống cho phép người dùng viết các hướng dẫn đặc quyền trong mã của họ. Cách tiếp cận này có một số lợi thế nhất định, chẳng hạn như bổ sung các thiết bị đầu vào / đầu ra không được hệ thống tiêu chuẩn cho phép.
Khi công nghệ phát triển bộ nhớ ảo cho mục đích ảo hóa, các hệ thống thừa bộ nhớ mới có thể được áp dụng để quản lý việc chia sẻ bộ nhớ giữa nhiều máy ảo trên một hệ điều hành máy tính. Có thể chia sẻ các trang bộ nhớ có nội dung giống nhau giữa nhiều máy ảo chạy trên cùng một máy vật lý, điều này có thể dẫn đến việc ánh xạ chúng đến cùng một trang vật lý bằng một kỹ thuật gọi là kết hợp nhân cùng trang (KSM). Điều này đặc biệt hữu ích đối với các trang chỉ đọc, chẳng hạn như những trang chứa các đoạn mã, trường hợp này xảy ra đối với nhiều máy ảo chạy cùng một phần mềm hoặc phần mềm tương tự, thư viện phần mềm, máy chủ web, thành phần phần mềm trung gian, v.v. Các hệ điều hành khách không cần tuân thủ phần cứng máy chủ, do đó có thể chạy các hệ điều hành khác nhau trên cùng một máy tính (ví dụ: Windows, Linux hoặc các phiên bản trước của hệ điều hành) để hỗ trợ phần mềm trong tương lai.
Việc sử dụng các máy ảo để hỗ trợ các hệ điều hành khách riêng biệt là phổ biến đối với các hệ thống nhúng. Cách sử dụng điển hình là chạy hệ điều hành thời gian thực đồng thời với hệ điều hành phức hợp được ưa thích, chẳng hạn như Linux hoặc Windows. Một cách sử dụng khác sẽ dành cho phần mềm mới và chưa được kiểm chứng vẫn đang trong giai đoạn phát triển, vì vậy nó chạy bên trong hộp cát. Máy ảo có những lợi thế khác để phát triển hệ điều hành và có thể bao gồm cải thiện quyền truy cập gỡ lỗi và khởi động lại nhanh hơn.
Nhiều máy ảo chạy hệ điều hành khách của riêng họ thường được tham gia để hợp nhất máy chủ.
Thực hiện chương trình |
---|
Khái niệm chung |
|
Các loại mã |
|
Các chiến lược biên dịch |
|
Thời gian chạy đáng chú ý |
|
Trình biên dịch & công cụ đáng chú ý |
|