1 / 60

Mise en œuvre d'un outil d'aide au développement d'une JVM modulaire pour système embarqué

Mise en œuvre d'un outil d'aide au développement d'une JVM modulaire pour système embarqué. Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE. Projet Solidor. Plan de la présentation. Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion.

kiona
Télécharger la présentation

Mise en œuvre d'un outil d'aide au développement d'une JVM modulaire pour système embarqué

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Mise en œuvre d'un outil d'aide au développement d'une JVM modulaire pour système embarqué Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE Projet Solidor

  2. Plan de la présentation • Introduction • 1 - Présentation • 2 - Objectifs • 3 - Mise en œuvre • 4 - Perspectives • Conclusion

  3. Plan de la présentation • Introduction • 1 - Présentation • 2 - Objectifs • 3 - Mise en œuvre • 4 - Perspectives • Conclusion

  4. Introduction (1/3) Les systèmes embarqués : un monde en plein essor - Applications multimédia - Télécommunications - Chargement dynamique d’applications

  5. Introduction (2/3) La solution : le mécanisme de la JVM - supporte le chargement dynamique d’applications - nouveau standard dans l’industrie - nombreuses applications déjà disponibles

  6. CPU Mémoire Énergie Introduction (3/3) Mais l’embarqué impose ses contraintes : Optimisation des ressources impose JVM adaptée

  7. Plan de la présentation • Introduction • 1 - Présentation • 2 - Objectifs • 3 - Mise en œuvre • 4 - Perspectives • Conclusion

  8. Implémentation Spécification Fonctionnement Général SDE Source & Glue Gestionnaire de types Langage C Projection en C 1 - Présentation (1/5)

  9. Interface de SDE 1 - Présentation (2/5) • Utilisation de SDE à travers deux types de fichiers : • fichiers de spécification • fichiers d’ implémentation • Modularité

  10. Fichiers de spécification 1 - Présentation (3/5) typedef thread{…} typedef fork{…} service init_thread(…) service start_thread(…) service stop_thread(…) service wait_thread(…) service get_parent_fork(…) service wait_fork(…) … process.idl typedef integer{…} typedef float{…} typedef double{…} service addition_integer(...) service addition_float(...) service addition_double(...) service multiplication_integer(...) ... operations.idl

  11. Fichiers d ’implémentation 1 - Présentation (4/5) type integer { opaque(4) } type float { opaque(8) } type double { opaque(16) } service addition_integer { addition_4_octets } service addition_float { addition_8_octets } service addition_double { addition_16_octets } service multiplication_integer { multiplication_4_octets } operation_32_bits.imp type integer { opaque(2) } type float { opaque(4) } type double { opaque(8) } service addition_integer { addition_2_octets } service addition_float { addition_4_octets } service addition_double { addition_8_octets } service multiplication_integer { multiplication_2_octets } operation_16_bits.imp

  12. Fichiers d ’implémentation 1 - Présentation (5/5) type thread { opaque(4096) } type fork { opaque(8192) } service init_thread { init_thread_Y } service start_thread { start_thread_Y } service stop_thread { stop_thread_Y } service wait_fork { wait_fork_Y } ... Process_Y.imp type thread { opaque(1024) } type fork { opaque(4096) } service init_thread { init_thread_X } service start_thread { start_thread_X } service stop_thread { stop_thread_X } service wait_fork { wait_fork_X } ... Process_X.imp

  13. Plan de la présentation • Introduction • 1 - Présentation • 2 - Objectifs • 3 - Mise en œuvre • 4 - Perspectives • Conclusion

  14. 2 - Objectifs du projet • Implémentation d’un gestionnaire de types - types fixes - types variables • Optimisation de la mémoire - en taille de l’espace utilisé par les objets - en temps d ’accès aux objets • Allocation mémoire des types créés

  15. Plan de la présentation • Introduction • 1 - Présentation • 2 - Objectifs • 3 - Mise en œuvre • 4 - Perspectives • Conclusion

  16. Plan de la présentation • Introduction • 1 - Présentation • 2 - Objectifs • 3 - Mise en œuvre • 4 - Perspectives • Conclusion • Types statiques introduits par SDE • Analyse de types statiques • Optimisation mémoire • Types dynamiques introduits par SDE • Analyse de types dynamiques

  17. Plan de la présentation • Introduction • 1 - Présentation • 2 - Objectifs • 3 - Mise en œuvre • 4 - Perspectives • Conclusion • Types statiques introduits par SDE • Analyse de types statiques • Optimisation mémoire • Types dynamiques introduits par SDE • Analyse de types dynamiques

  18. Types statiques introduits par SDE • Types statiques • Opaque • Externe • Composé

  19. Types statiques introduits par SDE • Types statiques • Opaque • Externe • Composé

  20. Type opaque (1/2) Types statiques introduits par SDE • Utilisé dans les fichiers d’ implémentation • Un espace mémoire contigu • Définit les types de base

  21. Type opaque (2/2) Types statiques introduits par SDE Typedefint {} int.idl Type int { private : opaque(2); } int_2.imp

  22. Types statiques introduits par SDE • Types statiques • Opaque • Externe • Composé

  23. Type Externe Types statiques introduits par SDE • correspond à un type déclaré par l ’utilisateur : • soit dans le même fichier de spécification, • soit dans un autre fichier de spécification.

  24. Types statiques introduits par SDE • Types statiques • Opaque • Externe • Composé

  25. Type Composé Types statiques introduits par SDE • un type composé est : • soit une structure • soit une union • soit un tableau

  26. Type Structure Types statiques introduits par SDE Type frame { private : struct { integer size; string color; … }; } frame_X.imp Typedefframe{} components.idl

  27. Type Composé Types statiques introduits par SDE • un type composé est : • soit une structure • soit une union • soit un tableau

  28. Type Union Types statiques introduits par SDE type Object { private : union { Byte b; Double d; Short s; Int i; … }; } Object.imp typedef Object{} typedef Byte{} typedef Double{} typedef Short{} typedef Int{} types.idl

  29. Type Composé Types statiques introduits par SDE • un type composé est : • soit une structure • soit une union • soit un tableau

  30. Type Tableau Types statiques introduits par SDE type IP_addr { private: Char [4]; } Type Char { private: opaque(1); } protocols_v4.imp type IP_addr { private: Char[4]; } Type Char { private: opaque(4); } protocols_v6.imp typedef IP_addr{} typedef Char{} protocols.idl

  31. Plan de la présentation • Introduction • 1 - Présentation • 2 - Objectifs • 3 - Mise en œuvre • 4 - Perspectives • Conclusion • Types statiques introduits par SDE • Analyse de types statiques • Optimisation mémoire • Types dynamiques introduits par SDE • Analyse de types dynamiques

  32. Analyse des types statiques • 3 étapes : • Parcours des types définis dans les fichiers de spécification et d ’implémentation • Génération de macros permettant l ’utilisation des types • Allocation mémoire du type

  33. Macros générées par SDE Analyse des types statiques • Les noms des macros ont la forme suivante : • (global | <module_name>) [_<var_name_1> [_… [_<var_name_N>]] • Macros spécifiques aux Tableaux • Macros spécifiques aux autres types

  34. Macros des types statiques Analyse des types statiques Type integer{ private: opaque(4) ; } types_X.imp Typedef integer { } types.idl #define types_X_integer(ref) ( (char *) (ref)+OFFSET )

  35. Macros des types Tableaux statiques Analyse des types statiques Type matrice{ private : opaque(4) [5][2]; } types_X.imp Typedef matrice { } types.idl #define types_matrice(ref,i0,i1) ( (char *)(ref)+i0*5*4+i1*4+OFFSET)

  36. Allocation mémoire statique Analyse des types statiques • une fonction d ’allocation mémoire par type : • localité spatiale des champs du type : rapidité d ’accès aux champs • indispensable dans un contexte multitâche : mémoire moins fragmentée processus plus rapides • retourne une référence

  37. Plan de la présentation • Introduction • 1 - Présentation • 2 - Objectifs • 3 - Mise en œuvre • 4 - Perspectives • Conclusion • Types statiques introduits par SDE • Analyse de types statiques • Optimisation mémoire • Types dynamiques introduits par SDE • Analyse de types dynamiques

  38. Optimisation mémoire (1/9) État initial du SDE : Placement Mémoire Pas d ’optimisation

  39. Optimisation mémoire (2/9) 1- Le placement mémoire : Alignement 1 : Accepté par processeur X Refusé par processeur Y Alignement 2 : Accepté par processeur X Accepté par processeur Y

  40. Optimisation mémoire (3/9) 1- Le placement mémoire : Règle 1 : l’adresse allouée à un objet placé en mémoire doit satisfaire l’alignement dicté par le processeur utilisé.

  41. Mémoire optimisée 1 2 4 4 4 8 Optimisation mémoire (4/9) 2- L’optimisation de l ’espace utilisé : Alignement Mémoire non optimisée Gain de place mémoire : 30%

  42. Optimisation mémoire (5/9) 2- L’optimisation de l’espace utilisé : Optimisation 1 : l’espace restant entre 2 objets placés en mémoire doit être minimal.

  43. Optimisation mémoire (6/9) 3- L’alignement des types : • Les structures • Les tableaux • Les unions Gestions différentes de l’alignement

  44. Optimisation mémoire (7/9) Les structures : Emplacementdes objets Objets à placer 3 x ( 2 ) 1 x ( 4 ) 2 x ( 8 )

  45. 1 x ( 2 ) 1 x ( 4 ) 1 x ( 8 ) Optimisation mémoire (8/9) Les tableaux : Contrainte de spécification : la localité mémoire.  Les éléments doivent être placés consécutivement Tableau à 2 éléments Élément de tableau Objets d’un élément

  46. Optimisation mémoire (9/9) Les unions : Union composée des 3 structures : , , En hachuré, les emplacements laissés libres par les structures : , ,

  47. Plan de la présentation • Introduction • 1 - Présentation • 2 - Objectifs • 3 - Mise en œuvre • 4 - Perspectives • Conclusion • Types statiques introduits par SDE • Analyse de types statiques • Optimisation mémoire • Types dynamiques introduits par SDE • Analyse de types dynamiques

  48. Types dynamiques introduits par SDE • Taille du type connue à l’exécution. • Deux sortes de type dynamique : • type composé Union • type composé Tableau

  49. Types dynamiques introduits par SDE Types Unions dynamiques type Object { private : union<selection_function> { Byte b; Double d; Short s; Boolean i; … }; } Object.imp typedef Object{} typedef Byte{} typedef Double{} typedef Short{} typedef Boolean{} types.idl

  50. Types dynamiques introduits par SDE Types Tableaux dynamiques type Object { private : union { Byte b; Double d; Short s; Boolean bo; … }[dimension_function]; } Object.imp typedef Object{} typedef Byte{} typedef Double{} typedef Short{} typedef Boolean{} types.idl

More Related