Slide Thuyet Trinh

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Slide Thuyet Trinh as PDF for free.

More details

  • Words: 1,420
  • Pages: 30
Java Virtual Machine

Nội dung trình bày  Định

nghĩa về JVM và các khái niệm liên quan  Kiến trúc của JVM

Nhóm 12 _ K49CNPM

2/19

Định nghĩa về JVM và các khái niệm liên quan 

Máy ảo Java  Đặc

tả trừu tượng  Một cài đặt cụ thể  Một thể hiện thời gian chạy.  Tóm lại:Một chương trình Java chạy trên một thể hiện của một cài đặt cụ thể của đặc tả trừu tượng máy ảo Java.

Nhóm 12 _ K49CNPM

3/19

Định nghĩa về JVM và các khái niệm liên quan 

Thời gian sống của máy ảo Java Một thể hiện (instance) của JVM được sinh ra khi ứng dụng bắt đầu.  Thể hiện bị chết khi ứng dụng kết thúc.  Ứng dụng bắt đầu khi nó gọi hàm main() trong một lớp nào đấy của ứng dụng Class echo{ Public static void main(String args[]){ System.out.println(“Hello world”); } } 

Nhóm 12 _ K49CNPM

4/19

Kiến trúc của máy ảo java 

Các thành phần trong đặc tả của JVM:  Kiểu

dữ liệu (data types)  Class loader subsystem  Các vùng bộ nhớ (Memory areas)  Tập chỉ thị (Instructions).

Nhóm 12 _ K49CNPM

5/19

Kiến trúc của máy ảo Java

Nhóm 12 _ K49CNPM

6/19

Các kiểu dữ liệu

Nhóm 12 _ K49CNPM

7/19

Class loader subsystem 



Tải (loading): Tìm và tải dữ liệu nhị phân cho mỗi lớp Liên kết: 







Xác minh: Kiểm tra tính đúng đắn của lớp Chuẩn bị: Cấp phát bộ nhớ cho các biến, khởi tạo bộ nhớ cho các giá trị mặc định Chuyển đổi: Chuyển tham chiếu biểu tượng thành tham chiếu trực tiếp.

Khởi tạo: Gọi mã Java khởi tạo các biến cho lớp Nhóm 12 _ K49CNPM

8/19

Class loader subsystem (tiếp) 

Class loader subsystem gồm 2 loại: 



Bootstrap class loader:  Tải các lớp của hệ thống và các thư viện lập trình ứng dụng (API). User-define class loader:  Nhiệm vụ là tải các lớp do ứng dụng sinh ra  Các hàm dùng làm giao diện: Protected final Class defineClass( String name,byte data[], int offset, int length); Protected final Class defineClass(String name, byte data[], int offset, int length, ProtectionDemain protectionDomain); Protected final Class findSystemClass( String name) Protected final void resolveClass( Class C); Nhóm 12 _ K49CNPM

9/19

Các vùng bộ nhớ 

Method area: Chứa thông tin của lớp được tải  Tên

đầy đủ của lớp  Tên đầy đủ của lớp cha trực tiếp của nó  Bổ từ truy cập (public, abstract, final)  Danh sách có thứ tự tên đầy đủ của các giao diện mà lớp này thực thi.

Nhóm 12 _ K49CNPM

10/19

Các vùng bộ nhớ (tiếp) 

Method area (tiếp).  Constant

pool (Các đối tượng dùng

chung)  Thông tin về các trường của lớp.  Thông tin về các phương thức của lớp.  Một tham chiếu đến lớp classLoader.  Một tham chiếu đến lớp Class.  Bảng phương thức.

Nhóm 12 _ K49CNPM

11/19

Các vùng bộ nhớ (tiếp). 

Bộ nhớ heap:  Khi

một thể hiện (instance) của một đối tượng hoặc một mảng được tạo ra thì bộ nhớ cho chúng được cấp phát trong bộ nhớ heap đơn  Tất cả các luồng của ứng dụng đều chia sẻ nó.  Chỉ có chỉ lệnh cấp phát bộ nhớ, không có chỉ lệnh giải phóng bộ nhớ.  JVM sử dụng bộ thu gom rác để làm gọn bộ nhớ heap. Nhóm 12 _ K49CNPM

12/19

Các vùng bộ nhớ (tiếp) •

Mô tả đối tượng

Nhóm 12 _ K49CNPM

13/19

Các vùng bộ nhớ (tiếp) 

Mô tả đối tượng(tiếp).

Nhóm 12 _ K49CNPM

14/19

Các vùng bộ nhớ(tiếp). 

Bảng phương thức.

Nhóm 12 _ K49CNPM

15/19

Các vùng bộ nhớ (tiếp). 

Biểu diễn mảng.

Nhóm 12 _ K49CNPM

16/19

Ngăn xêp ́ Java Khi luồng mới được tạo ra, ngăn xếp Java cũng được khởi tạo  Bao gồm nhiều khung ngăn xếp 

 push()  Pop()



Luồng gọi phương thức: khung ngăn xếp mới được đẩy lên trên đỉnh ngăn xếp Java Nhóm 12 _ K49CNPM

17/19

Khung ngăn xêp ́ (Stack Frame) 

Gồm 3 phần  Biến

cục bộ  Ngăn xếp toán hạng (Operand Stack)  Dữ liệu khung ( Frame data) 

Kích thước các thành phần : từ (word)  Được

lưu trong file class của mỗi phương

thức  Kích thước vùng biến cục bộ và ngăn xếp toán hạng được xác định tại compile time Nhóm 12 _ K49CNPM

18/19

Khung ngăn xêp ́ (tiêp…) ́ 

Vùng biến cục bộ:  Mảng

zero-based  Tham số của phương thức, biến cục bộ 

Operand stack  Push(),



pop()

Dữ liệu của khung ( Frame data)  Dữ

liệu trỏ tới constant pool  Tham chiếu tới bảng ngoại lệ  Có thể gồm thông tin về hỗ trợ gỡ lỗi Nhóm 12 _ K49CNPM

19/19

Example : Local Variable 

Class Example{ 

public static int runClassMethod( int I, long l, float f, double d, Object O, byte b) {  return

 

} public int runInstanceMethod( char c, double d, short s, boolean b){  return





0;

0;

}

} Nhóm 12 _ K49CNPM

20/19

Example : Local Variable

Nhóm 12 _ K49CNPM

21/19

Example (cont …)

iload_0 iload_1 iadd istore_2

Nhóm 12 _ K49CNPM

22/19

Ngăn xếp phương thức cơ sở ( Native Method Stack ) 

Phương thức cơ sở có thể  Truy

cập vào vùng dữ liệu thời gian chạy.  Sử dụng thanh ghi trong bộ vi xử lý cơ sở 

Khi luồng gọi phương thức cơ sở  JVM

liên kết trực tiếp tới stack phương thức cơ

sở  Gọi trực tiếp phương thức cơ sở này

Nhóm 12 _ K49CNPM

23/19

Native Method stack

Nhóm 12 _ K49CNPM

24/19

Giao diện phương thức cơ sở (Native Method Interface) 



Đặc tả JVM không nêu sự bắt buộc của giao diện phương thức cơ sở Một phương thức cơ sở có thể tương tác với trạng thái bên trong của thể hiện JVM ở mức độ nào đó    



Truyền vào và trả về dữ liệu Truy cập vào thể hiện của biến, phương thức, đối tượng ... Tải một lớp mới Ném ngoại lệ

Ngoài ra việc thiết kế giao diện cũng yêu cầu một số dịch vụ khá phức tạp. Nhóm 12 _ K49CNPM

25/19

Máy thực thi (Excution Engine) 

Là cốt lõi của cài đặt máy ảo Java  Tập

chỉ lệnh ( tập trung câu hỏi what, nhưng lại không mô tả chi tiết how )  Có thể sử dụng theo 3 nghĩa:  Đặc

tả trừu tượng ( abstract specification) – tập chỉ lệnh ( instruction set)  Một cài đặt cụ thể ( concrete implementation) – cài đặt phần cứng, phần mềm hoặc cả hai  Thể hiện thời gian chạy ( runtime instance) – luồng ( excution engine in action) Nhóm 12 _ K49CNPM

26/19

Tập lệnh ( Instruction Set) Một chỉ lệnh gồm opcode 1 byte, có thể có (nhiều) hoặc không cần các toán hạng => Xác định các thao tác cần thực hiện  Một chỉ lệnh được thực hiện tại một thời điểm 

 Nạp

opcode  Nạp các toán tử cần thiết ( nếu có)  Thực thi  Nạp chỉ lệnh tiếp theo 

Thiết kế tập chỉ lệnh Nhóm 12 _ K49CNPM

27/19

Kĩ thuật thực thi ( execute technique) Các kĩ thuật thực thi: thông dịch, biên dịch, Just-in-time  Kĩ thuật: tối ưu hóa thích nghi ( adaptive optimization) 

 Phiên

dịch tất cả code, tập trung điều chỉnh đoạn mã thực thi  Định hình đoạn mã “hot spot” : sử dụng 80-90% thời gian thực thi

Nhóm 12 _ K49CNPM

28/19

Sumary : Java Virtual Machine JVM và một số khái niệm liên quan  Kiến trúc: 

 Class

loader subsystem  Method area, heap, java stack, pc register, native method stack  Excution engine, một số kĩ thuật thực thi.  Native method interface, native method libraries  Instruction set Nhóm 12 _ K49CNPM

29/19

Thanks for your attention !  Questions & Answers ??? 

Nhóm 12 _ K49CNPM

30/19

Related Documents

Slide Thuyet Trinh
November 2019 14
Slide Ky Nang Thuyet Trinh
October 2019 15
Thuyet Trinh
November 2019 21
Thuyet-trinh
July 2020 9
Bai Thuyet Trinh
May 2020 13
Thuyet Trinh Tomato
April 2020 14