/
Mobile Handset Virtual Machine Mobile Handset Virtual Machine

Mobile Handset Virtual Machine - PowerPoint Presentation

myesha-ticknor
myesha-ticknor . @myesha-ticknor
Follow
370 views
Uploaded On 2018-03-19

Mobile Handset Virtual Machine - PPT Presentation

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

virtual java class machine java virtual machine class bytecode android file constant jvm pool dalvik system code process http dex zygote files

Share:

Link:

Embed:

Download Presentation from below link

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.


Presentation Transcript

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