Download Virtual Machine - Ohio State Computer Science and Engineering

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Mobile Handset Virtual Machine
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
 another
operating system can run in the simulated
machine
 more than one different operating systems can run
at the same time

Fundamental idea: abstract the real hardware
into different execution environments
3
VM Components (1)

Three components of a virtual machine
 Host:
underlying hardware system
 Virtual machine manager (VMM): creates and runs
different virtual machines
 Guest: the emulated operating system on the host
system
4
VM Components (2)
Guest
VMM
Host
Non-virtual machine
Virtual machine
5
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
system
 Process virtual machine: it runs a single program
and supports a single process
6
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 other
 Popular virtual machine manager products:
Xen, VMware Workstation, Sun Virtualbox

7
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.

8
Outline
Virtual Machine
 Java Virtual Machine
 Dalvik Virtual Machine

9
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

10
Java Bytecode
Java bytecode is the instruction set for Java
virtual machine
 Each bytecode consists of two parts

 One
or two bytes that represent the instruction
 Zero 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
11
Example of Java Bytecode
Java Bytecode
Java Code
Java Compiler
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 i
12
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

13
JVM Workflow (2)
A.java
A.class
Java Compiler
Compile source code
Java Virtual Machine
Class Loader
Bytecode Interpreter
B.class
Host system
(Windows, Linux, etc)
14
JVM Components (1)

Class loader
 Loads
.class file into memory
 Verifies bytecode instructions
 Allocates memory for the program
15
JVM Components (2)

Runtime data area
 Method
area: it stores class and method codes
 Heap: 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
16
JVM Components (3)
Native method interface: it is a program that
connects native method libraries with JVM for
executing native methods
 Native method library
 Execution engine: it contains the interpreter
which converts Java bytecode into machine
code

17
JVM Architecture
18
Java Runtime Environment
We usually install the Java
Runtime Environment (JRE)
on our computers to use the
Java platform
 JRE consists of the JVM and
Java APIs

19
Outline
Virtual Machine
 Java Virtual Machine
 Dalvik Virtual Machine

20
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

21
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
22
Android Architecture
Virtual
Machine
C/C++
23
Dalvik Bytecode
Dalvik bytecode is the instruction set for
Dalvik virtual machine
 Android programs are firstly compiled into
Java bytecode which is in .class files. A tool
called dx then converts Java bytecode into
Dalvik bytecode

24
Dalvik Bytecode VS Java Bytecode
Java source code
Java bytecode
Dalvik bytecode
25
Dalvik Bytecode VS Java Bytecode
26
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

27
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

28
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

29
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 typespecific constant pools. Duplication of
constant values across different classes is
eliminated
30
Constant Pool Optimization (3)
.class
Heterogeneous
Constant Pool
Other Data
Java
Compiler
Java Source
Code
(.java files)
.class
Heterogeneous
Constant Pool
Other Data
dx tool
.dex
Strings
Constant Pool
Class
Constant Pool
Field
Constant Pool
Method
Constant Pool
.class
Heterogeneous
Constant Pool
Other Data
Other Data
31
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
Code
Size of .class 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%)
32
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 launched
 Zygote enables code sharing across different
VM instances and provide fast startup time for
new VM instances

33
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 instances
Cold 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
34
Zygote (3)
35
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
36
Java Source Code to Android App
Java
Compiler
Java Source
Code
(.java files)
Java Bytecode
.class file
.class file
.class file
.class file
.class file
dx tool
Dalvik Bytecode
.dex file
Resource files
Package Builder
Android App
.apk file
37
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
38
References (1)










http://en.wikipedia.org/wiki/Virtual_machine
http://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-vmoverview.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-jvmarchitecture.html#.VOupzfnF9t8
http://skillgun.com/question/436/android/basics/what-is-the-differencebetween-dvm-and-jvm-why-android-opted-for-dvm
39
References (2)




http://multi-core-dump.blogspot.com/2010/04/android-application-launchpart-2.html
http://multi-core-dump.blogspot.com/2010/04/android-applicationlaunch.html
http://en.wikipedia.org/wiki/Dalvik_(software)
http://www.cs.duke.edu/~chase/cps210/slides/android-chase.pptx
40