Outline Virtual Machine Java Virtual Machine Dalvik Virtual Machine 2 Concept A virtual machine VM is a software emulation of a real machine so that a nother operating system can run in the simulated machine ID: 657208
Download Presentation The PPT/PDF document "Mobile Handset Virtual Machine" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Mobile Handset Virtual MachineSlide2
Outline
Virtual Machine
Java Virtual MachineDalvik Virtual Machine
2Slide3
Concept
A virtual
machine (VM) is a software emulation of a real machine so thata
nother operating system can run in the simulated machine
m
ore than one different operating systems can run at the same timeFundamental idea: abstract the real hardware into different execution environments
3Slide4
VM
Components (1)Three components of a virtual machineHost: underlying hardware systemVirtual machine manager (VMM): creates and runs different virtual machines
Guest: the emulated operating system on the host system
4Slide5
VM
Components (2)5
Non-virtual machine
V
irtual machine
Host
VMM
GuestSlide6
System/Process VM
Two major kinds of virtual machines based on their emulation degree of real machines
System virtual machine: it provides a complete system platform to support a complete operating systemProcess virtual machine: it runs a single program and supports a single process
6Slide7
System VM
It usually emulates a platform to run programs where the real hardware is not available to use (for example, running Mac OS on a windows computer)
Multiple OSes can co-exist on the same physical hardware and are strongly isolated from each otherPopular virtual machine manager products: Xen
, VMware Workstation, Sun
Virtualbox
7Slide8
Process VM
It is created when the process is started and destroyed when the process exits. Its purpose is to provide a platform-independent programming environment so that a program can execute in a same way on any platform
For example, Java bytecode can run on any platform where there is a Java Virtual Machine and the code does not need to be recompiled.
8Slide9
Outline
Virtual Machine
Java Virtual MachineDalvik Virtual Machine
9Slide10
Java Virtual Machine
Java
Virtual machine (JVM) is the virtual machine that can execute Java bytecode
. It is the execution part of the Java platform
It helps Java to achieve its goal “write once, run anywhere” by hiding the differences between
different operating systems
10Slide11
Java Bytecode
Java bytecode is the instruction set for Java virtual machine
Each bytecode consists of two partsOne or two bytes that represent the instructionZero or more bytes for parameters
Java compiler compiles Java code into Java bytecode
. The Java programmer does not need to be aware of or understand Java bytecode
11Slide12
Example of Java Bytecode
12
Java Compiler
Java Code
Java Bytecode
instruction
Fucntion
iconst_n
Push the integer
constant n onto the stack
istore_n
Store
an integer value into the variable of index n
iload_n
Load an integer value from
variable of index n
sipush
Push a short
integer onto the stack
iinc
n
i
Increase variable
of index n by
iSlide13
JVM Workflow (1)
Java source code is compiled into Java bytecode which is stored within .class files
Each class in Java source code will be compiled into one .class file.The .class files are read and interpreted by JVM
13Slide14
JVM Workflow (2)
14
A.class
A.java
Java Compiler
B.class
Class Loader
Bytecode Interpreter
Java Virtual Machine
Compile source code
Java API
Host system
(Windows, Linux,
etc
)Slide15
JVM Components (1)
Class loader
Loads .class file into memoryVerifies bytecode instructionsAllocates memory for the program
15Slide16
JVM Components (2)
Runtime data area
Method area: it stores class and method codesHeap: it is the place where Java objects are created Java stacks: they are places where Java methods are executed
Program counter (PC) registers: they store memory addresses of the instructions which to be executed
Native method stacks: they are places where native methods (e.g. C programs) are executed. Native method is a function which is written in another language other than Java
16Slide17
JVM Components (3)
Native method interface: it is a program that connects native method libraries with JVM for executing native methods
Native method libraryExecution engine: it contains the interpreter which converts Java bytecode into machine code
17Slide18
JVM Architecture
18Slide19
Java Runtime Environment
19
We usually install
the Java Runtime Environment (JRE
) on our computers to use the Java platform
JRE consists of the JVM and Java APIsSlide20
Outline
Virtual Machine
Java Virtual MachineDalvik Virtual Machine
20Slide21
Introduction
Dalvik
virtual machine (DVM) is the process virtual machine in Google’s Android operating system. It executes applications written for Android.It is open-source software which was originally written by Dan Bornstein, who named it after the fishing village of Dalvik
in Iceland
21Slide22
Why DVM not JVM
When Google selected Java as the language for developing Android
applications, it chose DVM instead of JVM for several reasons:Though JVM is free, it was under GPL license, which is not good for Android as most the Android is under Apache license
JVM was designed for desktops and it is too heavy for embedded devices
DVM takes less memory, runs and loads faster compared to JVM
22Slide23
Android Architecture
23
Virtual
Machine
C/C++Slide24
Dalvik
Bytecode
Dalvik bytecode is the instruction set for Dalvik virtual machineAndroid programs are firstly compiled into Java bytecode which is in .class files. A tool called dx then converts Java bytecode into
Dalvik
bytecode
24Slide25
Dalvik
Bytecode VS Java Bytecode
25
Java source code
Dalvik
bytecode
Java bytecodeSlide26
Dalvik
Bytecode VS Java Bytecode
26Slide27
DEX File
A .
dex (Dalvik EXecutable)
file is used to store the
Dalvik
bytecode. It is converted from .class files and executed on the DVM The .dex file has been optimized for memory usage and the design principle is sharing of data
It
uses shared, type-specific constant pools as its primary mechanism for saving
memory
27Slide28
Constant Pool Concept
A constant pool is a table stores all constant values (e.g. string constants, field constants, class constants, etc.) used within a Java class.
Constant values are referred to by their index in the constant pool rather than stored throughout the class
Constant pool is the biggest
part of the Java class file
and takes up 61% of the file size
28Slide29
Constant Pool Optimization (1)
Although average size of one .class file is quite small, the size still matters because the time to read file from storage is a dominant factor in VM startup time
.dex file optimizes the constant pool when converted from .class files
29Slide30
Constant Pool Optimization (2)
In the .class file, each class has its own private, heterogeneous constant pool. It is heterogeneous because all types of constants (field, string, class, etc.) are mixed together
In the .dex file, all classes share the same type-specific constant pools. Duplication of constant values across different classes is eliminated
30Slide31
Constant Pool Optimization
(3)
31
Java Source Code
(.java files)
Heterogeneous Constant Pool
Other Data
.class
Heterogeneous Constant Pool
Other Data
.class
Heterogeneous Constant Pool
Other Data
.class
Strings Constant Pool
Other Data
.
dex
Class
Constant Pool
Field
Constant Pool
Method Constant Pool
Java
Compiler
d
x toolSlide32
Memory Saving Evaluation
The Android team found that .
dex file format cuts the size in half of some common system libraries and applications within Android system
32
Code
Size
of .c
lass
Files (bytes)
Size
of .
dex
File
(bytes)
Common System Libraries
21,445,320 (100%)
10,311,972 (48%)
Web Browser App
470,312 (100%)
209,248 (44%)
Alarm Clock App
119,200 (100%)
53,020 (44%)Slide33
Zygote (1)
Zygote is another concept used by Android to speedup VM performance
Every Android application runs in its own instance of the VM, so VM instances should be able to start quickly when a new application is launchedZygote enables code sharing across different VM instances and provide fast startup time for new VM instances
33Slide34
Zygote (2)
Zygote is a VM process which starts at system boot time. When Zygote starts, it initializes a VM instance and preloads core library classes which are good candidates for sharing across processes
Zygote will sit and wait for socket requests from other processes who need new VM instancesCold starting VM takes a long time. Once a request occurs, Zygote
will fork a new
VM
instance from itself and the startup time will be minimized
34Slide35
Zygote (3)
35Slide36
Android Runtime
Android Runtime (ART) is an application runtime environment used by Android operating system
It is designed to replace Dalvik virtual machine. It supports standard .dex
file to maintain backward compatibility
ART came out as an alternative runtime environment in Android 4.4
Dalvik virtual machine was entirely replace by ART in Android 5.0
36Slide37
Java Source Code to Android App
37
Java Source Code
(.java files)
Dalvik
Bytecode
.
dex
file
Java
Compiler
d
x tool
.class file
.class file
.class file
.class file
.class file
Java Bytecode
Resource files
Android App
.
apk
file
Package BuilderSlide38
Android Application Launch Procedure
Many things happen in the background when a user clicks on an icon and launch a new application
The click event gets routed to activity manager.
The activity manager sends parameters to Zygote process over the socket connection and creates a new process
Zygote forks itself and returns the new process ID
The activity manager attaches the new process to the application and the application’s classes will be loaded into the process’s memory
The application is launched
38Slide39
References (1)
http://
en.wikipedia.org/wiki/Virtual_machinehttp://www.virtual-managed-servers.com/process-virtual-machine.html
http://
www.virtual-managed-servers.com/system-virtual-machine.html
http://courses.mpi-sws.org/os-ss11/lectures/proc9.pdf
http://
en.wikipedia.org/wiki/Java_virtual_machine
http://www.utdallas.edu/~
muratk/courses/cloud11f_files/smith-vm-overview.pdf
www.cse.sc.edu/~
rose/311/ppt/
ch16
.ppt
http://web.cs.wpi.edu/~cs502/s06/LectureNotes
/
http://www.javaservletsjspweb.in/2012/02/java-virtual-machine-jvm-architecture.html#.
VOupzfnF9t8
http://skillgun.com/question/436/android/basics/what-is-the-difference-between-dvm-and-jvm-why-android-opted-for-dvm
39Slide40
References (2)
http://
multi-core-dump.blogspot.com/2010/04/android-application-launch-part-2.htmlhttp://multi-core-dump.blogspot.com/2010/04/android-application-launch.html
http://en.wikipedia.org/wiki/Dalvik_(software)
http://www.cs.duke.edu/~chase/cps210/slides/android-chase.pptx
40