Conception et Réalisation d’un
Exécutif Temps Réel
Comment Concevoir et Réaliser un Noyau Temps Réel
?
Mémoire d’un projet de fin d’études.
Université Mouloud MAMMERI de Tizi-Ouzou.
Présenté par M. Toufik SARNI.
Dirigé par Mme Samia Bouzefrane (CNAM – Paris) & M. Lounes Djema (UMMTO)
Introduction générale
Le secteur industriel (militaire, aéronautique, télécommunications…) manifeste,
une demande de plus en plus accrue de systèmes temps réel complexes et fiables. Ces
derniers s’efforcent, à travers des théories mathématiques avancées, de solutions
informatiques plus élaborées et, de contraintes temporelles rigoureuses, de subvenir aux
besoins industriels.
Poussés par la curiosité de connaître le fonctionnement de tels systèmes et, par leur
opportunité, nous essayerons de concevoir et de réaliser un exécutif temps réel simple, en
illustrant et en mettant en relief tout au long de ce mémoire qui accompagnera ce travail,
toutes les étapes nécessaires.
La philosophie qui sera adoptée, se basera, elle aussi sur la simplicité des
mécanismes qui seront mis en œuvre. Ceci afin de permettre, une meilleure compréhension
de principes et politiques utilisés d’une part, et d’autre part, offrir un noyau, simple à
modéliser, en vue de lui intégrer un certain aspect pédagogique. Justifiant ainsi, le choix de
la création au lieu d’une modification ou amélioration d’un système déjà existant.
Ce mémoire présente notre travail en deux chapitres, les deux autres, seront
consacrés à des rappels et présentation des systèmes existants.
Le premier chapitre rappelle, les concepts utilisés dans les systèmes temps réel.
Pour cela, il introduit des définitions, et aborde la notion de multitâche et les principes qui
en découlent liés au problème de synchronisation et d’ordonnancement temps réel.
Ce chapitre soulève, les principales différences entre les systèmes classiques et les
systèmes temps réel.
Le deuxième chapitre complète les concepts présentés au premier chapitre, en
décrivant des plates-formes et des systèmes temps réel utilisés dans le milieu industriel, et
ce, d’une façon générale. Il aborde les différents éléments les caractérisant, tout en
rappelant brièvement leurs diverses évolutions.
Les systèmes comme RTAI (Linux temps réel), VxWorks (Unix temps réel), et les plates-
formes CLEOPATRE, BOSSA.
Le troisième chapitre présente, d’une façon exhaustive la conception de notre
travail. Il se propose alors de donner une vue détaillée de notre système, et présente entre
autres, les différents modules à développer pour notre exécutif temps réel, en se référant
durant chaque passe à l’objectif de notre travail.
Le quatrième chapitre concrétise le précédent, en s’accentuant sur la réalisation, et
définit nos motivations en matière d’implantations, notamment l’environnement
informatique choisi (architecture matérielle, environnement logiciel et de développement).
Comme il est tout aussi question dans ce chapitre, de reprendre quelques fragments de
code, les analyser et d’éclaircir leurs fonctions.
Sommaire
Chapitre 1
Concepts temps réel
1
1.1 Historique 1
1.2 Qu’est-ce qu’un système temps réel ? 2
1.3 Présentation générale 2
1.4 Structure d’un système de contrôle 4
1.5 Exécutif temps réel 5
1.5.1 Principes de base du multitâche 5
1.5.1.1 Notion de processus 6
1.5.1.2 Contexte d’un processus 6
1.5.1.3 Zones mémoires d’un processus 8
1.5.1.4 Les appels au système 9
1.5.1.5 Section critique 11
1.5.1.6 Synchronisation par sémaphores binaires 12
1.5.2 Ordonnancement des tâches temps réel 14
1.5.2.1 Notion de tâche temps réel 14
1.5.2.2 Problématique 15
1.5.2.3 Algorithmes d’ordonnancement 16
1.5.2.3.1 Preemptif/non préemptif 16
1.5.2.3.2 Hors ligne/en ligne 16
1.5.2.3.3 Conduit par la priorité 17
1.5.2.4 Algorithmes d’ordonnancement à priorités fixes
sans partage de ressources 17
1.5.2.4.1 Modélisation d’une tâche 17
1.5.2.4.2 Condition nécessaire de validation 18
1.5.2.4.3 Algorithme Rate Monotonic (RM) 19
1.5.2.4.4 Algorithme Deadline Monotonic (DM) 21
1.5.2.5 Ordonnancement des tâches apériodiques 21
1.5.2.5.1 Serveur à scrutation 22
1.5.2.5.2 Serveur ajournable 23
1.5.2.6 Algorithmes à priorités variables sans partage de ressources 24
1.5.2.6.1 Algorithme Earliest Deadline (ED) 24
1.5.2.6.2 Algorithme Least Laxity (LL) 24
1.5.2.7 Problèmes liés à l’exclusion 25
1.5.2.7.1 Interblocage 25
1.5.2.7.2 Inversion de priorités 26
1.5.2.8 Protocoles d’allocation de ressources 27
1.5.2.8.1 Protocole à priorité héritée (PPH) 27
1.5.2.8.2 Protocole à priorités plafonds 28
1.5.2.8.3 Facteur de blocage 30
1.5.2.8.4 Algorithme RM avec partage de ressources 31
Conclusion 32
Bibliographie 33
Sommaire
Chapitre 2 Exemples de systèmes et plates-formes temps réel 34
2.1 Real-Time Application Interface(RTAI) 35
2.1.1 Historique 35
2.1.2 Linux comme système temps réel 35
2.1.3 Présentation générale 36
2.1.4 Les services RTAI 37
2.1.4.1 Les schedulers 38
2.1.4.2 Inter-Process communications (IPCs) 39
2.1.4.3 FIFOs temps réel 40
2.1.4.3.1 Le partage de mémoire 41
2.1.4.3.2 Mailboxes (Boite aux lettres) 43
2.1.4.3.3 Messages RTAI et RPCs 44
2.1.5 Les modules sous Linux 45
2.1.6 Exemple 46
2.2 VxWorks 51
2.2.1 Historique 51
2.2.2 Présentation générale 51
2.2.3 Caractéristiques temps réel 52
2.2.4 L’interface avec Unix 54
2.2.5 L’environnement de compilation et d’exécution 55
2.2.5.1 Chargeur 55
2.2.5.2 Compilation croisée 56
2.2.5.3 Le shell VxWorks 57
2.2.6 API VxWorks 58
2.2.6.1 Gestion des tâches 59
2.2.6.2 Gestion du temps 59
2.2.6.3 Les sémaphores 60
2.2.6.4 Manipulation des interruptions 60
2.2.6.5 Gestion de la mémoire 61
2.2.6.6 Communication par messages 61
2.3 CLEOPATRE 62
2.3.1 Objectifs 62
2.3.2 Organisation du projet 62
2.3.3 Démonstrateur 63
2.3.4 Perspectives de marché 63
2.4 BOSSA 64
2.4.1 Objectifs 64
2.4.2 Les composants BOSSA 64
2.4.3 Du noyau Linux à BOSSA 65
2.4.4 BOSSA : une hiérarchie d’ordonnanceur 66
Conclusion 68
Bibliographie 69
Sommaire
Chapitre 3
Conception de l’exécutif temps réel
70
3.1 Objectif 71
3.2 Cadre du travail 71
3.3 Architecture générale du système 72
3.4 Module temps réel 73
3.4.1 Module
des tâches 75
3.4.1.1 Entité tâche 77
3.4.1.2 Entité sémaphore 79
3.4.1.3 Files d’attentes 80
3.4.1.4 Pile des tâches apériodiques 81
3.4.1.5 Résumé 82
3.4.2 Module d’ordonnancement 84
3.4.2.1 Ordonnancement des périodiques 86
3.4.2.2 Ordonnancement des apériodiques 87
3.4.2.3 Résumé 88
Conclusion 91
Chapitre 4
Réalisation de l’exécutif temps réel
92
4.1 Choix de l’architecture matérielle 93
4.2 Langages et environnement de programmation 93
4.3 Parties de l’exécutif 94
4.4 Réalisation de la partie démarrage 95
4.4.1 Le boot 95
4.4.2 Partie 16-bit (mode réel) 96
4.4.2.1 Fonctions utilitaires 96
4.4.2.1.1 Manipulation de chaînes de caractères 96
4.4.2.1.2 Manipulation de données en mémoire 97
4.4.2.1.3 Conversion Décimale-ASCII 97
4.4.2.1.4 Conversion Hexadécimale-ASCII 97
4.4.2.1.5 Réécriture des fonctions vsprintf, printf 97
4.4.2.1.6 Réécriture de putchr 99
4.4.2.2 Initialisation machine avec dtct16 99
4.4.2.2.1 Détection de la CPU 100
4.4.2.2.2 Mémoire étendue et conventionnelle 101
4.4.2.2.3 Détection des disques 101
4.4.2.2.4 Sauvegarde d’informations hardware 101
4.4.2.2.5 Mise en place du basculeur 16-bit 102
4.4.2.2.6 Chargement de la partie 32-bit 103
4.4.2.2.7 Activation de la ligne A20 104
4.4.2.2.8 Initialisation de la table des segments (GDT) 104
4.4.2.2.9 Passage en mode protégé 106
1 / 165 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !