• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Android internals 05 - Dalvik VM (rev_1.1)

Android internals 05 - Dalvik VM (rev_1.1)



Course: Android Internals

Course: Android Internals
Lecture 5: Dalvik VM



Total Views
Views on SlideShare
Embed Views



4 Embeds 10

http://www.slashdocs.com 6
http://www.docseek.net 2
http://www.verious.com 1
http://www.docshut.com 1


Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    Android internals 05 - Dalvik VM (rev_1.1) Android internals 05 - Dalvik VM (rev_1.1) Presentation Transcript

    • Android internals Egor Elizarov SPbSU 2012
    • 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
    • Lecture 5 Dalvik VM yegor.yelizarov(at)gmail.comRev: 1.1Last update: 05/30/2012 http://vk.com/android_internals 3 Egor Elizarov SPbSU 2012
    • Previous time Vanilla Kernel types Android/Kernel interaction “Androdized” kernel features Bionic Log system 4 Egor Elizarov SPbSU 2012
    • 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
    • Virtualization approaches Paravirtualization Full virtualization HW assisted virtualization 6 Egor Elizarov SPbSU 2012
    • 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
    • Dalvik VM Register based Designed for low memory requirements Relying on OS – Memory management – Thread support – Process isolation 8 Egor Elizarov SPbSU 2012
    • 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
    • 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
    • Dalvik bytecode example 11 Egor Elizarov SPbSU 2012
    • ARM ASM example 12 Egor Elizarov SPbSU 2012
    • Interpreter core Portable (C) Fast (C + ASM) JIT (C + ASM + JIT) Debug (C + ASM + profiling & single stepping) 13 Egor Elizarov SPbSU 2012
    • Just-In-TimeSource: http://dl.google.com/googleio/2010/android-jit-compiler-androids-dalvik-vm.pdf 14 Egor Elizarov SPbSU 2012
    • Android application No single entry point Activities, Services, Broadcast Receivers, Content Providers Intents New VM instance (Copy on write) 15 Egor Elizarov SPbSU 2012
    • Dalvik EXecutableSource: http://stid.googlecode.com/files/2008-05-29-Presentation-Of-Dalvik-VM-Internals.pdf 16 Egor Elizarov SPbSU 2012
    • Zygote Nascent VM process Starts at boot time Preloads and preinitializes classes fork()s on command 17 Egor Elizarov SPbSU 2012
    • Java application caching 18 Egor Elizarov SPbSU 2012
    • Java application launching Source: http://coltf.blogspot.com/p/android-os-processes-and-zygote.html 19 Egor Elizarov SPbSU 2012
    • 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
    • Next Time Android IPC Typical Android subsystem 21 Egor Elizarov SPbSU 2012
    • Useful links http://vk.com/android_internals K.Sutner. Register Machines. Carnegie Mellon University. Fall 2011 URL: http://www.cs.cmu.edu/~cdm/pdf/RegisterMach-6up.pdf M.Schoeberl. Design and implementation of an Effective Stack Machine. Viena, Austria. URL: http://ti.tuwien.ac.at/rts/people/schoeberl/publications/stack.pdf Y. Shi, D. Gregg, A. Beatty, M. A. Ertl. Virtual Machine Showdown: Stack Versus Registers. Dublin, Viena. URL: http://static.usenix.org/events/vee05/full_papers/p153-yunhe.pdf http://www.dalvikvm.com/ 22 Egor Elizarov SPbSU 2012
    • Useful links (2) http://pallergabor.uw.hu/common/understandingdalvikbytecode.pdf $ANDROID_ROOT/dalvik/docs/ http://s.android.com/tech/dalvik/dalvik-bytecode.html D. Bornstein. Dalvik VM Internals. 2008 URL: http://stid.googlecode.com/files/2008-05-29-Presentation-Of-Dalvik- VM-Internals.pdf http://coltf.blogspot.com/p/android-os-processes-and-zygote.html http://www.google.com/events/io/2010/sessions/jit-compiler- androids-dalvik-vm.html 23 Egor Elizarov SPbSU 2012
    • Thanks to Sergey Matyukevich for review and advices (www.linkedin.com/pub/sergey-matyukevich/31/889/769) Nikolay F. Fominykh for review and advices Nikita Shulga for advices and notes (http://www.linkedin.com/pub/nikita-shulga/8/582/287) Grigory Tolstolytkin for advices and notes (http://www.linkedin.com/pub/grigory- tolstolytkin/2a/b41/74) 24 Egor Elizarov SPbSU 2012