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)

2,840
views

Published on

Course: Android Internals …

Course: Android Internals
Lecture 5: Dalvik VM

Published in: Education, Technology, Design

0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,840
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
371
Comments
0
Likes
9
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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 http://vk.com/android_internals 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: http://dl.google.com/googleio/2010/android-jit-compiler-androids-dalvik-vm.pdf 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: http://stid.googlecode.com/files/2008-05-29-Presentation-Of-Dalvik-VM-Internals.pdf 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: http://coltf.blogspot.com/p/android-os-processes-and-zygote.html 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 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. 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. 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