Android internals     Egor Elizarov     SPbSU 2012
Legal info   Android internals by Egor Elizarov is licensed under a    Creative Commons Attribution-NonCommercial-ShareAl...
Lecture 5                           Dalvik VM                                        yegor.yelizarov(at)gmail.comRev: 1.1L...
Previous time    Vanilla    Kernel types    Android/Kernel interaction    “Androdized” kernel features    Bionic    ...
Virtual Machines    VM concept was introduced in 1960s in    Cambridge    Defined by Popek & Goldberg in 1973 as "an    ...
Virtualization approaches    Paravirtualization    Full virtualization    HW assisted virtualization                   ...
Process VM types         Register VM                           Stack VM     Limited number of    registers with addresses...
Dalvik VM    Register based    Designed for low memory requirements    Relying on OS      – Memory management      – Th...
Dalvik VM (2)    Allow multiple VM instances to run once    Supports Java Debug Wire Protocol    Based on Apache Harmon...
Dalvik bytecode    Quite similar to common real architectures    Fixed size frames with particular number of    register...
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 stepp...
Just-In-TimeSource: http://dl.google.com/googleio/2010/android-jit-compiler-androids-dalvik-vm.pdf                        ...
Android application    No single entry point    Activities, Services, Broadcast Receivers,    Content Providers    Inte...
Dalvik EXecutableSource: http://stid.googlecode.com/files/2008-05-29-Presentation-Of-Dalvik-VM-Internals.pdf              ...
Zygote    Nascent VM process    Starts at boot time    Preloads and preinitializes classes    fork()s on command      ...
Java application caching           18              Egor Elizarov SPbSU 2012
Java application launching     Source: http://coltf.blogspot.com/p/android-os-processes-and-zygote.html                   ...
Dalvik porting    Core libraries should work from scratch    Implement JNI call bridge    Use portable interpreter    ...
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   ...
Useful links (2)    http://pallergabor.uw.hu/common/understandingdalvikbytecode.pdf    $ANDROID_ROOT/dalvik/docs/    ht...
Thanks to    Sergey Matyukevich for review and advices    (www.linkedin.com/pub/sergey-matyukevich/31/889/769)    Nikola...
Upcoming SlideShare
Loading in …5
×

Android internals 05 - Dalvik VM (rev_1.1)

3,570 views

Published on

Course: Android Internals
Lecture 5: Dalvik VM

Published in: Education, Technology, Design
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,570
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
393
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

Android internals 05 - Dalvik VM (rev_1.1)

  1. 1. Android internals Egor Elizarov SPbSU 2012
  2. 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. 3. 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
  4. 4. Previous time Vanilla Kernel types Android/Kernel interaction “Androdized” kernel features Bionic Log system 4 Egor Elizarov SPbSU 2012
  5. 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. 6. Virtualization approaches Paravirtualization Full virtualization HW assisted virtualization 6 Egor Elizarov SPbSU 2012
  7. 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. 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. 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. 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. 11. Dalvik bytecode example 11 Egor Elizarov SPbSU 2012
  12. 12. ARM ASM example 12 Egor Elizarov SPbSU 2012
  13. 13. Interpreter core Portable (C) Fast (C + ASM) JIT (C + ASM + JIT) Debug (C + ASM + profiling & single stepping) 13 Egor Elizarov SPbSU 2012
  14. 14. Just-In-TimeSource: http://dl.google.com/googleio/2010/android-jit-compiler-androids-dalvik-vm.pdf 14 Egor Elizarov SPbSU 2012
  15. 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. 16. Dalvik EXecutableSource: http://stid.googlecode.com/files/2008-05-29-Presentation-Of-Dalvik-VM-Internals.pdf 16 Egor Elizarov SPbSU 2012
  17. 17. Zygote Nascent VM process Starts at boot time Preloads and preinitializes classes fork()s on command 17 Egor Elizarov SPbSU 2012
  18. 18. Java application caching 18 Egor Elizarov SPbSU 2012
  19. 19. Java application launching Source: http://coltf.blogspot.com/p/android-os-processes-and-zygote.html 19 Egor Elizarov SPbSU 2012
  20. 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. 21. Next Time Android IPC Typical Android subsystem 21 Egor Elizarov SPbSU 2012
  22. 22. 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
  23. 23. 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
  24. 24. 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

×