1. Trang chủ
  2. » Công Nghệ Thông Tin

Nghiên cứu và đánh giá kiến trúc máy ảo java

120 319 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 120
Dung lượng 2,13 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

ẢO HÓA VÀ MÁY ẢO TIẾN TRÌNH 1.1.1 Khái niệm Ảo hóa Ảo hóa là công nghệ được thiết kế để tạo ra một tầng trung gian giữa hệ thống phần cứng của máy tính và phần mềm chạy trên phần cứng

Trang 1

Nghiên cứu và đánh giá kiến trúc máy ảo Java

MỤC LỤC

LỜI CAM ĐOAN 6

DANH MỤC CÁC THUẬT NGỮ - VIẾT TẮT 7

DANH MỤC HÌNH VẼ, ĐỒ THỊ 9

DANH MỤC BẢNG 12

MỞ ĐẦU 13

1 Lý do chọn đề tài 13

2 Mục tiêu đề tài 13

3 Phạm vi nghiên cứu 14

4 Phương pháp nghiên cứu 14

5 Kết quả dự kiến 14

6 Ý nghĩa khoa học và thực tiễn 14

7 Bố cục luận văn 15

CHƯƠNG I ẢO HÓA VÀ MÁY ẢO TIẾN TRÌNH 16

1.1 TỔNG QUAN 16

1.1.1 Khái niệm Ảo hóa 16

1.1.2 Máy ảo 16

1.1.3 Máy ảo hệ thống 19

1.1.4 Máy ảo tiến trình 21

1.1.5 Một số loại máy ảo hệ thống và ảo hóa tiến trình 22

1.2 MÁY ẢO TIẾN TRÌNH 23

1.2.1 Cấu trúc của máy ảo tiến trình 25

1.2.2 Khả năng tương thích 27

1.2.3 Ánh xạ trạng thái 31

1.2.4 Mô phỏng kiến trúc bộ nhớ 36

Trang 2

Nghiên cứu và đánh giá kiến trúc máy ảo Java

1.2.6 Mô phỏng ngoại lệ 43

1.2.7 Mô phỏng hệ điều hành 48

1.2.8 Quản lý mã bộ đệm (Cache) 50

1.2.9 Môi trường hệ thống 53

CHƯƠNG II MÁY ẢO JAVA 56

2.1 MÔI TRƯỜNG JAVA 59

2.1.1 Môi trường thực thi ứng dụng 59

2.1.2 Bộ công cụ phát triển 59

2.1.3 Ngôn ngữ lập trình Java 59

2.2 MÁY ẢO JAVA 62

2.3 Kiểu dữ liệu trong máy ảo Java 63

2.4 Kích thước từ nhớ trong máy ảo Java 65

2.5 Các thành phần trong máy ảo Java 66

2.5.1 Class Loader SubSystems 67

2.5.2 Method Area 69

2.5.3 Heap 74

2.5.4 PC registers 86

2.5.5 Ngăn xếp trong Java 86

2.5.6 Khung ngăn xếp 88

2.5.7 Native method stacks 91

2.5.8 Engine thực thi 92

2.5.9 Native Method Interface 98

2.6 HOẠT ĐỘNG CỦA MÁY ẢO JAVA 100

CHƯƠNG III ĐÁNH GIÁ HIỆU NĂNG MÁY ẢO JAVA 103

3.1 Đặt vấn đề 103

Trang 3

Nghiên cứu và đánh giá kiến trúc máy ảo Java

3.3 Mục tiêu sau khi thực hiện đánh giá 103

3.4 Giới thiệu chương trình được sử dụng để đánh giá 104

3.5 Công cụ sử dụng để đánh giá 104

3.6 Giới thiệu công cụ VisualVM 105

3.7 Thực hiện đánh giá: Đánh giá bao gồm: 106

CHƯƠNG IV KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 118

Kết quả 118

Những hạn chế 118

Hướng phát triển 119

TÀI LIỆU THAM KHẢO 120

Trang 4

Nghiên cứu và đánh giá kiến trúc máy ảo Java

LỜI CẢM ƠN

Đầu tiên, em muốn gửi lời biết ơn chân thành tới TS.Nguyễn Kim Khánh, người trực tiếp hướng dẫn và tạo mọi điều kiện về thời gian, sự giúp đỡ tận tình về kiến thức chuyên môn, sự chỉ dẫn, định hướng và tài liệu tham khảo quý báu

Tiếp theo, em xin cảm ơn các thầy cô trong Viện Công nghệ thông tin và Truyền thông – Đại học Bách khoa Hà Nội đã giảng dạy, truyền đạt kiến thức cho em trong suốt thời gian qua

Tôi cũng xin cảm ơn gia đình, bạn bè đã chia sẻ, giúp đỡ tôi trong học tập và thời gian thực hiện nghiên cứu đề tài này

Trong báo cáo đề tài này chắc chắn không tránh khỏi những chỗ thiếu sót, nhưng trên hết em mong nhận được những lời góp ý, sự chỉ bảo từ các thầy cô để có thể hoàn thiện đề tài của mình tốt hơn

Hà nội, ngày 15 tháng 03 năm 2015

Người thực hiện

Nguyễn Ngọc Tú

Trang 5

Nghiên cứu và đánh giá kiến trúc máy ảo Java

LỜI CAM ĐOAN

Luận văn Thạc sĩ “Nghiên cứu và đánh giá kiến trúc máy ảo Java”, chuyên ngành Công nghệ thông tin là công trình của cá nhân tôi Các nội dung nghiên cứu và kết quả trình bày trong luận văn là trung thực rõ ràng Các tài liệu tham khảo, nội dung tham khảo trích dẫn đã ghi rõ nguồn gốc

Hà nội, ngày 15 tháng 03 năm 2015

Tác giả luận văn

Nguyễn Ngọc Tú

Trang 6

Nghiên cứu và đánh giá kiến trúc máy ảo Java

DANH MỤC CÁC THUẬT NGỮ - VIẾT TẮT

1 VM Virtual Machine

Là một máy ảo được tạo ra bằng cách cài đặt phần mềm và thiết lập các thông số như máy thật

2 OS Operating System Hệ điều hành

3 VMM Virtual Machine Monitor Giám sát máy ảo

4 ISA Intruction Set

Architecture Kiến trúc tập lệnh

5 JVM Java Virtual Machine Máy ảo tiến trình Java

6 JNI Java Native Interface Giao tiếp riêng Java

7 ABI Application Binary

Interface Giao diện nhị phân ứng dụng

8 GC Garbage collector Chương trình thu dọn rác

9 EL Execute layer Lớp thực thi

10 NMI Native Method Interface Phương thức giao diện riêng

11 OS Operation system Hệ điều hành

12 CSDL Database Cơ sở dữ liệu

13 LRU Least Recently Used Sử dụng truy cập gần nhất

14 DLL Dynamic Link Library Thư viện liên kết động

15 PCs Programe Counter Bộ đếm chương trình

18 YC Young Generation Vùng nhớ YC của Heap

19 OG Old Generation Vùng nhớ OD của Heap

Trang 7

Nghiên cứu và đánh giá kiến trúc máy ảo Java

20 RISC Reduced Instruction Set

Computing Đơn giản hóa các tập lệnh trong tính toán

21 FIFO Fist - in firt - out Thuật toán thay thế sử dụng trong mô

phỏng hệ điều hành

22 JRE Java Runtime

Environment Môi trường thực thi ứng dụng Java

23 JDK Java Development Kit Bộ công cụ phát triển của Java

24 JIT Just In Time

Trình biên dịch thực thi các mã bytecode thành mã máy, thực hiện trong khi thực thi chương trình

25 API Java Application

Programming Interface Giao diện lập trình ứng dụng Java

26 RMI Remote Method

Invocation

Là phương thức giao tiếp từ xa giữa các đối tượng trong Java

27 EJB Enterprise Java Bean

Là các thành phần công nghệ phía server

để đóng gói và hỗ trợ mạnh việc thực hiện các thao tác bảo mật

Trang 8

Nghiên cứu và đánh giá kiến trúc máy ảo Java

DANH MỤC HÌNH VẼ, ĐỒ THỊ

Hình 1 Phân loại máy ảo 17

Hình 2 Mô hình tổng quát ảo hóa hệ thống 19

Hình 3: Mô hình ảo hóa kiểu native 20

Hình 4 Mô hình ảo hóa kiểu hosted 21

Hình 5 Tiến trình khách của máy ảo giao tiếp với tiến trình chủ 24

Hình 6 Quá trình thực hiện của máy ảo tiến trình 26

Hình 7 Mô tả chuyển trạng thái điều khiển giữa chỉ dẫn người dùng và OS 29

Hình 8 Trạng thái ánh xạ giữa máy khách – chủ 31

Hình 9 Mô phỏng kiến trúc địa chỉ bộ nhớ qua một phần mềm chuyển giao địa chỉ. 33

Hình 10 Ánh xạ không gian địa chỉ máy khách tới một vùng không gian trên máy chủ, 34

Hình 11 ánh xạ trực tiếp từ không gian địa chỉ máy khách và không gian địa chỉ máy chủ 35

Hình 12 Kiến trúc bộ nhớ Win32, với 2 bit giữ bởi hệ thống Sử dụng từ bit số 2 - bit 30 37

Hình 13 Ánh xạ một phần không gian địa chỉ ảo hóa của máy khách tới một tệp 38

Hình 14 Trang nhớ của máy khách nhỏ hơn trang máy chủ 39

Hình 15 Tích hợp tiến trình máy chủ, khách trong máy ảo tiến trình 54

Hình 16 Nền tảng Java Platform Standard Edition (JavaSE 8) 58

Hình 17 Các kiểu dữ liệu trong máy ảo Java 63

Hình 18 quá trình thực hiện biên dịch chương trình Java 66

Hình 19 Các thành phần chính trong kiến trúc máy ảo Java 67

Hình 20 Cấu trúc bộ nhớ Heap 74

Hình 21 Cấu trúc bộ nhớ Heap 75

Trang 9

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Hình 22 Xác định vị trí đối tượng 76

Hình 23 Quá trình chèn thông tin vào trong không gian Aden 76

Hình 24 Tính tuổi đối tượng 76

Hình 25 Tính tuổi đối tượng 77

Hình 26 Quy trình cấp lại bộ nhớ 77

Hình 27 Quá trinh nâng cấp vùng 78

Hình 28 Thăng cấp giữa 2 vùng nhớ 78

Hình 29 Tổng thể tiến trình thu dọn rác 78

Hình 30 Đánh dấu các phần của bộ nhớ 79

Hình 31 Xóa bình thường 79

Hình 32 Xóa và nén 80

Hình 33 Phân chia một đối tượng qua việc xử lý và bảng đối tượng 81

Hình 34 Dữ liệu đối tượng được lưu trong một nơi 82

Hình 35: Con trỏ giữ các phương thức 83

Hình 36 Bộ nhớ biểu diễn mảng 85

Hình 37 Các biến phương thức trong biến cục bộ của ngăn xếp Java 89

Hình 38 Quá trình gọi stack lại trong Java Stack 92

Hình 39 Mô tả các luồng được chia sẻ trong vùng dữ liệu thực thi 101

Hình 40 Các luồng trong PC, Java stack, Method Area 102

Hình 41 Giao diện chương trình VisualVM 105

Hình 42 CPU – Java2D Demo – Java HotSpot 32 bit 108

Hình 43 CPU – Java2D Demo – Java HotSpot 64 bit 109

Hình 44 Bộ nhớ Heap – Java2D Demo – Java HotSpot 32 bit 109

Hình 45 Bộ nhớ Heap – Java2D Demo – Java HotSpot 64 bit 109

Hình 46 CPU – System Rendering System – Java HotSpot 64 bit 110

Trang 10

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Hình 48 Bộ nhớ Heap – System Rendering System – Java HotSpot 64 bit 110

Hình 49 Bộ nhớ Heap – System Rendering System – Java HotSpot 64 bit 111

Hình 50 Kết quả so sánh thực hiện chương trình Java2D Demo 112

Hình 51 Log chương trình trên Window 8.1 112

Hình 52 Log chương trình trên Linux – Ubuntu 14.04 113

Hình 53 Kết quả phân tích log 1 113

Hình 54 Kết quả phân tích log 2 113

Hình 55 Biểu đồ phân tích log1 114

Hình 56 Biểu đồ phân tích log2 114

Hình 57 Kết quả so sánh thực hiện chương trình Sunflow Rendering System 116

Trang 11

Nghiên cứu và đánh giá kiến trúc máy ảo Java

DANH MỤC BẢNG

Bảng 1 Lịch sử phát triển các phiên bản của Java 57

Bảng 2 Kiểu và khoảng giá trị của kiểu trong JVM 65

Bảng 3 Kiểu tiền tố của mã bytecode 95

Bảng 4 Lưu trữ và kiểu tính toán trong JVM 96

Bảng 5 Bảng các kiểu dữ liệu của JNI 100

Bảng 7 Bảng tham số hiển lựa chọn hiển thị trong GC 107

Bảng 8 Bảng tham số hiển lựa chọn hiển thị trong GC 108

Trang 12

Nghiên cứu và đánh giá kiến trúc máy ảo Java

MỞ ĐẦU

1 Lý do chọn đề tài

Hiện nay máy ảo không còn xa lạ với người dùng, việc thực hiện ảo hóa ngày càng được phát triển với mức độ và quy mô lớn, ảo hóa mang lại nhiều lợi thế về kinh tế, thời gian, nhân công… Với người dùng chuyên về IT nói chung để hiểu rõ về hệ thống ảo hóa là vấn đề quan trọng cần tiếp tục phải cập nhật, nghiên cứu Ảo hóa hệ thống - ảo hóa tiến trình là hai dạng của công nghệ của ảo hóa, với việc chọn đề tài

“Nghiên cứu và đánh giá kiến trúc máy ảo Java” luận văn xem xét nghiên cứu lý thuyết chung về ảo hóa tiến trình, nghiên cứu về kiến trúc máy ảo tiến trình Java Đây

là một trong những đề tài mới và khó nhưng cần thiết với người dùng IT bởi vì Java

- ứng dụng Java ngày càng được sử dụng rộng rãi Java với hơn 20 năm phát triển, Hãng Oracle đã thống kê hiện nay có trên 5 tỉ thiết bị đang sử dụng ngôn ngữ Java30 Việc tìm hiểu và nghiên cứu về máy ảo tiến trình Java hết sức có ý nghĩa, giúp cho người dùng có thể kiểm tra tính tương thích, quản lý giám sát, đánh giá được ưu nhược điểm của ứng dụng… khi đã nắm được thông tin này thì việc vận hành và thực thi ứng dụng sẽ giúp cho người quản trị vận hành ứng dụng thực thi ứng dụng hiệu quả và chính xác nhất

2 Mục tiêu đề tài

Đề tài tìm hiểu và nghiên cứu lý thuyết máy ảo tiến trình nói chung cụ thể về máy

ảo tiến trình Java, tập trung tìm hiểu nghiên cứu về cơ chế hoạt động của các thành phần đó trong kiến trúc máy ảo Java

Để đạt được mục tiêu đề tài tập trung vào:

a Lý thuyết máy ảo tiến trình

b Lý thuyết máy ảo Java

Phần thực hành thực hiện đánh giá về hiệu năng, so sánh máy ảo Java HotSpot 32,

64 bit cùng chạy một ứng dụng trên các nền tảng OS khác nhau, đề tài cũng thực hiện xem xét tìm hiểu và đánh giá hiệu năng hoạt động của máy ảo thông qua cơ chế thu

Trang 13

Nghiên cứu và đánh giá kiến trúc máy ảo Java

dọn bộ nhớ khi thực hiện ứng dụng cụ thể, so sánh, đánh giá quá trình hoạt động của việc thu dọn rác trên 2 môi trường OS khác nhau

3 Phạm vi nghiên cứu

- Tìm hiểu lý thuyết máy ảo tiến trình

- Tìm hiểu lý thuyết máy ảo Java và hoạt động của các thành phần trong máy ảo Java

- Tìm hiểu về hiệu năng của máy ảo Java qua cơ chế thu dọn rác trong bộ nhớ Heap của máy ảo Java, đánh giá hiệu năng máy ảo 32, 64 bit bằng việc thực hiện chạy cùng một ứng dụng cùng một OS và trên hai OS khác nhau

4 Phương pháp nghiên cứu

- Phương pháp nghiên cứu lý thuyết: Nghiên cứu lý thuyết về máy ảo tiến trình, máy ảo Java, cơ chế hoạt động của các thành phần trong máy ảo Java

- Phương pháp nguyên cứu thực hành: Thực hành đánh giá ưu nhược điểm thực thi ứng dụng Java chạy trên các nền tảng OS khác nhau, so sánh đánh giá ứng dụng khi chạy trên hai phiên bản 32, 64 bit, tìm hiểu và đánh giá về cơ chế quản

lý bộ nhớ thông qua việc thực hiện thu dọn rác trong bộ nhớ của máy ảo

5 Kết quả dự kiến

- Hiểu được toàn bộ kiến trúc máy ảo Java, Chức năng và hoạt động của các thành phần trong máy ảo Java

- Thực nghiệm chạy chương trình đánh giá máy ảo Java chạy trên các nền tảng

OS khác nhau đã thu được kết quả về hiệu năng khi chạy ứng dụng và đưa ra kết luận

6 Ý nghĩa khoa học và thực tiễn

Đề tài luận văn là cơ sở để hiểu rõ tổng thể về Java nói chung, các thành phần của Java (ngôn ngữ lập trình, môi trường phát triển, môi trường thực thi…), đây là những

lý thuyết cơ bản cần có cho việc nghiên cứu, lập trình, giám sát hiệu năng ứng dụng…Từ đó tùy vào khả năng, nhu cầu thực tế riêng mà có thể phát triển các bộ công cụ quản lý, đánh giá, kiểm thử ứng dụng, đánh giá hiệu năng của ứng dụng cho

Trang 14

Nghiên cứu và đánh giá kiến trúc máy ảo Java

phù hợp với đặc thù riêng này, việc quản lý có thể thực hiện qua mạng, trong cùng mạng bằng những công cụ có sẵn trong bộ công cụ phát triển JDK

Tính thực tiễn của đề tài, đề tài là cơ sở thực tế nhằm phát triển các công cụ quản

lý hiệu năng tập trung các ứng dụng được xây dựng trên nền tảng ngôn ngữ Java tại Ngân hàng Thương mại Cổ phần Kỹ thương Việt Nam (Techcombank)

7 Bố cục luận văn

Bố cục của luận văn được chia thành 4 chương như sau:

Chương 1: Máy ảo và máy ảo tiến trình

Chương 1 giới thiệu các khái niệm ảo hóa, máy ảo, ảo hóa tiến trình và ảo hóa hệ thống, ngoài ra giới thiệu về một số máy ảo hóa hệ thống và ảo hóa tiến trình

Chương 2: Máy ảo Java

Chương 2 giới thiệu chung về môi trường Java, thành phần và hoạt động của các thành phần này Phần tiếp sẽ giải thích cách hoạt động của máy ảo Java

Chương 3: Đánh giá hiệu năng máy ảo Java

Chương 3 thực hiện đánh giá chạy ứng dụng với 2 phiên bản máy ảo 32 bit và 64 bit Thực hiện chạy phần mềm mã nguồn mở và đánh giá hiệu năng máy ảo trên các OS khác nhau từ đó đưa ra nhận xét kết luận về hiệu năng của máy ảo Java

Chương 4: Kết luận và hướng phát triển

Chương 4 bàn về những vấn đề đã giải quyết và những vấn đề chưa giải quyết được trong phạm vi của luận văn và đề xuất hướng phát triển tiếp theo cho luận văn trong môi trường thực tế tại Ngân hàng Cổ phần Kỹ thương Việt Nam (Techcombank)

Trang 15

Nghiên cứu và đánh giá kiến trúc máy ảo Java

CHƯƠNG I ẢO HÓA VÀ MÁY ẢO TIẾN TRÌNH

1.1.1 Khái niệm Ảo hóa

Ảo hóa là công nghệ được thiết kế để tạo ra một tầng trung gian giữa hệ thống phần cứng của máy tính và phần mềm chạy trên phần cứng đó, việc đưa ra một khái niệm logic về tài nguyên máy tính ảo hóa có thể thực hiện rất nhiều công việc khác nhau (ảo hóa ứng dụng, ảo hóa lưu trữ, ảo hóa hạ tầng mạng, máy chủ…) Về cơ bản,

ảo hóa cho phép việc OS xem nhóm máy ảo đó là các tài nguyên đơn lẻ

Về giải pháp ảo hóa cũng cho phép một hay nhiều máy ảo chạy trên một nền tảng phần cứng có sẵn Nền tảng này cung cấp cho mỗi người dùng một máy tính ảo nhưng

nó tách biệt chính với máy đó hoặc một số người dùng khác Ảo hóa bắt nguồn từ việc phân chia các ổ đĩa máy chủ thực thành nhiều máy chủ logic, mỗi máy chủ logic này có thể chạy một OS và ứng dụng độc lập

1.1.2 Máy ảo

Công nghệ máy ảo được phát triển liên quan đến: OS, ngôn ngữ lập trình, trình biên dịch và trong chính kiến trúc máy tính Đặc điểm máy ảo hỗ trợ nhiều OS khác nhau, chia sẻ tài nguyên đảm bảo được tính bảo mật

Máy ảo đã trở nên thông dụng trong các máy chủ, các ứng dụng trên mạng mà đặc điểm bảo mật được mang tính chất quyết định Trong lĩnh vực ngôn ngữ lập trình thì máy ảo cung cấp nền tảng độc lập và hỗ trợ rõ ràng các giao dịch động và tối ưu hóa Trong kiến trúc các bộ vi xử lý công nghệ máy ảo cung cấp các tập lệnh mới như việc tối ưu hóa động để tăng hiệu suất và làm giảm lượng điện tiêu thụ

Đặc điểm của máy ảo (VM):

- VM là một chương trình phần mềm cho phép một hoặc nhiều OS và các ứng dụng của nó hoạt động trên đó

- VM cho phép chuyển đổi qua lại giữa các OS đang chạy mà không cần khởi động lại máy tính, về cơ bản không có sự khác biệt nhiều giữa máy ảo và máy thật

Trang 16

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Việc phân chia máy ảo dựa vào mục đích sử dụng và được chia làm hai loại: Máy

ảo hệ thống và Máy ảo tiến trình Loại đầu tiên, máy ảo hỗ trợ ABI – nghĩa là các lệnh của người dùng cùng với các cuộc gọi hệ thống Loại thứ hai, máy ảo hỗ trợ mức kiến trúc tập lệnh – loại này hỗ trợ người dùng và các tập lệnh Cuối cùng việc phân loại dựa trên sự khác nhau của kiến trúc tập lệnh

Hình 1 Phân loại máy ảo

Trong máy ảo tiến trình tại hình trên bên trái kiến trúc tập lệnh của máy chủ và máy khách tập lệnh giống nhau, bên dưới hệ thống đa nhiệm đó là máy ảo tối ưu hóa động nhị phân – nghĩa là tập lệnh của máy khách được tối ưu hóa trước khi thực hiện trên máy chủ Bên phải là việc phân chia kiến trúc tập lệnh của máy khách và máy chủ khác nhau

Trong máy ảo hệ thống, nếu kiến trúc tập lệnh của máy chủ và máy khác giống nhau đại diện là hệ thống ảo hóa truyền thống Trong loại này đối tượng được sao chép và độc lập trong cùng một môi trường Khác nhau chính giữa loại truyền thống

và máy ảo dựa trên máy chủ đó là việc có phần mềm quản lý cung cấp các chức năng cho người dùng

Hệ thống ảo hóa toàn bộ, hệ thống phần mềm (bao gồm hệ điều hành và phần mềm) được hỗ trợ trên một hệ thống máy chủ mà ở đó chạy ISA và hệ điều hành, được gọi

Trang 17

Nghiên cứu và đánh giá kiến trúc máy ảo Java

ứng dụng và mã OS trong yêu cầu mô phỏng… thông qua dịch nhị phân Các máy

ảo ảo hóa toàn bộ, các phương pháp thực hiện phổ biến nhất là đặt phần mềm quản

lý và phần mềm khách lên trên mức phần cứng của hệ điều hành

Để triển khai máy ảo kiểu này, phần mềm ảo hóa mô phỏng toàn bộ môi trường phần cứng Phần mềm phải điều khiển mô phỏng tất cả các lệnh và phải chuyển đổi các hoạt động của ISA máy khách thành các cuộc gọi tới OS hệ thống trên máy chủ Ngay cả khi sử dụng dịch nhị phân, việc này tương đối hạn chế vì mã dịch không thể tận dụng được ưu điểm đặc điểm của ISA hệ thống giống như việc quản lý bộ nhớ và

xử lý các bẫy lỗi Thêm vào đó, các vấn đề có thể phát sinh nếu các thuộc tính của tài nguyên phần cứng khác nhau đáng kể trong máy chủ - máy khách Việc giải quyết là một thách thức lớn khi thực hiện ảo hóa toàn bộ

Ảo hóa dạng Codesigned: tối ưu hóa phần cứng được phát triển cho một vài chuẩn ISA và các ứng dụng trên máy chủ, các thư viện, hệ điều hành Các máy ảo đươc thiết

kế để cho phép đổi mới thêm vào/bới đi trong ISA để tăng hiệu năng, cải thiện nguồn điện hoặc cả hai Các ISA trên máy chủ có thể là mới hoặc dựa trên ISA sẵn trước đó với một vài lệnh mới được thêm vào/bớt đi Trong máy ảo Codesigned sử dụng một vùng nhớ nó không hiển thị trong bất kỳ ứng dụng hoặc phần mềm hệ thống Bộ nhớ che dấu này được lấy ra từ bộ nhớ thực tế tại thời điểm khởi động và phần mềm khách không biết sự tồn tại này Mã VMM trong bộ nhớ này có thể kiểm soát các phần cứng tại bất kỳ thời gian và thực hiện một số chức năng khác nhau

Tổng quát, các phần mềm máy ảo chứa một chương trình dịch nhị phân dùng chuyển đổi các lệnh của máy khách thành các lệnh của máy chủ và lưu trữ các lệnh này trong vùng nhớ ẩn Do đó các ISA khách không bao giờ trực tiếp thực hiện trên phần cứng Dịch nhị phân kết hợp với tối ưu hóa để tăng hiệu suất Đặc điểm là tối

ưu hóa thường xuyên được thực hiện trong thời gian biên dịch như là một tiến trình liên tục trong khi chương trình chạy

Trang 18

Nghiên cứu và đánh giá kiến trúc máy ảo Java

1.1.3 Máy ảo hệ thống

Máy ảo hệ thống hay máy ảo phần cứng là phần mềm được thiết kế riêng cho phần cứng thực hiện nhiệm vụ ảo hóa, máy ảo hệ thống cho phép sử dụng mỗi một phần cứng khác nhau cho một OS khác nhau, OS này hoạt động trên cùng một phần cứng nhưng độc lập Phần mềm cung cấp việc ảo hóa này gọi là VMM hay Hypervisor Một Hypervisor chạy trên phần cứng độc lập - gọi là kiểu 1 (native VM) hoặc chạy trên một OS – gọi là kiểu 2 (Hosted VM) 29

Hình 2 Mô hình tổng quát ảo hóa hệ thống

- OS khách mô tả phần cứng

- OS khách liên lạc với các trình điều khiển

- Các trình điều khiển phần cứng liên lạc trực tiếp đến phần cứng vật lý

Trang 19

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Hình 3: Mô hình ảo hóa kiểu native

Ưu điểm của loại này là tính sẵn sàng cũng như bảo mật, một số sản phẩm sử dụng loại 1 như Microsoft Hyper – V, hãng Citrix Xenserver, Vmware ESX Server

Kiểu 2 – Hosted VM

Máy ảo Java là điển hình cho kiểu này, OS được cài đặt trực tiếp trên phần cứng Trên OS chủ là một VMM có vai trò tạo và quản lý các VM, phân phối tài nguyên cho các VM đó Các VM này độc lập với nhau Quá trình giao tiếp liên lạc giữa phần cứng và trình điều khiển trên thiết bị được mô tả như sau:

- Đầu tiên mô phỏng phần cứng được tạo ra trên VMM

- Tạo mối giao tiếp liên lạc giữa VMM và OS

- OS giao tiếp liên lạc với trình điều khiển phần cứng

- Các trình điều khiển thiết bị phần cứng giao tiếp liên lạc đến các phần cứng trên

OS chủ

Quá trình này sẽ xảy ra ngược lại với khi có các phản hồi từ các phần cứng tới OS Các sản phẩm đại diện cho giải pháp này là Microsoft Virtual Server Vmware Server

và Microsoft Virtual PC…

Trang 20

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Hình 4 Mô hình ảo hóa kiểu hosted

Ưu điểm của hệ thống ảo hóa

- Nhiều OS chạy trên cùng một máy tính, nhưng đảm bảo tính độc lập giữa các

OS này

- VM cung cấp một kiến trúc ISA khác với máy thật

- Cung cấp các ứng dụng, duy trì các ứng dụng, tính sẵn sàng và khắc phục sau

sự cố cao

Nhược điểm của hệ thống ảo hóa

- Hiệu năng của VM không cao bằng máy thật vì VM giao tiếp gián tiếp đến phần cứng trên máy thật

1.1.4 Máy ảo tiến trình

Máy ảo tiến trình hay máy ảo ứng dụng, hoạt động như là một ứng dụng bên cạnh các OS, Máy ảo tiến trình chỉ hỗ trợ một tiến trình Máy ảo được tạo ra khi bắt đầu chạy một tiến trình và kết thúc khi tiến trình kết thúc Mục đích cung cấp môi trường chương trình độc lập trên nền tảng, đây là chi tiết khá trừu tượng dưới phần cứng hoặc OS, Máy ảo tiến trình cho phép một chương trình được thực hiện trên bất kỳ một nền tảng phần cứng nào Máy ảo tiến trình cung cấp mức độ ảo hóa cao – ở mức ngôn ngữ lập trình (đây là điều khác biệt so với mức độ ảo hóa ISA của máy ảo hệ thống) Máy ảo được thực hiện bằng một trình biên dịch: hiệu năng được so sánh với ngôn ngữ lập trình là khả năng biên dịch trong quá trình chạy 26

Trang 21

Nghiên cứu và đánh giá kiến trúc máy ảo Java

1.1.5 Một số loại máy ảo hệ thống và ảo hóa tiến trình

(1) VMWare 28 : Là phần mềm cho phép

ảo hóa phần trên nền tảng X86 -64, đây

là sản phẩm ảo hóa hoàn thiện nhất từ

việc ảo hóa phần mềm cho đến ảo hóa

phần cứng, ảo hóa máy trạm phía người

dùng (workstation) và ảo hóa server

(ESX Server, GSX server), hỗ trợ nhiều

OS khác nhau Ngoài ra VMWare còn

cung cấp ảo hóa cho Trung tâm dữ liệu

với các sản phẩm như vSPhere, Vcloud,

Vdirector…

(2) Hyper-V 25 : Công nghệ ảo hóa của

Microsoft Thiết kế dựa trên công nghệ

Hypervisor, chạy trên nền 64bit server

(4) Parallel Virtual Machine 24: Là

phần mềm chạy song song máy tính,

được thiết kế cho phép mạng hỗn hợp

Unix, Window cùng sử dụng bộ xử lý

song song

(5) Virtual Box: Công cụ phần mềm tạo

máy ảo của Oracle Giống như (4), (1)

(1) Dalvik 21: Là máy ảo tiến trình của

OS Android của Google, dùng để thực thi ứng dụng viết cho OS Android

- Chương trình được viết bằng ngôn ngữ Java, được biên dịch thành mã bytecode, mã này sẽ được máy ảo Java thực thi và biên dịch thành mã Dalvik bytecode, lưu trữ dưới dạng tệp định dạng (*.dex) và (*.odex)

- Trong các máy có giới hạn về dung lượng RAM, và CPU thì các bộ mã Dalvik được nén

- Dalvik là mã nguồn mở, nguyên gốc được phát triển bởi Dan Bornstein, Dalvik thuộc Ireland Android version 4.4 KitKat đã thay thế Dakvil

(2) FX!32 22: Là chương trình giả lập phần mềm cho phép các chương trình win32 xây dựng trên nền tảng tập lệnh Intel X86 thực thi DEC – Alpha trên nền tảng window NT, DEC được phát triển bởi Digital Equipment Corporation (3) Parrot 26: Là một thanh ghi dựa trên máy ảo tiến trình được thiết kê để chạy ngôn ngữ động hiệu quả, Parrot có khả năng biên dịch ngôn ngữ hợp ngữ Parrot

Trang 22

Nghiên cứu và đánh giá kiến trúc máy ảo Java

phần mềm được cài đặt trên nền tảng OS

và chạy song song với máy tính

và PIR (một ngôn ngữ trung gian) để biên dịch mã bytecode và thực thi Parrot

là mã nguồn mở và free

- Được phát triển bởi ngôn ngữ lập trình Perl và được phát triển với sự hỗ

rợ từ mã nguồn mở và cộng đồng phần mềm miễn phí

(4) Stack machine 27 : Sử dụng ngăn xếp

để đánh giá, mô phỏng các lệnh trong chương trình Máy ảo này gồm 3 thành phần:

- Vùng nhớ lệnh: chứa các lệnh, số lệnh gồm lệnh số học trên số nguyên, lệnh thao tác trên stack và nhóm lệnh điều khiển thứ tự

- Vùng stack: nơi thực hiện các chỉ thị trên các phép toán số học

- Vùng dữ liệu: chứa dữ liệu

1.2 MÁY ẢO TIẾN TRÌNH

Thông thường một máy tính phải làm việc với một số lượng lớn các chương trình cùng tồn tại trong một môi trường hệ thống, bao gồm một hoặc nhiều bộ xử lý, bộ nhớ, một hệ thống tệp tin, số lượng các thiết bị ngoại vi Người dùng gọi và tương tác với các chương trình bằng việc sử dụng công cụ giao tiếp được hỗ trợ bởi thư viện và

OS Một giới hạn quan trọng những chương trình mà người dùng có thể chạy phải được biên dịch và tập lệnh của bộ xử lý phải hỗ trợ, ứng dụng quan trọng của VM là loại bỏ hạn chế này và cho phép người dùng chạy chương trình đã biên dịch trên các

OS khác nhau, một số kiến trúc máy ảo cung cấp khả năng này

Trang 23

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Trong chương này đề cập tới việc cung cấp môi trường ảo cho một chương trình, hoặc một tiến trình, mức độ Việc sử dụng máy ảo tiến trình, chương trình viết cho máy khách và chương trình viết cho máy chủ có thể được cài đặt và sử dụng như nhau

và không có sự khác nhau trong việc tương tác với hai chương trình này Trong chương này cũng xem xét và thảo luận về máy ảo tiến trình, cấu trúc máy ảo tiến trình, các vấn đề về tương thích, tiếp sau đó là các phần chính: trạng thái ánh xạ giữa máy chủ và máy khách, và mô phỏng kiến trúc đánh địa chỉ trong bộ nhớ, các lệnh, các ngoại lệ, các lời gọi hệ thống, kỹ thuật quản lý bộ nhớ đệm của mã lệnh Cuối cùng xem xét việc nạp và khởi tạo chương trình

Các chương trình máy tính được biên dịch, được phân phát, và được lưu trữ dưới

dạng mã nhị phân phù hợp với đặc tả dạng giao diện nhị phân ứng dụng ABI gồm

các đặc điểm của các tập lệnh phần cứng, OS

Hình 5 Tiến trình khách của máy ảo giao tiếp với tiến trình chủ

Ứng dụng cần thiết để thực thi được đều nằm trong một tiến trình khách riêng biệt Các tiến trình khách có thể tương tác với các tiến trình chủ Hơn nữa tiến trình khách

có thể tương tác với các tiến trình khách khác như chúng đang chạy trên máy tính

thật Trang 98-100 1

Trang 24

Nghiên cứu và đánh giá kiến trúc máy ảo Java

1.2.1 Cấu trúc của máy ảo tiến trình

Các khối tính toán chính và cấu trúc dữ liệu của máy ảo tiến trình, bao gồm các thành phần chức năng tương ứng sau:

- Bộ nạp (Loader): Thực hiện việc ghi các mã và dữ liệu khách vào vùng nhớ của hình ảnh bộ nhớ máy khách (Guest’s memory image), các thông tin này nạp vào

khi thực thi mã lệnh Guest’s memory image chứa mã ứng dụng, dữ liệu của máy khách, tất cả dữ liệu này có liên quan vì mã nguồn không thực thi trực tiếp Hơn nữa mã nguồn đóng vai trò là dữ liệu đầu vào để biên dịch thành mã nhị phân

- Bộ nạp sau đó trả quyền điều khiển về Khối khởi tạo, Khối khởi tạo xác định không gian bộ nhớ dành cho bộ nhớ đệm mã và các bảng được sử dụng trong tiến trình mô phỏng Tiến trình khởi tạo cũng yêu cầu OS chủ thiết lập kênh xử

lý tín hiệu cho tất cả các điều kiện bẫy lỗi có thể xảy ra Sau quá trình khởi tạo

- Engine mô phỏng: sử dụng hai phép toán “and” hoặc “or” nhị phân để mô phỏng

các lệnh của máy khách Nếu phép dịch nhị phân được sử dụng như một phương thức mô phỏng, thì các mã đích đã dịch được giữ trong bộ nhớ mã đệm (code Cache), Bộ nhớ mã đệm được tạo ra trong quá trình dịch, là một vùng mã thực thi trong quá trình mô phỏng Nếu mô phỏng được thực hiện qua thông dịch với một dạng mã giả (mã trung gian), các chỉ dẫn của đoạn mã giả này được lưu trữ trong cấu trúc bộ đệm tương tự

- Kích thước dung lượng của code Cache có giới hạn, Trình quản lý bộ nhớ đệm

cho các mã quyết định những giao dịch nào có thể bị từ chối để dành không gian trong bộ nhớ này cho các giao dịch mới được sinh ra

- Hồ sơ cơ sở dữ liệu (profile database) – chứa thông tin chương trình được lựa

chọn động, thông tin được sử dụng để chỉ dẫn việc ưu hóa trong tiến trình Sử

dụng profile database này giống các phương thức tối ưu

Trang 25

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Hình 6 Quá trình thực hiện của máy ảo tiến trình

- Trước quá trình mô phỏng thì chương trình khách thực hiện một cuộc gọi hệ

thống Mô phỏng cuộc gọi tới OS chủ (OS call emulator) chuyển cuộc gọi này

vào OS chủ kết quả là sau đó xử lý bất kỳ thông tin nào được OS chủ trả về

- Quá trình thực thi phải xử lý đồng thời các bẫy lỗi xảy ra trong quá trình thực thi biên dịch lệnh hoặc các lệnh đã được biên dịch, thực thi phải xử lý bất kỳ ngắt nào trong tiến trình khách, mô phỏng ngoại lệ (exception emulator) sẽ thực hiện việc mô phỏng này Trong một vài trường hợp, exception emulation bị loại

bỏ nếu OS chủ gửi ngắt khác mức ưu tiên cao hơn trong khi thực thi, trường hợp khác, quá trình mô phỏng phát hiện một điều kiện loại trừ và nhảy tới exception emulator Quan trọng của việc xử lý ngắt là đưa ra kết quả, trạng thái đúng của tiến trình khách (gồm bộ đếm chương trình, các giá trị thanh ghi, các bẫy điều kiện) khi một điều kiện loại trừ xảy ra

- Các bảng ngoại lệ (side tables): Cấu trúc dữ liệu được được sinh ra là một phần của tiến trình giao dịch và được sử dụng lúc thực thi trong tiến trình mô phỏng Tính chất quan trọng của việc sử dụng Side tables là việc thực hiện chính xác

mô hình ngoại lệ đối với tập lệnh ISA

Trang 26

Nghiên cứu và đánh giá kiến trúc máy ảo Java

1.2.2 Khả năng tương thích

Trong thực thi máy ảo tính tương thích là trung tâm và quan trọng, mức độ chính xác với những hoạt động của máy khách được mô phỏng trên nền máy chủ, được so sánh với cách hoạt động trên chính nền tảng máy chủ

Xác định khả năng tương thích bao gồm: các kiểu hoạt động và chấp nhận ngoại lệ: bao gồm những khác nhau liên quan đến hiệu năng, mặc dù hiệu năng không phải

là một phần của định nghĩa khả năng tương thích Hiệu năng được xem xét khi triển khai nhiều máy ảo tiến trình Trên thực tế mức độ tương thích đạt được phụ thuộc nhiều vào sự chấp nhận được của mức độ suy giảm hiệu suất

Các khả năng tương thích

Tương thích nội (Intrinsic compatibility): Khả năng tương thích này dựa hoàn toàn

vào thuộc tính của các máy ảo Tương thích nội giữ trạng thái của phần mềm khách

và tất cả khả năng của dữ liệu đầu vào Bao gồm các chương trình ngôn ngữ hợp ngữ đều có thể trở thành dữ liệu đầu vào của chương trình Khi máy ảo sử dụng mức độ tương thích này đồng nghĩa với việc các phần mềm thực thi trên máy ảo giống như thực thi trên máy thật không cần phải có bất kỳ một chứng thực, chứng thực hoạt động tại thời điểm máy ảo được xây dựng Đây là chuẩn thường được sử dụng trong thiết kế tính tương thích của tập lệnh ISA với phần cứng của bộ vi xử lý

Tương thích ngoại (Extrinsic compatibility) - Đây là dạng tương thích phụ thuộc

vào hệ thống bên ngoài hoặc những chứng nhận liên quan đến mô tả phần mềm, tương thích ngoài được mô tả trong phần mềm Ví dụ các chương trình được biên dịch với một đảm bảo về biên dịch và sử dụng một tập các thư viện có thể xác định mức độ tương thích ngoại Ngoài ra, một chương trình có thể tương thích miễn là chương trình này giới hạn việc yêu cầu tài nguyên… Kiến trúc không gian bộ nhớ yêu cầu nhỏ hơn không gian lớn nhất của bộ nhớ có thể được hỗ trợ bởi nền tảng máy chủ Tương thích ngoại yêu đưa đến yê cầu một cách rõ ràng về các thuộc tính bên ngoài

mà ở đó ở đó khả năng tương thích có thể đạt được

Khung tương thích (Compatibility Framework)

Trang 27

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Việc xác định tương thích là vấn đề khó Trong hệ thống phức tạp như hệ thống máy ảo, tính tương thích được đảm bảo chắc chắn qua việc kiểm tra mức độ phù hợp với yêu cầu của người dùng bởi vì quá khó kiểm chứng Xem xét tổng thể hệ thống giống bao gồm: OS, phần mềm khách, phần mềm máy ảo và nền tảng phần cứng

Để xây dựng khung tương thích, xem xét 2 thành phần (1) – Trạng thái ánh xạ, (2) – Các hoạt động ở đó chuyển đổi trạng thái giữa máy chủ và máy khách Một chương trình ứng dụng thực hiện các thao tác trạng thái bằng 2 cách:

-Thực hiện các lệnh trong tập lệnh ISA của người dùng

-Thông qua các cuộc gọi với OS

Hai trạng thái gồm: trạng thái người dùng quản lý và trạng thái OS quản lý Trạng thái người dùng quản lý là hoạt động tập lệnh người dùng và bao gồm kiến trúc chính của bộ nhớ và các thanh ghi Trạng thái OS quản lý bao gồm hệ thống tệp tin trên ổ đĩa, các thiết bị lưu trữ khác như trạng thái liên kết với nguồn tài nguyên như màn hình hiển thị, và mạng

vì nó có nhiều dạng, và các hoạt động trong cùng trạng thái được biểu diễn trừu tượng dưới OS, tuy nhiên khái niệm về ánh xạ trạng thái là giống nhau

b Các hoạt động

Chương trình chạy trên nền tảng chủ thực thi các lệnh mức người dùng, đôi khi chương trình chuyển quyền điều khiển tới OS (các cuộc gọi hệ thống, các chương trình bẫy lỗi, hoặc các ngắt) Khi OS kết thúc phục vụ một cuộc gọi, bẫy lỗi, hoặc ngắt, thì quyền điều khiển được trả lại về mức các chỉ dẫn người dùng

Trang 28

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Hình 7 Mô tả chuyển trạng thái điều khiển giữa chỉ dẫn người dùng và OS

Lệnh mức người dùng làm thay đổi trạng thái quản lý người dùng, và OS thực hiện các hoạt động mà ở đó việc thay đổi trạng thái quản lý OS với hoặc trạng thái người dùng quản lý

Trong máy ảo tiến trình, các hoạt động và chuyển quyền điều khiển qua lại tương ứng với hoạt động và chuyển đổi quyền đó trên nền tảng chủ Engine mô phỏng sử dụng biên dịch “and” hoặc “or” nhị phân để mô phỏng các lệnh người dùng, OS và giả lập mô phỏng thực hiện các chức năng của OS Để làm được điều này, quá trình

mô phỏng thực thi có hoặc không thực hiện cuộc gọi tới OS chủ, phụ thuộc vào các hoạt động đã được mô phỏng Trong nhiều trường hợp, mỗi lần chuyển giao quyền điều khiển giữa mã người dùng và OS chủ, phải xác định các điểm tương tác ở đó quyền điều khiển được chuyển giao trong máy ảo Thiết lập ánh xạ 1 -1 giữa các điểm chuyển giao quyền điều khiển là một phần trong cấu trúc bắt buộc trong máy ảo tiến trình giống như một phần các framework

c Điều kiện cần trong tương thích: Hai điều kiện cần trong vấn đề tương thích

1.Tại điểm chuyển giao điều khiển từ lúc mô phỏng tập lệnh người dùng vào trong

OS Trạng thái máy khách, máy chủ tương đương nhau trong quá trình ánh xạ Điểm quan trọng của điều kiện là trang thái người dùng quản lý không được duy

Trang 29

Nghiên cứu và đánh giá kiến trúc máy ảo Java

khiển mức OS Điều này cho phép sự linh hoạt trong việc mô phỏng Đặc biệt,

mã đích có thể được tổ chức sắp xếp lại nhằm tối ưu hóa, trạng thái quản lý người dùng là giống nhau khi quyền điều khiển được chuyển giao cho OS hoặc

mô phỏng ngoại lệ

2.Tại thời điểm quyền kiểm soát được trả về mức tập lệnh người dùng, trạng thái máy khách tương đương với máy chủ trong quá trình ánh xạ Việc kết hợp giữa thực thi và các hoạt động của OS khách trên OS chủ, những hoạt động mô phỏng của máy khách với các hành động OS máy chủ có thể tạo ra hành vi của hệ thống như là việc chỉnh sửa trạng thái máy khách Ví dụ điều khiển thiết bị đầu cuối như hình ảnh, giao tiếp mạng, thứ tự hoạt động phải tương đương toàn bộ trạng thái thay đổi được xem xét tại thời điểm chuyển giao quyền

Thực hiện độc lập

Phân chia giữa kiến trúc và thực hiện là trọng tâm để thiết kế các hệ thống máy tính Phân chia này minh chứng bằng tập lệnh ISA, phân chia các đặc điểm chức năng trong thiết kế từ các đặc điểm thực hiện.Tuy nhiên, có nhiều trường hợp ở đó các đặc điểm thực hiện biểu hiện rõ ràng trong kiến trúc và có sự khác nhau giữa chức năng

Ví dụ phổ biến nhất liên quan đến bộ nhớ Cache, xảy ra trong các bộ xử lý việc phân chia lệnh và các bộ nhớ đệm dữ liệu Nếu chương trình sử dụng chính bộ nhớ của nó để ghi tập lệnh vào đó, một vài bộ vi xử lý không tự động thực hiện cập nhật các nội dung vào trong bộ nhớ đệm, trong phiên bản cũ việc chỉnh sửa các lệnh được duy trì trong bộ đệm cho đến khi nó được thay thế Điều này có thể không xác định bởi vì kết quả của một chương trình có thể phụ thuộc vào sự kiện bên ngoài như các chuyển đổi nội dung làm ảnh hưởng đến các nội dung lệnh bộ nhớ đệm Để tránh ảnh hưởng này tăng lên (lập trình viên hoặc trình biên dịch) sẽ đẩy các lệnh vào bộ đệm sau khi các mã được thực thi

Một sự kiện phát sinh có thể tăng độ phức tạp, việc thực hiện các lệnh ISA đòi hỏi khắt khe hơn với yêu cầu đặc biệt Ví dụ xem xét lại về bộ đệm của lệnh Trạng thái đặc biệt của ISA có thể tự chỉnh sửa mã lệnh là một đảm bảo để tăng hiệu quả nếu bộ

Trang 30

Nghiên cứu và đánh giá kiến trúc máy ảo Java

đệm bị từ chối trong việc thực thi lệnh Mặt khác kết quả không được xác định Tuy nhiên đây có thể là tất cả việc tự chỉnh sửa mã lệnh để phù hợp với thực tế, thậm trí

bộ đệm lệnh từ chối các lệnh đã được thực thi Có thể việc tự chỉnh sửa các mã lệnh không đưa ra các bộ đệm lệnh được mô tả nhưng nó vẫn làm việc khi thực thi

1.2.3 Ánh xạ trạng thái

Hình dưới mô tả một kiểu trạng thái ánh xạ, dữ liệu và mã của máy khách được ánh xạ vào không gian địa sử dụng trên máy chủ và việc chia sẻ không gian địa chỉ của người dùng trên máy chủ với dữ liệu và mã thực thi

Hình 8 Trạng thái ánh xạ giữa máy khách – chủ

Vì máy ảo tiến trình coi bộ nhớ là không gian địa chỉ logic, không gian địa chỉ này được hỗ trợ bởi máy chủ (bộ nhớ trong nội dung này có nghĩa là không gian địa chỉ logic, không phải là bộ nhớ thật trên máy chủ RAM) Theo hình 8, vùng không gian địa chỉ bộ nhớ của máy khách ánh xạ tới vùng không gian địa chỉ trên máy chủ Trạng thái thanh ghi máy khách được ánh xạ vào các thanh ghi của máy chủ và vùng dữ liệu thực thi hoặc được duy trì trong vùng dữ liệu thực thi của bộ nhớ chính Một trạng thái quan trong là trạng thái máy khách không được duy trì giống với kiểu tài nguyên trên nền tảng máy chủ Đơn giản, trong một vài ngữ cảnh, điều này có thuận tiện để ánh xạ bộ nhớ máy khách vào lưu trữ hệ thống tệp hơn là lưu trong bộ

Trang 31

Nghiên cứu và đánh giá kiến trúc máy ảo Java

nhớ chính của máy chủ Tuy nhiên, cách ánh xạ trạng thái được thực hiện có một ý nghĩa quan trọng về các kỹ thuật mô phỏng sử dụng và hiệu suất kết quả đạt được

Ánh xạ thanh ghi

Nếu số lượng thanh ghi tập lệnh ISA của máy khách ít hơn số lượng thanh ghi ISA của máy chủ, có thể ánh xạ tất cả các thanh ghi của máy khách vào trong máy chủ trong quá trình mô phỏng Trong điều kiện một khối nội dung của thanh ghi được duy trì trong trong bộ nhớ của tiến trình thực thi Việc tiến hành nạp và không nạp nội dung thanh ghi từ/tới một khối giống như việc nhập vào và thoát ra Quá trình thực thi có thể sử dụng tất hoặc hầu hết các thanh ghi khi nó thực hiện các nhiệm vụ, hơn nữa việc mô phỏng và sau đó trả lại các thanh ghi về cho máy khách trong quá trình thực hiện mô phỏng

Nếu số thanh ghi trong máy khách và máy chủ bằng hoặc gần bằng nhau Có thể không ánh xạ tất các thanh ghi của máy chủ vào thanh ghi của máy khách nhưng điều này gây ra một vấn đề nếu tiến trình mô phỏng yêu cầu thêm các thanh ghi, hoặc việc thực thi tối ưu hóa động các mã đã thực thi Một vài ISA, việc nạp và hủy nạp nội dung của các thanh ghi có thể là vấn đề bởi vì trong danh sách thực hiện lưu trữ tới khối nội dung thanh ghi, một thanh ghi cần giữ địa chỉ của khối nội dung đó Nếu tất

cả các thanh ghi được dùng cho tiến trình mô phỏng, sau đó việc thêm các thanh ghi không thực hiện được

Nếu số lượng các thanh ghi của máy khách lớn hơn số lượng thanh ghi của máy chủ, một vài thanh ghi của máy khách phải được ánh xạ tới khối nội dung thanh ghi trong bộ nhớ của máy chủ

Ánh xạ không gian địa chỉ bộ nhớ

Tập lệnh của máy chủ, máy khách đều có một kiến trúc bộ nhớ đặc biệt, tập lệnh làm nhiệm vụ của tiến trình mô phỏng thực thi để ánh xạ từ không gian địa chỉ máy khách tới không gian địa chỉ máy chủ, và duy trì bảo vệ các yêu cầu Đặc biệt khi một

chương trình khách thực hiện nạp, lưu trữ, hoặc đẩy lệnh, địa chỉ A cùng với không

gian địa chỉ máy khách xác định trong tập lệnh ISA Tuy nhiên, sau trạng thái ánh xạ,

Trang 32

Nghiên cứu và đánh giá kiến trúc máy ảo Java

dữ liệu hoặc mã trong địa chỉ A của máy khách thực tế có thể thay thế bằng A’, cùng

với không gian địa chỉ máy chủ và phần mềm mô phỏng thực thi cũng phải thực hiện ánh xạ không gian địa chỉ như đã yêu cầu Việc thực hiện mô phỏng lệnh có một loạt khả năng để thực hiện ánh xạ không gian địa chỉ mở rộng các mức khác nhau, được xác định bởi số lượng tương đối trong việc thực thi

a Phần mềm thực thi – các bảng hỗ trợ giao dịch

Trong hình dưới chỉ ra phương thức có thể trong mô phỏng kiến trúc bộ nhớ Với lệnh biên dịch Một bảng phần mềm giao dịch được duy trì trong quá trình thực thi

Hình 9 Mô phỏng kiến trúc địa chỉ bộ nhớ qua một phần mềm chuyển giao địa chỉ

Bằng phương pháp này thì địa chỉ máy khách không cần tiếp tục ánh xạ tới không gian địa chỉ máy chủ, không gian địa chỉ máy khách có thể được phân chia thành các khối Sau khi địa chỉ máy khách được chuyển giao tới địa chỉ của máy chủ bằng cách tra cứu để tìm kiếm địa chỉ cùng với không gian địa chỉ máy chủ, tại vị trí bắt đầu của máy khách

Hình 9 mô tả phương thức mở rộng Khi thực hiện mở tệp trên ổ đĩa (tệp được lưu trong bất kỳ một không gian địa chỉ máy khách), tệp không lưu trên không gian địa chỉ máy chủ Không gian địa chỉ ảo hóa máy khách được ánh xạ tới vùng không gian địa chỉ ảo của máy chủ và ánh xạ tới một bộ nhớ thật

Trang 33

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Hình 10 Ánh xạ không gian địa chỉ máy khách tới một vùng không gian trên máy chủ, Quản lý phần mềm thực thi trong không gian địa chỉ máy chủ giống như OS chủ thực hiện quản lý không gian bộ nhớ thật

Trong quá trình chạy không gian địa chỉ ảo hóa máy chủ được ánh xạ tới bộ nhớ thật trên máy của OS Tại bất kỳ một thời điểm nào, một vùng nhớ của máy khách có hoặc không tồn tại trong bộ nhớ chính, vì thế bảng giao dịch là phần thêm với một

giá trị bit để chỉ ra có hoặc không được phép truy nhập vào vùng nhớ của máy khách

trong không gian địa chỉ máy thật Phần mềm thực hiện truy cập tới bảng giao dịch,

không chỉ thực hiện tìm kiếm địa chỉ mà còn kiểm tra giá trị bit và và phân nhánh để

phần mềm quản lý bộ nhớ khi không tồn tại truy cập bộ nhớ đó Quản lý bộ nhớ thực thi sau đó quyết định khối nào bị thay thế, thực hiện ghi vào, suất ra trên ổ đĩa, chỉnh sửa bảng giao dịch sau đó trả về việc mô phỏng

b Các phương thức giao dịch trực tiếp

Đây là phương thức ánh xạ phụ thuộc vào phần ứng ít phụ thuộc vào phần mềm máy ảo Việc này giống với phương thức giao dịch nhị phân để mô phỏng các chỉ dòng dẫn lệnh Có 2 phương thức giao dịch trực tiếp được môt tả trong hình dưới

Trang 34

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Hình 11 ánh xạ trực tiếp từ không gian địa chỉ máy khách và không gian địa chỉ máy chủ

(Hình a) địa chỉ khách thay thể bởi một vài hằng trong không gian địa chỉ máy chủ (Hình b) địa chỉ khách được thay thế cùng với vị trí của không gian địa chỉ máy chủ Trong hình (a), không gian địa chỉ của máy khách được thay thế bởi giá trị thay

thế định sẵn (Fixed offset) nhưng vẫn tiếp giáp với không gian địa chỉ máy chủ Trong trường hợp này, giá trị offset có thể vẫn nằm trong một thanh ghi của máy chủ, mỗi

một giá trị trong địa chỉ của máy khách được thêm vào trong quá trình mô phỏng Trong ví dụ, thực hiện thay thế tại vùng đầu tiên của không gian địa chỉ máy chủ, chương trình của máy khách được thay thế tại đoạn đầu tiên, mỗi một vị trí trong đoạn không gian các địa chỉ máy khách được đặt một lượng nhất định để chỉ ra vị trí trong không gian địa chỉ máy khách Ánh xạ đoạn được sử dụng trong mã mô phỏng Trong hình (b) là trường hợp đặc biệt, đoạn giá trị thay thế được đặt bằng 0, có nghĩa là địa chỉ máy khách giống với vị trí không gian địa chỉ ảo trong máy chủ Phần mềm cần xác định vị trí ở bên trên phần không gian địa chỉ được cấp phát cho máy khách Đây là kết quả trong một ánh xạ đơn giản giữa địa chỉ máy khách tới địa chỉ máy chủ trong quá trình mô phỏng Trường hợp này bộ nhớ nguồn nạp và lưu trữ các chỉ dẫn có thể thường xuyên trao đổi một – một mà không cần thêm các chỉ dẫn khác

Trang 35

Nghiên cứu và đánh giá kiến trúc máy ảo Java

1.2.4 Mô phỏng kiến trúc bộ nhớ

Ánh xạ không địa chỉ và phương thức thực hiện là mục đích trọng tâm trong kiến trúc bộ nhớ, hai thành phần này được mô phỏng trong tiến trình của máy ảo Có ba đặc điểm quan trọng trong kiến trúc bộ nhớ ABI:

- Cấu trúc tổng thể của không gian địa chỉ: dù được chia thành các đoạn, một

không gian địa chỉ tuyến tính, một vùng ABI sử dụng không gian địa chỉ tuyến tính, các kỹ thuật cho ảo hóa phân đoạn trong bộ nhớ có thể được xây dựng dựa trên các kỹ thuật không gian địa chỉ tuyến tính

- Các kiểu truy cập đặc biệt được hỗ trợ: hỗ trợ quyền đọc, ghi, thực hiện Tùy trường hợp lựa chọn tổ hợp các quyền này

- Bảo vệ và xác định mức độ chi tiết: kích thước khối nhỏ nhất trong bộ nhớ được

xác định bởi OS và tại đó mức độ chi tiết được bảo vệ để duy trì, trong hầu hết

các hệ thống mức độ chi tiết của việc cấp phát bộ nhớ là giống nhau

Các giao diện ABI phổ biến xác định kích thước và phạm vi địa chỉ sẵn sàng để sử dụng, hình dưới mô tả ABI cho Win32, Hai khối 64KB được giữ cho hệ thống Vị trí bit số 31 được giữ cho hệ thống, tất cả các vị trí khác ngoài hai vị trí này đều được sử dụng Người dùng cũng có thể đề nghị một vùng nhớ, nghĩa là cho phép một không gian địa chỉ trên ổ đĩa để lưu paging Một điểm chính là sử dụng các tiến trình để cho phép truy cập tới tất cả địa chỉ kể cả trong phạm vi không xác định trước Điều này rất quan trọng trong các ứng dụng vì quá trình thực thi phải chia sẻ không gian địa chỉ với tiến trình

Trang 36

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Hình 12 Kiến trúc bộ nhớ Win32, với 2 bit giữ bởi hệ thống Sử dụng từ bit số 2 - bit 30

Bảo vệ bộ nhớ

Vấn đề quan trọng trong kiến trúc bộ nhớ là bảo vệ bộ nhớ Trong tập lệnh ISA,

có ba quyền: Đọc, Ghi, Thực thi

Nếu một bảng giao dich phần mềm được sử dụng (hình 9), việc đảm bảo mô phỏng

là phải rõ ràng Bảo vệ thông tin có thể được giữ lại trong bảng giao dịch và việc kiểm tra có thể hoàn thành là một phần của tiến trình giao dịch Điều này là cần thiết để hoàn thiện một phiên bản phần mềm trong hệ thống nhớ ảo hóa, nhược điểm của phương pháp này an toàn nhưng tốc độ thực hiện chậm

Với việc truy cập trực tiếp hoặc theo địa chỉ đoạn (hình 11), không có bảng giao dịch phần mềm cho việc duy trì các thông tin đặc biệt Rõ ràng, một bảng phần mềm

có thể được sử dụng cho mục đích đặc biệt cho việc kiểm tra bảo vệ, phương pháp này hiệu quả Tính độc lập được cung cấp & hỗ trợ bởi nền tảng OS của máy chủ, phương pháp hiệu quả nằm ở việc phần cứng có được triển khai cho việc kiểm tra bảo vệ, Đây là những yêu cầu ở đó quá trình thực thi có một số ý nghĩa, việc truy cập trực tiếp tới OS để thực hiện bảo vệ phân trang phù hợp với các yêu cầu trong mô phỏng của máy khách

Trang 37

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Bảo vệ bộ nhớ có thể được mô phỏng dưới nền tảng máy chủ và có 2 đặc điểm sau:

1 Một cuộc gọi tới hệ thống từ ứng dụng (trong trường hợp này là quá trình thực thi) việc xác định một trang và các quyền truy nhập vào trang đó (đọc, ghi, thực thi hoặc không)

2 Một tín hiệu cho một lỗi truy cập đến bộ nhớ có thể được chuyển giao trong quá trình thực thi mỗi khi vi phạm quyền truy cập vào bộ nhớ có chứa trang

Một vài OS chủ hỗ trợ các đặc điểm này, ví dụ trong OS Linux, thủ tục mprotect()

sẽ gọi và tín hiệu SIGSEGV sẽ cung cấp các tính năng bảo vệ bộ nhớ Thủ tục mprotect() quy định các thỏa thuận (1) – địa chỉ ảo hóa được gán trong danh giới

trang (2) – Kích thước và (3) mô tả quyền bảo vệ, bit OR được sử dụng để xác định các quyền đọc, ghi, thực thi còn tín hiệu SIGEGV sẽ chuyển nếu trang cho phép truy nhận với đặc quyền sai

Thêm vào đó để hỗ trợ phương thức truy cập trực tiếp trong các OS gần đây, có

nhiều cách để mô phỏng các đặc điểm bảo vệ này, ví dụ thủ tục mmap() của OS Linux

được sử dụng trong việc ánh xạ tới một vùng không gian địa chỉ của trong việc thực hiện điều khiển truy cập Vùng được ánh xạ là một tệp ở đó đã có các quyền truy cập, hình dưới mô tả

Hình 13 Ánh xạ một phần không gian địa chỉ ảo hóa của máy khách tới một tệp

Trang 38

Nghiên cứu và đánh giá kiến trúc máy ảo Java

Nếu phần mềm ứng dụng thử ngắt không cho truy cập, thủ tục SIGEGV sẽ được chuyển đi Trong trường hợp không có bất cứ cách nào để cung cấp việc thực hiện với khả năng kiểm soát truy cập tới phần mềm máy khách qua việc truyển khai một

số đặc điểm của máy chủ Quá trình thực thi có thể trả về lỗi với ảnh hưởng thấp nhất của việc ánh xạ truy cập bộ nhớ

Xem xét trường hợp kích thước trang nhớ của máy chủ, và máy khách khác nhau khi cấp phát và bảo vệ bộ nhớ Trong trường hợp tất cả các trang nhớ của máy chủ đều tương ứng với một trang của máy khách thì việc bảo vệ là giống nhau, Tuy nhiên khi kích thước trang nhớ máy khách nhỏ hơn trang nhớ của máy chủ Đây là nguyên nhân của vấn đề nếu việc bảo vệ khác nhau trong các trang nhớ của máy khách cùng chia sẻ trang nhớ với máy chủ Hình dưới mô tả trường hợp trang nhớ mã của máy khách và trang nhớ dữ liệu chia sẻ cùng với trang nhớ của máy chủ Các trang nhớ của khách có quyền truy nhập khác nhau nhưng trên hệ thống máy chủ các quyền này giống nhau

Hình 14 Trang nhớ của máy khách nhỏ hơn trang máy chủ

Kích thước trang khách nhỏ hơn kích thước trang chủ, mã và dữ liệu được phân tách trongtrang

máy chủ, đây là nguyên nhân khó khăn khi mô phỏng việc toàn vẹn bộ nhớ

Việc thay đổi mã và vùng dữ liệu trên trang nhớ của máy chủ có thể giải quyết vấn

đề nhưng việc làm này sẽ làm thay đổi vùng không gian địa chỉ của máy khách, các phần mềm mô phỏng ISA sẽ hoàn thiện việc thay đổi này bằng việc thêm các đối

tượng offset tới các địa chỉ máy khách cùng với thay đổi vùng nhớ Điều này không

Trang 39

Nghiên cứu và đánh giá kiến trúc máy ảo Java

chỉ làm ảnh hưởng đến hiệu quả của việc mô phỏng mà còn có thể làm giảm tính linh hoạt của mã mô phỏng bởi việc thêm sự phụ thuộc vào nền tảng máy chủ

Một cách khác để duy trì việc kiểm tra bảo vệ thông qua các nền tảng máy chủ như

đã mô tả, nhưng để có một cách tiếp cận thận trọng, cho toàn bộ trang nhớ của máy chủ là sử dụng quyền thấp hơn trong những trang nhớ của máy khách cùng chia sẻ trang nhớ Thực thi phải xử lý bất kỳ việc “thêm” bẫy lỗi nào được tạo ra hoặc qua tín hiệu xử lý phần mềm hoặc bằng cách quay trở lại ánh xạ phần mềm (và kiểm tra quyền)

Một vấn đề khác đó là so sánh đối chiếu hai tập lệnh ISA không giống nhau Nếu

máy chủ hỗ trợ bảo vệ máy khách ở mức superset, máy khách có thể được cấp sự bảo

vệ đúng Tuy nhiên, nếu các máy chủ chỉ hỗ trợ bảo vệ mức thấp hơn, sau đó phần mềm máy ảo phải sử dụng cách bảo vệ hoặc dựa vào kiểm tra phần mềm

Một trường hợp quan trọng ở đó máy chủ chỉ hỗ trợ quyền chỉ đọc, ghi trong khi khách hỗ trợ đọc, ghi, thực thi, đây là trường hợp phổ biến nhất của lỗi, khi đó ngắt thực hiện, với mô phỏng thông qua biên dịch, biên dịch mã có thể dễ dàng bảo vệ thực thi giống một phần hoạt động bình thường Với dịch nhị phân, bảo vệ thực thi cho mã máy khách phải chỉ được kiểm tra tại thời điểm thực hiện đọc mã máy khách

và thực hiện dịch Ngoài ra, thực thi phải có khả năng phát hiện các tình huống mà các ứng dụng thay đổi việc bảo vệ, nhưng điều này có thể được thực hiện một cách

dễ dàng như là một phần của tiến trình dịch trong OS Khi điều này xảy ra, bất kỳ mã dịch bị ảnh hưởng phải được loại bỏ

Tự tham chiếu và Tự chỉnh sửa mã

Khi một chương trình ứng dụng tự tham chiếu tới chính nó hoặc chỉnh sửa rồi tự ghi vào cùng mã, Đây là vấn đề tiềm ẩn khi giao dịch nhị phân được sử dụng, vì thực

tế việc thực thi là chuyển đổi mã, mã này không phải là mã gốc Nếu mã nguồn có quyền đọc, hoặc ghi vào chính nó sau đó chuyển thành một phiên bản khác tạo ra cùng một kết quả Trường hợp tự tham chiếu như vậy và tự hiệu chỉnh mã được mô phỏng chính xác trong quá trình thực thi

Trang 40

Nghiên cứu và đánh giá kiến trúc máy ảo Java

b Tự chỉnh sửa mã giả

Phương pháp mô tả ở trên là một cách đối phó lại việc tự chỉnh sửa mã, nhưng trong hầu hết các hoàn cảnh đặc biệt, việc này không làm ảnh hưởng đến hiệu suất bởi vì trong các chương trình việc tự chỉnh sửa mã là xu hướng không phổ biến Tuy nhiên, có những chương trình hoặc các loại chương trình mà tự chỉnh sửa mã hoặc tự sửa đổi mã giả không xảy ra thường xuyên gây ra tổn thất trong hiệu năng

Tự chỉnh sửa mã giả mô tả các hình huống ở đó dữ liệu được trộn lẫn với mã, viết

mã không đúng nghĩa sửa đổi, sẽ gây ra một lỗi bảo vệ, mã này đôi khi thấy trong lộ trình lắp ráp ngôn ngữ như trình điều khiển thiết bị, một số nhân trong các trò chơi

và mã nhúng

Để trống lại việc thường xuyên chỉnh sửa mã giả, một cách tiếp cận để kiểm tra động hoặc các nguồn mã nhị phân được chỉnh sửa trước khi thực hiện mã đã được dịch tương ứng, nếu việc ghi lỗi bảo vệ có lỗi cho một mã trong cùng khu vực liên

Ngày đăng: 26/07/2017, 21:03

HÌNH ẢNH LIÊN QUAN

Hình 5 Tiến trình khách của máy ảo giao tiếp với tiến trình chủ. - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 5 Tiến trình khách của máy ảo giao tiếp với tiến trình chủ (Trang 23)
Hình 7 Mô tả chuyển trạng thái điều khiển giữa chỉ dẫn người dùng và OS. - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 7 Mô tả chuyển trạng thái điều khiển giữa chỉ dẫn người dùng và OS (Trang 28)
Hình 9 Mô phỏng kiến trúc địa chỉ bộ nhớ qua một phần mềm chuyển giao địa chỉ. - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 9 Mô phỏng kiến trúc địa chỉ bộ nhớ qua một phần mềm chuyển giao địa chỉ (Trang 32)
Hình 10 Ánh xạ không gian địa chỉ máy khách tới một vùng không gian trên máy chủ, - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 10 Ánh xạ không gian địa chỉ máy khách tới một vùng không gian trên máy chủ, (Trang 33)
Hình 13 Ánh xạ một phần không gian địa chỉ ảo hóa của máy khách tới một tệp . - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 13 Ánh xạ một phần không gian địa chỉ ảo hóa của máy khách tới một tệp (Trang 37)
Hình 15 Tích hợp tiến trình máy chủ, khách trong máy ảo tiến trình. - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 15 Tích hợp tiến trình máy chủ, khách trong máy ảo tiến trình (Trang 53)
Hình 16 Nền tảng Java Platform Standard Edition (JavaSE 8) - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 16 Nền tảng Java Platform Standard Edition (JavaSE 8) (Trang 57)
Hình 17 Các kiểu dữ liệu trong máy ảo Java - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 17 Các kiểu dữ liệu trong máy ảo Java (Trang 62)
Hình 19 Các thành phần chính trong kiến trúc máy ảo Java - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 19 Các thành phần chính trong kiến trúc máy ảo Java (Trang 66)
Hình 34 Dữ liệu đối tượng được lưu trong một nơi - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 34 Dữ liệu đối tượng được lưu trong một nơi (Trang 81)
Hình 40 Các luồng trong PC, Java stack, Method Area - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 40 Các luồng trong PC, Java stack, Method Area (Trang 101)
Hình 47 CPU – System Rendering System – Java HotSpot 64 bit - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 47 CPU – System Rendering System – Java HotSpot 64 bit (Trang 109)
Hình 46 CPU – System Rendering System – Java HotSpot 64 bit - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 46 CPU – System Rendering System – Java HotSpot 64 bit (Trang 109)
Hình 50 Kết quả so sánh thực hiện chương trình Java2D Demo - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 50 Kết quả so sánh thực hiện chương trình Java2D Demo (Trang 111)
Hình 57 Kết quả so sánh thực hiện chương trình Sunflow Rendering System - Nghiên cứu và đánh giá kiến trúc máy ảo java
Hình 57 Kết quả so sánh thực hiện chương trình Sunflow Rendering System (Trang 115)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w