Cours 3 : The Dalvik VM Specification. Damien MASSON d.masson@esiee.fr



Documents pareils
Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Initiation à JAVA et à la programmation objet.

La JVM. La machine virtuelle Java. La JVM. La JVM

Vulgarisation Java EE Java EE, c est quoi?

Java - la plateforme

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Vérification formelle de la plate-forme Java Card

Annexe : La Programmation Informatique

Android. Présentation d Android. Florent Garin

Traduction des Langages : Le Compilateur Micro Java

Introduction aux Machines Virtuelles avec VMKit

Mécanismes pour la migration de processus

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Plate formes mobiles. Utilisation. Contexte 9/29/2010 IFC 2. Deux utilisations assez distinctes :

Concept de machine virtuelle

Virtualisation logicielle De la machine réelle à la machine virtuelle abstraite

Machines Virtuelles. et bazard autour. Rémi Forax

Machine virtuelle Java pour Palm TX

Introduction à Java. Philippe Genoud.

Java Licence Professionnelle CISII,

Une tasse de café fumante est

Machines virtuelles Cours 1 : Introduction

Programmation Orientée Objet

Derrière toi Une machine virtuelle!

Projet de Veille Technologique

Java Avancé. Le langage Java. Rémi Forax

Présentation d'un MOM open-source

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Conception des systèmes répartis

Java c est quoi? Java pourquoi?

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Compilation (INF 564)

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Programmation Bas Niveau

I-JVM: une machine virtuelle Java pour l isolation de composants dans OSGi

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Éléments de programmation et introduction à Java

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Programmation des applications mobiles avec Android. 1 Inspiré du cours de Olivier Le Goaer

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Rappels d architecture

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

vmware au CC-IN2P3 Déploiement rapide d une infrastructure destinée à de la formation et réflexions sur vsphere.

TP1 : Initiation à Java et Eclipse

Architectures informatiques dans les nuages

<Insert Picture Here> Solaris pour la base de donnés Oracle

Le Cloud Open-Mind! Emilien Macchi

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

INITIATION AU LANGAGE JAVA

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Syfadis. > Configuration du poste client. Nous vous aidons à réussir. REFERENCE : Syfadis LMS - 20/06/2007. AUTEUR : Equipe technique Syfadis

Mise en œuvre d un poste virtuel

Mise en œuvre d une infrastructure de virtualisation au CNRGV

Orange Labs MAPS/DVC 2 avenue Pierre Marzin Lannion. Sous la responsabilité de : Pierre Crégut, Orange Labs Olivier Barais, Istic

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Architecture ordinateur. Organisation mémoire et Entrées/Sorties

Accès au Serveur de PAIE «SPV» par INTERNET Paramétrage du poste de travail «Windows»

Cours 1 : La compilation

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Programmation Objet Java Correction

Métriques de performance pour les algorithmes et programmes parallèles

Reversing Android. Aïe, robot...

Patrons de Conception (Design Patterns)

C-JDBC. Emmanuel Cecchet INRIA, Projet Sardes.

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Initiation au HPC - Généralités

Mémoire de stage de Master 2

Gestion hybride de la mémoire dynamique dans les systèmes Java temps-réel

Plan du cours. Historique du langage Nouveautés de Java 7

Je bénéficie désormais des avantages exceptionnels de la virtualisation pour mon stockage. Virtual SAN est aussi économique que simple à utiliser.

TP1. Outils Java Eléments de correction

La virtualisation de serveurs avec VMWare Infrastructure - Retour d expérience. Rodérick Petetin CRI INSA Rennes

Syfadis. > Configuration du poste client. Nous vous aidons à réussir. REFERENCE : Syfadis LMS - 12/09/2008. AUTEUR : Equipe technique Syfadis

Architecture des ordinateurs

Introduction aux environnements de virtualisation d'oracle Solaris 11.1

Fonctionnement et performance des processeurs

Architecture matérielle des systèmes informatiques

as Architecture des Systèmes d Information

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

GUIDE D UTILISATION PARTICIPANT

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Logiciels libres et Open source

Dossier -projet d'informations et Sciences du numérique.

Chapitre I Notions de base et outils de travail

Guide d installation de ArcGIS server 9.3.1

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

DÉVELOPPEMENT ANDROID

La carte à puce. Jean-Philippe Babau

EA D S INNOVA TION W ORKS. Mobilité et sécurité. Nicolas RUFF nicolas.ruff [à] eads.net

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

UE Programmation Impérative Licence 2ème Année

«Ré-inventer le browser d'entreprise pour assurer sa sécurité au coeur du Cloud Computing»

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

4D v11 SQL Release 5 (11.5) ADDENDUM

Transcription:

Androïd Cours 3 : The Dalvik VM Specification Damien MASSON d.masson@esiee.fr http://igm.univ-mlv.fr/~masson/teaching/android/ 1 er mars 2011

Buts du cours et Références Buts : Pourquoi Google n a pas utilisé une JVM pour Androïd Les motivations techniques Fonctionnement de Dalvik Références : git clone git://android.git.kernel.org/platform/dalvik.git./dalvik/docs/dalvik-bytecode.html./dalvik/docs/dex-format.html ls./dalvik/ -R The Case for Virtual Register Machines (Gregg et al.) http://en.wikipedia.org/wiki/register_machine The Dalvik Virtual Machine Architecture (David Ehringer) 2/23

Java Micro Edition (JME)? J2ME : JSR 68 puis... framework Java spécialisé dans les applications mobiles (en gros : téléphones/pda et décodeurs multimédia) KVM + configuration + profil Java 1.3 Contrairement à J2SE et J2EE : pas de classpath exception sur la licence GPLv2! environnement un peu trop hétérogène lenteur d évolution par le JSR, plus veto possible de Sun 3/23

Java Community Process (JCP) et Java Specification Request (JSR)? JCP : JSR : coordonner l évolution du langage Java et des technologies qui lui sont associées Le JCP émet des Java Specification Requests (JSR) Un early draft, puis un draft puis une release, avec une implantation et un kit de test Processus normalisé (le JCP fait l objet d une JSR - la 215) Pourquoi pas une nouvelle JSR pour les smartphone? 4/23

Finalement, licence d Androïd Androïd (et donc Dalvik) est distribué sous Apache licence libre et opensource, ce qui permet de exécuter le programme pour tout les usages étudier le fonctionnement du programme (code source livré) modifier le programme redistribuer des copies du programme ou de ses modifications (y compris à la vente) non copyleft : on peut distribuer un système Android modifié sous une autre licence (y compris propriétaire) 5/23

Androïd : Rappels 6/23

Dalvik vs Java VM Dalvik est une machine virtuelle à registres Dalvik est conçue pour faciliter l exécution concurrente de plusieurs instances de la VM Car avec Dalvik, 1 processus = 1 VM Dalvik interprète du bytecode au format.dex 7/23

1 Processus = 1 VM Pourquoi? méthode classique sandboxing garanti l isolation des processus entre eux et avec le système une activité ou un service plante? un seul processus plante la VM plante? un seul processus disparaît Cela impose : l exécution concurrente de plusieurs VM doit être efficace la création d une nouvelle instance de la VM doit être rapide 8/23

Zygote et mémoire en lecture seule Tant que du code est accédé en lecture seule, il reste partagé entre les instances de la VM La duplication se fait au dernier moment en cas d écriture Permet d accélérer la création d une nouvelle VM (moins de copie) 9/23

Zygote et mémoire en lecture seule une VM/processus spéciale, appelée Zygote, est démarrée en même temps que le système les classes de base d Androïd sont pré-chargées et pré-initialisées dans cette VM c est cette VM qui charge les nouvelles classes si une application tente de modifier des données partagées, il y a copie de ces données du Zygote vers la VM fille qui abrite cette application c est ce processus qui se fork pour créer une nouvelle VM prête à l emploi attention GC 10/23

Machine à registres Machine abstraite équivalente à une machine de Turing possède une infinité de registres chaque registre peut stocker un entier arbitrairement long chaque registre dispose d une adresse unique l ensemble des instructions agissent sur les registres Exemple : un processeur! 11/23

Machines à registres vs machine à piles dispatch (chargement) fetch (décodage) execute (exécution) 12/23

Dispatch Pour charger une instruction, c est pareil, mais... Exemple : a = b + c stack machine ILOAD c ; ILOAD b ; IADD ; ISTORE a ; register machine IADD a,b,c ; moins d instructions pour faire la même chose? pas forcément, si on peut optimiser le code pour que les opérandes soient systématiquement au sommet de la pile, ça revient au même en pratique, il n y a pas une infinité de registre, donc il y aurait des instructions de chargement/déchargement en mémoire qui seraient cachées? pas vrai car en codant les adresses des registres sur 1 octet on en a 256. En pratique il n y a pas de méthode Java qui utilisent 256 variables locales! mais instructions plus longues à décoder? 13/23

Fetch avec une machine a pile, la plupart des instructions agissent sur la pile : les opérandes sont donc implicites donc le décodage d une instruction de machine à registre serait plus couteux? deux choses : trouver l adresse des opérandes, et récupérer leurs valeurs pour trouver les opérandes, avantages aux machines à pile en revanche, les registres comme la pile sont codés avec un tableau, donc égalité pour aller chercher les opérandes? sauf qu avec une machine à pile, on peut mettre en cache (dans un registre) le haut de la pile... mais 1 seule instruction permet de récupérer et d opérer sur une valeur avec les registres alors que pour les machine à piles, les opérations sur la pile sont des instructions séparées, qui peuvent donner lieu a de vrais load/store... 14/23

Exécute exécuter l instruction à le même cout, quelque soit la représentation intermédiaire mais dans le modèle à registres, on ne détruit pas les résultats intermédiaires qui peuvent plus facilement être ré-exploité en cas de code redondant? en C, éliminer toutes les redondance dans standard SPECint 95 C benchmarks réduit les instructions uniquement de 3% 15/23

Machines à registres vs machine à piles dispatch (chargement) : Registres 1 / Piles 0 fetch (décodage) : Registres 0 / Piles 1 execute (exécution) : match nul T VRM = T VSM #dispatches T dispatch + #fetches T fetch 16/23

Machines à registres vs machine à piles D après Gregg et al. (2005) traduire du bytecode Java en bytecode pour machine à registres : réduit le nombre d instructions de 35% augmente la taille du bytecode de 44% augmentant le nombre moyen de chargements de 45% Comme le coût du chargement est faible par rapport à celui du dispatch (qui est fait pour chaque instruction), le bilan est positif D après D. Bornstein (Google) 1 :.dex réduirait de 47% le nombre d instructions augmenterait la taille du bytecode de 25% ce qui augmenterait le nombre de chargements de 1,07% et diminuerait le temps d exécution de 32% 1. mais je n ai pas trouvé de publication autre que la vidéo de présentation de Dalvik... 17/23

Le format Dex Chaine de compilation pour Androïd :.java javac.class dx.dex 1.java peut donner plusieurs.class car 1 classe = 1.class une application = un.dex + manifest etc. = un.apk But : partager ce qui est partageable entre les classes 18/23

.class/.jar VS.dex/.apk.jar.class.apk.dex Header Header Heterogeneous Constant Pool Class Fields Strings CP Type/Class CP Field CP Methods Method CP Class Definitions Attributes Field List.class... Method List Code Header... Local Variables.class... 19/23

.class/.jar VS.dex/.apk Partage des constantes du CP entre toutes les classes Constant Pool typés, permet une plus grande granuarité (Ljava/lang/String ;Ljava/lang/Object ;)Ljava/lang/String ; (Ljava/lang/String ;Lcom/example/Foo ;)Ljava/lang/String ; Mais cela multiplie les niveaux d indirection... 20/23

Sécurité La plateforme Androïd gère déjà les aspects de sécurité, la machine virtuelle n a pas à s en occuper Seules les applications installées peuvent s exécuter l isolation des processus dans leurs propres VM les protège des autres et protège le système les permissions spéciales sont demandées dans le manifest 21/23

Optimisations Ce modèle permet aussi de faire de la compilation AOT lors de l installation des applications Mais un JIT est quand même dans les cartons... (a priori c est plus difficile avec la représentation pour machine à registres?) 22/23

Conclusion Ceci est la fin des cours sur l intérieur d androïd ayez la curiosité de récupérer les sources et d y jeter un oeil 23/23