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

Preview:

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

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

Olivier DERUELLE

Erwan FOUYER

Maxime JOUIN

Rodolphe LOUE

Projet Solidor

2

Plan de la présentationPlan de la présentation

IntroductionIntroduction 1 - Présentation1 - Présentation 2 - Objectifs2 - Objectifs 3 - Mise en œuvre3 - Mise en œuvre 4 - Perspectives4 - Perspectives ConclusionConclusion

3

Plan de la présentationPlan de la présentation

IntroductionIntroduction 1 - Présentation1 - Présentation 2 - Objectifs2 - Objectifs 3 - Mise en œuvre3 - Mise en œuvre 4 - Perspectives4 - Perspectives ConclusionConclusion

4

Introduction Introduction (1/3)(1/3)

Les systèmes embarqués :un monde en plein essor

- Applications multimédia

- Télécommunications

- Chargement dynamique d’applications

5

Introduction Introduction (2/3)(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

Introduction Introduction (3/3)(3/3)

Mais l’embarqué impose ses contraintes :

imposeCPU Mémoire

Énergie

Optimisation des ressources

JVM adaptée

7

Plan de la présentationPlan de la présentation

IntroductionIntroduction 1 - Présentation1 - Présentation 2 - Objectifs2 - Objectifs 3 - Mise en œuvre3 - Mise en œuvre 4 - Perspectives4 - Perspectives ConclusionConclusion

8

1 - Présentation 1 - Présentation (1/5)(1/5)

SDE

Gestionnairede types

Projectionen C

Implémentation

Spécification

Source & Glue

Fonctionnement

Général

Langage

C

9

Interface de SDEInterface de SDE

Utilisation de SDE à travers deux types de fichiers :– fichiers de spécification– fichiers d’ implémentation

Modularité

1 - Présentation 1 - Présentation (2/5)(2/5)

Fichiers de spécificationFichiers de spécification

typedef integer{…}

typedef float{…}

typedef double{…}

service addition_integer(...)

service addition_float(...)

service addition_double(...)

service multiplication_integer(...)

...

operations.idl

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

1 - Présentation 1 - Présentation (3/5)(3/5)

Fichiers d ’implémentationFichiers d ’implémentationtype 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

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

1 - Présentation 1 - Présentation (4/5)(4/5)

Fichiers d ’implémentationFichiers d ’implémentationtype 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

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

1 - Présentation 1 - Présentation (5/5)(5/5)

13

Plan de la présentationPlan de la présentation

IntroductionIntroduction 1 - Présentation1 - Présentation 2 - Objectifs2 - Objectifs 3 - Mise en œuvre3 - Mise en œuvre 4 - Perspectives4 - Perspectives ConclusionConclusion

14

2 - Objectifs du projet2 - 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ésentationPlan de la présentation

IntroductionIntroduction 1 - Présentation1 - Présentation 2 - Objectifs2 - Objectifs 3 - Mise en œuvre3 - Mise en œuvre 4 - Perspectives4 - Perspectives ConclusionConclusion

16

Plan de la présentationPlan de la présentation

IntroductionIntroduction 1 - Présentation1 - Présentation 2 - Objectifs2 - Objectifs 3 - Mise en œuvre3 - Mise en œuvre 4 - Perspectives4 - Perspectives ConclusionConclusion

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ésentationPlan de la présentation

IntroductionIntroduction 1 - Présentation1 - Présentation 2 - Objectifs2 - Objectifs 3 - Mise en œuvre3 - Mise en œuvre 4 - Perspectives4 - Perspectives ConclusionConclusion

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 SDETypes statiques introduits par SDE

Types statiques

– Opaque

– Externe

– Composé

19

Types statiques introduits par SDETypes statiques introduits par SDE

Types statiques

– Opaque

– Externe

– Composé

20

Type opaque (1/2)Type opaque (1/2)

Utilisé dans les fichiers d’ implémentation

Un espace mémoire contigu

Définit les types de base

Types statiques introduits par SDETypes statiques introduits par SDE

21

Type opaque (2/2)Type opaque (2/2)

Typedef int

{}

int.idl

Type int

{

private :

opaque(2);

}

int_2.imp

Types statiques introduits par SDETypes statiques introduits par SDE

22

Types statiques introduits par SDETypes statiques introduits par SDE

Types statiques

– Opaque

– Externe

– Composé

23

Type ExterneType Externe

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.

Types statiques introduits par SDETypes statiques introduits par SDE

24

Types statiques introduits par SDETypes statiques introduits par SDE

Types statiques

– Opaque

– Externe

– Composé

25

Type ComposéType Composé

un type composé est :

– soit une structure

– soit une union

– soit un tableau

Types statiques introduits par SDETypes statiques introduits par SDE

26

Type StructureType Structure

Typedef frame{}

components.idl

Type frame{private : struct {

integer size; string color; … };

}frame_X.imp

Types statiques introduits par SDETypes statiques introduits par SDE

27

Type ComposéType Composé

un type composé est :

– soit une structure

– soit une union

– soit un tableau

Types statiques introduits par SDETypes statiques introduits par SDE

28

Type UnionType Union

typedef Object{}typedef Byte{}typedef Double{}typedef Short{}typedef Int{}

types.idl

type Object{private : union { Byte b;

Double d; Short s; Int i;…

};}

Object.imp

Types statiques introduits par SDETypes statiques introduits par SDE

29

Type ComposéType Composé

un type composé est :

– soit une structure

– soit une union

– soit un tableau

Types statiques introduits par SDETypes statiques introduits par SDE

Type TableauType Tableau

typedef IP_addr{}

typedef Char{}

protocols.idl

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

Types statiques introduits par SDETypes statiques introduits par SDE

31

Plan de la présentationPlan de la présentation

IntroductionIntroduction 1 - Présentation1 - Présentation 2 - Objectifs2 - Objectifs 3 - Mise en œuvre3 - Mise en œuvre 4 - Perspectives4 - Perspectives ConclusionConclusion

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 statiquesAnalyse 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 SDEMacros générées par SDE

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

Analyse des types statiquesAnalyse des types statiques

34

Macros des types statiquesMacros des types statiques

#define types_X_integer(ref) ( (char *) (ref)+OFFSET )

Type integer{private:

opaque(4) ;}

types_X.imp

Typedef integer{}

types.idl

Analyse des types statiquesAnalyse des types statiques

35

Macros des types Tableaux statiquesMacros des types Tableaux statiques

#define types_matrice(ref,i0,i1) ( (char *)(ref)+i0*5*4+i1*4+OFFSET )

Type matrice{private :

opaque(4) [5][2];}

types_X.imp

Typedef matrice{}

types.idl

Analyse des types statiquesAnalyse des types statiques

36

Allocation mémoire statiqueAllocation mémoire statique

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

Analyse des types statiquesAnalyse des types statiques

37

Plan de la présentationPlan de la présentation

IntroductionIntroduction 1 - Présentation1 - Présentation 2 - Objectifs2 - Objectifs 3 - Mise en œuvre3 - Mise en œuvre 4 - Perspectives4 - Perspectives ConclusionConclusion

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 Optimisation mémoire (1/9)(1/9)

État initial du SDE :

Placement

Mémoire

Pas

d ’optimisation

39

Optimisation mémoire Optimisation mémoire (2/9)(2/9)

1- Le placement mémoire :

Alignement 1 :

Alignement 2 :

Accepté par processeur X

Accepté par processeur X

Refusé par processeur Y

Accepté par processeur Y

40

Optimisation mémoire Optimisation mémoire (3/9)(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é.

Optimisation mémoire Optimisation mémoire (4/9)(4/9)

2- L’optimisation de l ’espace utilisé :

1

2

4

4

4

8

Alignement Mémoire nonoptimisée

Mémoireoptimisée

Gain de place mémoire : 30%

42

Optimisation mémoire Optimisation mémoire (5/9)(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 Optimisation mémoire (6/9)(6/9)

3- L’alignement des types :

Les structures

Les tableaux

Les unions

Gestions différentes de l’alignement

44

3 x ( 2 )

1 x ( 4 )

2 x ( 8 )

Optimisation mémoire Optimisation mémoire (7/9)(7/9)

Les structures :

Objets à placer

Emplacementdes objets

45

1 x ( 2 )

1 x ( 4 )

1 x ( 8 )

Optimisation mémoire Optimisation mémoire (8/9)(8/9)

Les tableaux :

Objets d’un élémentÉlément

de tableau

Tableau à 2 éléments

Contrainte de spécification : la localité mémoire. Les éléments doivent être placés consécutivement

Optimisation mémoire Optimisation mémoire (9/9)(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ésentationPlan de la présentation

IntroductionIntroduction 1 - Présentation1 - Présentation 2 - Objectifs2 - Objectifs 3 - Mise en œuvre3 - Mise en œuvre 4 - Perspectives4 - Perspectives ConclusionConclusion

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 SDETypes dynamiques introduits par SDE

Taille du type connue à l’exécution.

Deux sortes de type dynamique :

– type composé Union

– type composé Tableau

Types Unions dynamiquesTypes Unions dynamiques

typedef Object{}typedef Byte{}typedef Double{}typedef Short{}typedef Boolean{}

types.idl

type Object{private : union <selection_function> { Byte b;

Double d; Short s; Boolean i; …

};}

Object.imp

Types dynamiques introduits par SDETypes dynamiques introduits par SDE

Types Tableaux dynamiquesTypes Tableaux dynamiques

typedef Object{}typedef Byte{}typedef Double{}typedef Short{}typedef Boolean{}

types.idl

type Object{private : union { Byte b;

Double d; Short s; Boolean bo; …

}[dimension_function];}

Object.imp

Types dynamiques introduits par SDETypes dynamiques introduits par SDE

51

Plan de la présentationPlan de la présentation

IntroductionIntroduction 1 - Présentation1 - Présentation 2 - Objectifs2 - Objectifs 3 - Mise en œuvre3 - Mise en œuvre 4 - Perspectives4 - Perspectives ConclusionConclusion

Types statiques introduits par SDE

Analyse de types statiques

Optimisation mémoire

Types dynamiques introduits par SDE

Analyse de types dynamiques

52

Analyse des types dynamiquesAnalyse des types dynamiques

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

53

Macros des types Tableaux dynamiquesMacros des types Tableaux dynamiques

#define meta1(ref) ((char *)(ref)+OFFSET)#define types_array(ref,i0) ( (char *) (ref) +*meta1(ref)+i0*4+OFFSET)

Type array{private :

opaque(4) [<dim>];}

types_X.imp

Typedef array{}

types.idl

Analyse des types dynamiquesAnalyse des types dynamiques

54

Allocation mémoire des types dynamiquesAllocation mémoire des types dynamiques

Problème :– Taille du type connue à l’exécution

Solution :– Définition de pointeurs – Réservation d’emplacements pour les adresses– Mise à jour de ces emplacements– Localité mémoire – Retourne une référence

Analyse des types dynamiquesAnalyse des types dynamiques

55

Plan de la présentationPlan de la présentation

IntroductionIntroduction 1 - Présentation1 - Présentation 2 - Objectifs2 - Objectifs 3 - Mise en œuvre3 - Mise en œuvre 4 - Perspectives4 - Perspectives ConclusionConclusion

56

4 - Perspectives4 - Perspectives

Pour les types

- interface graphique

- génération de Makefile

- séparation entre les classes Java et le langage d’implémentation

Pour l’alignement des objets en mémoire

- algorithme de recherche par arbres

- optimisation de la vitesse d’accès mémoire

57

Plan de la présentationPlan de la présentation

IntroductionIntroduction 1 - Présentation1 - Présentation 2 - Objectifs2 - Objectifs 3 - Mise en œuvre3 - Mise en œuvre 4 - Perspectives4 - Perspectives ConclusionConclusion

58

ConclusionConclusion

Objectifs atteints

- gestionnaire de type réalisé

- optimisation de la taille mémoire utilisée

Critiques

- fichiers générés

- travail modulaire

59

Questions et Questions et commentairescommentaires

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

Olivier DERUELLE

Erwan FOUYER

Maxime JOUIN

Rodolphe LOUE

Projet Solidor

FINFIN

Recommended