虚拟机设计与实现--虚拟机组成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
                               ┌─────────────────────────────┐                                                            
│ │
│ │ ┌─────────────────────────────────────────┐
│ │ │ │
┌───▶│ Loaders and dynamic linkers │──────────────▶│For example, convert symbols to addresses│
│ │ │ │ │
│ │ │ └─────────────────────────────────────────┘
│ │ │
│ └─────────────────────────────┘




│ ┌─────────────────────────────┐
│ │ │
│ │ │ ┌─────────────────────────────────────────┐
│ │ │ │ │
├───▶│ Execution engine │───────────▶│ Execute opcode or machine code │
│ │ │ │ │
┌────────────────────┐ │ │ │ └─────────────────────────────────────────┘
│ │ │ │ │
│ │ │ └─────────────────────────────┘
│ │ │
│ virtual machine │ │ ┌─────────────────────────────────────────┐
│ │────┤ │Use traditional memory managers, such as │
│ │ │ ┌─────▶│ malloc and Free. Focus more on memory │
│ │ │ │ │ allocation │
│ │ │ ┌─────────────────────────────┐ │ └─────────────────────────────────────────┘
└────────────────────┘ │ │ │ │
│ │ │ │
│ │ │ │
├───▶│ Memory manager │─────┤
│ │ │ │
│ │ │ │
│ │ │ │ ┌──────────────────────────────────────────────┐
│ └─────────────────────────────┘ │ │ Or use the virtual machine's own memory │
│ │ │ allocation strategy to pay more attention to │
│ └─────▶│ memory recovery. For example, the garbage │
│ │ collector │
│ │ │
│ └──────────────────────────────────────────────┘

│ ┌─────────────────────────────┐
│ │ │ ┌──────────────────────────────────────────────┐
│ │ │ │ │
│ │ │ │ │
└────▶│ extension │──────────▶│ FFI │
│ │ │ │
│ │ │ │
│ │ └──────────────────────────────────────────────┘
└─────────────────────────────┘