Your SlideShare is downloading. ×
Android internals 05 - Dalvik VM (rev_1.1)
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Android internals 05 - Dalvik VM (rev_1.1)


Published on

Course: Android Internals …

Course: Android Internals
Lecture 5: Dalvik VM

Published in: Education, Technology, Design

  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Android internals Egor Elizarov SPbSU 2012
  • 2. Legal info Android internals by Egor Elizarov is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License You are free to – copy, distribute, display, and perform the work – make derivative works Under the following conditions – Attribution. You must give the original author credit – Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one All pictures and trademarks are the property of their respective owners. Use of these trademarks and pictures is subject to owners permissions. Corrections, suggestions, contributions and translations are welcome! 2 Egor Elizarov SPbSU 2012
  • 3. Lecture 5 Dalvik VM yegor.yelizarov(at)gmail.comRev: 1.1Last update: 05/30/2012 3 Egor Elizarov SPbSU 2012
  • 4. Previous time Vanilla Kernel types Android/Kernel interaction “Androdized” kernel features Bionic Log system 4 Egor Elizarov SPbSU 2012
  • 5. Virtual Machines VM concept was introduced in 1960s in Cambridge Defined by Popek & Goldberg in 1973 as "an efficient, isolated duplicate of a real machine" System VM (Whole OS emulation) Process VM (One program emulation) 5 Egor Elizarov SPbSU 2012
  • 6. Virtualization approaches Paravirtualization Full virtualization HW assisted virtualization 6 Egor Elizarov SPbSU 2012
  • 7. Process VM types Register VM Stack VM Limited number of registers with addresses  Stack State register  Reverse Polish notation List of instructions  Load/Store 7 Egor Elizarov SPbSU 2012
  • 8. Dalvik VM Register based Designed for low memory requirements Relying on OS – Memory management – Thread support – Process isolation 8 Egor Elizarov SPbSU 2012
  • 9. Dalvik VM (2) Allow multiple VM instances to run once Supports Java Debug Wire Protocol Based on Apache Harmony (Open Source Java) 9 Egor Elizarov SPbSU 2012
  • 10. Dalvik bytecode Quite similar to common real architectures Fixed size frames with particular number of registers (one per method) 32-bit registers Reach meta information for each method 10 Egor Elizarov SPbSU 2012
  • 11. Dalvik bytecode example 11 Egor Elizarov SPbSU 2012
  • 12. ARM ASM example 12 Egor Elizarov SPbSU 2012
  • 13. Interpreter core Portable (C) Fast (C + ASM) JIT (C + ASM + JIT) Debug (C + ASM + profiling & single stepping) 13 Egor Elizarov SPbSU 2012
  • 14. Just-In-TimeSource: 14 Egor Elizarov SPbSU 2012
  • 15. Android application No single entry point Activities, Services, Broadcast Receivers, Content Providers Intents New VM instance (Copy on write) 15 Egor Elizarov SPbSU 2012
  • 16. Dalvik EXecutableSource: 16 Egor Elizarov SPbSU 2012
  • 17. Zygote Nascent VM process Starts at boot time Preloads and preinitializes classes fork()s on command 17 Egor Elizarov SPbSU 2012
  • 18. Java application caching 18 Egor Elizarov SPbSU 2012
  • 19. Java application launching Source: 19 Egor Elizarov SPbSU 2012
  • 20. Dalvik porting Core libraries should work from scratch Implement JNI call bridge Use portable interpreter Replace opcode stubs Use debug execution mode for debugging 20 Egor Elizarov SPbSU 2012
  • 21. Next Time Android IPC Typical Android subsystem 21 Egor Elizarov SPbSU 2012
  • 22. Useful links K.Sutner. Register Machines. Carnegie Mellon University. Fall 2011 URL: M.Schoeberl. Design and implementation of an Effective Stack Machine. Viena, Austria. URL: Y. Shi, D. Gregg, A. Beatty, M. A. Ertl. Virtual Machine Showdown: Stack Versus Registers. Dublin, Viena. URL: 22 Egor Elizarov SPbSU 2012
  • 23. Useful links (2) $ANDROID_ROOT/dalvik/docs/ D. Bornstein. Dalvik VM Internals. 2008 URL: VM-Internals.pdf androids-dalvik-vm.html 23 Egor Elizarov SPbSU 2012
  • 24. Thanks to Sergey Matyukevich for review and advices ( Nikolay F. Fominykh for review and advices Nikita Shulga for advices and notes ( Grigory Tolstolytkin for advices and notes ( tolstolytkin/2a/b41/74) 24 Egor Elizarov SPbSU 2012