Professional Documents
Culture Documents
Tính từ ảo xuất phát từ quang học, trong đó hình ảnh trong gương
hoặc tại tiêu điểm của thấu kính có thể được phân tích như thể bản
sao đảo ngược hoặc đảo ngược của vật thể hiện diện. Trong lĩnh vực
máy tính, các nhà thiết kế hệ điều hành đã sử dụng thuật ngữ ảo vào
đầu những năm 1960 để chỉ các thành phần của hệ điều hành mô
phỏng máy móc hoặc thiết bị.
Việc sử dụng ảo đầu tiên trong máy tính dường như là trong dự án
M44 / 44X tại Trung tâm Nghiên cứu Yorktown của IBM vào đầu
những năm 1960. David Sayre và Les Belady thuộc nhóm do Bob
Nelson dẫn đầu đã phát triển phương pháp phân vùng máy IBM 7044
thành các tiểu liên có 7044 hình ảnh với ít bộ nhớ hơn. Trong từ viết
tắt của dự án, M44 ám chỉ máy 7044 thực và 44X ám chỉ hình ảnh
7044 thử nghiệm. Nhóm nghiên cứu đã sử dụng thuật ngữ máy ảo để
chỉ các hình ảnh 44X. Các thành viên trong nhóm đã tiến hành các
nghiên cứu hiệu suất thử nghiệm sâu rộng về bộ nhớ ảo, kiểm soát
tải và các chính sách lập lịch trình.
Vào cuối những năm 1950 tại Đại học Manchester, Tom Kilburn và
nhóm của ông đã phát minh ra bộ nhớ ảo trong.Hệ thống tập bản đồ.
Họ gọi đó là “cửa hàng một cấp”. Kho lưu trữ một cấp đã mô phỏng
một bộ nhớ chính lớn với một bộ nhớ thực nhỏ và một trống phân
trang lớn.
Vào thời điểm bị lỗi trang, hệ thống của họ đã thay thế (xóa) một
trang khỏi bộ nhớ chính và tải trang cần thiết vào vị trí của nó từ
trống. Chính sách thay thế của hệ thống phân trang Atlas đã tìm cách
tối đa hóa thời gian giữa các lỗi trang bằng cách phát hiện các vòng
lặp chương trình và thay thế trang có thời gian dự đoán dài nhất cho
đến khi sử dụng lại. Chính sách đó — và do đó, hệ thống lưu trữ một
cấp — chỉ hoạt động tốt trên các chương trình được tính toán chủ
yếu bằng các vòng lặp.
Để tìm ra các chính sách thay thế mạnh mẽ hơn, nhóm của Nelson tại
IBM đã triển khai các máy ảo (44X) chứa các cửa hàng một cấp. Với
tấm thử nghiệm đó, họ phải chịu nhiều chính sách thay thế để giám
sát thử nghiệm rộng rãi. Họ gọi bộ lưu trữ một cấp là bộ nhớ của máy
ảo, hoặc đơn giản là bộ nhớ ảo. Nhiệm kỳ của họ bị mắc kẹt. Máy ảo
tiếp tục trở thành trụ cột chính của các máy tính lớn thương mại của
IBM.
Lịch sử
Cả máy ảo hệ thống và máy ảo xử lý đều có từ những năm 1960 và
tiếp tục là những lĩnh vực phát triển tích cực.
Máy ảo hệ thống:
Các máy ảo hệ thống đã phát triển nhờ tính năng chia sẻ thời gian,
đặc biệt là được triển khai trong Hệ thống chia sẻ thời gian tương
thích (CTSS). Chia sẻ thời gian cho phép nhiều người dùng sử dụng
máy tính đồng thời:với hệ thống chuyển đổi giữa các chương trình
theo từng lát thời gian, lưu và khôi phục trạng thái mỗi lần. Điều này
đã phát triển thành các máy ảo, đặc biệt là thông qua các hệ thống
nghiên cứu của IBM: M44 / 44X, sử dụng ảo hóa một phần và CP-40
và SIMMON, sử dụng ảo hóa hoàn toàn và là những ví dụ ban đầu về
siêu giám sát.
Kiến trúc máy ảo đầu tiên được phổ biến rộng rãi là CP-67 / CMS.
Một điểm khác biệt quan trọng là giữa việc sử dụng nhiều máy ảo
trên một hệ thống máy chủ để chia sẻ thời gian, như trong M44 / 44X
và CP-40 và sử dụng một máy ảo trên hệ thống máy chủ để tạo mẫu,
như trong SIMMON. Trình giả lập, với khả năng mô phỏng phần cứng
của các hệ thống trước đó để tương thích, có từ thời Hệ thống IBM /
360 vào năm 1963, trong khi mô phỏng phần mềm (khi đó được gọi
là "mô phỏng") có trước nó.
Máy ảo xử lí:
Xử lý máy ảo ban đầu là nền tảng trừu tượng cho một ngôn ngữ
trung gian được trình biên dịch sử dụng làm đại diện trung gian của
một chương trình; các ví dụ ban đầu có niên đại khoảng năm 1966.
Một ví dụ đầu năm 1966 là máy mã O, một máy ảo thực thi mã O (mã
đối tượng) được phát ra bởi giao diện người dùng của trình biên dịch
BCPL.
Ngôn ngữ Euler đã sử dụng một thiết kế tương tự, với ngôn ngữ
trung gian có tên là P (portable). Điều này đã được phổ biến vào
khoảng năm 1970 bởi Pascal, đặc biệt là trong hệ thống Pascal-P
(1973) và trình biên dịch Pascal-S (1975), trong đó nó được gọi là mã
p và kết quả là máy mã p.
Ngoài vai trò là một ngôn ngữ trung gian, mã p Pascal còn được thực
thi trực tiếp bởi một trình thông dịch thực thi máy ảo, đặc biệt là
trong UCSD Pascal (1978); điều này ảnh hưởng đến các trình thông
dịch sau này, đặc biệt là máy ảo Java (JVM). Một ví dụ ban đầu khác
là SNOBOL4 (1967), được viết bằng Ngôn ngữ triển khai SNOBOL
(SIL), một ngôn ngữ hợp ngữ cho một máy ảo, sau đó được nhắm
mục tiêu đến các máy vật lý bằng cách chuyển tiếp đến trình hợp dịch
gốc của chúng thông qua trình hợp dịch macro. Tuy nhiên, các macro
đã không còn được ưa chuộng nữa nên cách tiếp cận này đã ít ảnh
hưởng hơn.
Lịch sử máy ảo
Những tiến bộ đáng kể đã xảy ra trong việc triển khai Smalltalk-80,
đặc biệt là việc triển khai Deutsch / Schiffmann đã thúc đẩy quá trình
biên dịch đúng lúc (JIT) như một phương pháp triển khai sử dụng máy
ảo quy trình. Các máy ảo Smalltalk đáng chú ý sau này là VisualWorks,
Máy ảo Squeak và Strongtalk.
Một ngôn ngữ có liên quan đã tạo ra rất nhiều đổi mới máy ảo là
ngôn ngữ lập trình Self, ngôn ngữ này đi tiên phong trong việc tối ưu
hóa thích ứng và thu gom rác nhiều thế hệ. Những kỹ thuật này đã
được chứng minh là thành công về mặt thương mại vào năm 1999
trong máy ảo HotSpot Java.
Những đổi mới khác bao gồm việc có một máy ảo dựa trên thanh ghi,
chứ không phải là một máy ảo dựa trên ngăn xếp, điều này phù hợp
hơn với ngôn ngữ lập trình; vào năm 1995, điều này đã được tiên
phong bởi máy ảo Dis cho ngôn ngữ Limbo. OpenJ9 là một giải pháp
thay thế cho HotSpot JVM trong OpenJDK và là một dự án nhật thực
mã nguồn mở tuyên bố khởi động tốt hơn và tiêu thụ ít tài nguyên
hơn so với HotSpot.