0% ont trouvé ce document utile (0 vote)
56 vues30 pages

Systèmes Embarqués et Gestion de Mémoire

Transféré par

Fadwa El Otmani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
56 vues30 pages

Systèmes Embarqués et Gestion de Mémoire

Transféré par

Fadwa El Otmani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

Réel

Intégration
Technologique
I. Introduction
Chapitre 2. Systèmes Embarqués et Temps
Réel
Chapitre 2. Systèmes Embarqués et Temps
Réel
Définition: Un système temps réel est un système d’exploitation (SETR) ou un ensemble d'applications informatique
qui doit répondre à des stimuli fournis par un environnement externe afin de le contrôler.

• Il se caractérise non seulement par la justesse des calculs mais aussi par le temps nécessaire pour fournir le résultat
d’un ensemble de traitements.

• Un système temps réel interagit avec un environnement extérieur et son évolution. Il doit pouvoir interagir avec
différents types d'éléments matériels et prendre en compte des contraintes temporelles imposées par ceux-ci.
Chapitre 2. Systèmes Embarqués et Temps
Réel
Chapitre 2. Systèmes Embarqués
des OS
et Temps
Réel

Remarques:
• Il ne faut pas confondre contrainte temporelle (qui dépend de l'application et de l'environnement) et rapidité de
traitement (qui dépend de la technologie utilisée et de la conception d’un exécutif).

• Un système temps-réel inclut généralement différents sous-systèmes chacun pouvant avoir ses propres contraintes
temporelles (dures ou souples).
Chapitre 2. Systèmes Embarqués et Temps
Réel
Gestion de la mémoire

Selon les possibilités du hardware sous jacent, on peut avoir 3 types de gestions de la
mémoire.

- Espace plat où toute la mémoire est visible et accessible par n’importe quelle tâche.

- Séparation entre les espace système/noyaux et les tâches applicatives.

- Mémoire virtuelle séparée et protégée associée à chaque processus.

L’allocation de la mémoire peut être statique (à la création) ou dynamique (automatique) en


fonction des besoins.
Architecture logicielle des processus informatiques

Zone créée au moment du


II. Gestion
chargement de la
en mémoire (taille
mémoire
minimale)

Zones
composant
un
processus

Zones créées au moment de la


compilation: Fichier binaire
exécutable
II. Gestion de la
mémoire

Mémoire Virtuelle: Les processus sont composés de segments de code, de segments de données statiques et de
segments de données dynamiques. Pour faciliter la gestion de l’espace mémoire pour tous les segments de tous les
processus, la mémoire physique (mémoire vive + mémoire d’échange) est décomposée en pages (page frames) d’une
taille constante (4Ko par exemple). Ces pages sont mises en correspondance avec les pages de la mémoire virtuelle
(disque dur) qui est un espace mémoire adressable par un processus, indépendamment des autres processus et
indépendamment de la mémoire physique. Ce mécanisme permet de ne charger en mémoire physique que les pages
des segments concernés pour l’exécution immédiate. On a donc la possibilité d’exécuter des programmes dont la taille
est bien supérieure à celle de la mémoire vive. Sur les ordinateurs actuels, l’espace mémoire virtuel projeté pour un
processus peut atteindre plusieurs Go.
Exemple: On considère un ordinateur dont le système d'exploitation est multitâche. La mémoire physique totale est de
32Mo. La mémoire vive (RAM) et la mémoire d'échange (swap) sont composées de 16 Mo chacune répartie en pages de
4Ko. Le système d'exploitation possède, pour lui tout seul, les 6Mo supérieurs (10 à 16 Mo) de la mémoire vive. Cinq
processus utilisateurs se partagent la mémoire vive restante (10Mo) sous le contrôle du système d'exploitation. Le
premier processus utilisateur a besoin de placer 4 Mo de données statiques, 512Ko de code (pour les instructions) et
8 Ko pour sa zone initiale de données dynamiques (pile initiale de 8Ko,tas nul) en mémoire vive. Les autres processus
utilisateur sont identiques entre eux, à savoir: 1Mo pour les données statiques, 256Ko pour le code et 8Ko pour la pile
initiale.
a) Combien de pages sont nécessaires à chaque processus utilisateur? (Remarque 1Mo=1024Ko).
b) Dans le cas où le premier processus utilisateur fait une requête d'allocation de mémoire de données dynamiques,
combien d'octets peuvent-ils lui être alloués sans faire appel à la mémoire d'échange?
Gestion de la Concurrence

La programmation concurrente tient compte, dans un programme, de


l'existence de plusieurs piles sémantiques qui peuvent être appelées threads ou
processus. Elles sont matérialisées en machine par une pile d'exécution et un
ensemble de données privées.
La concurrence est indispensable lorsque l'on souhaite écrire des programmes
interagissant avec le monde réel (qui est concurrent) ou tirant parti de multiples
unités centrales (couplées, comme dans un système multiprocesseurs, ou
distribuées, éventuellement en grille ou en grappe).

On distingue trois types de concurrence:

1. Disjointe: Les entités concurrentes ne communiquent et n'interagissent pas.


2. Compétitive: Un ensemble d'entités concurrentes en compétition pour l'accès
à certaines ressources partagées (par exemple le temps CPU, un port
d'entrées/sorties, une zone mémoire).
3. Coopérative: Un ensemble d'entités concurrentes qui coopèrent pour
atteindre un objectif commun. Des échanges ont lieu entre les processus. La
coopération est un élément primordial de la programmation concurrente.
Les techniques spécifiques pour le traitement de la concurrence sont:

1. Concurrence déclarative (langage fonctionnel étendu avec des threads)


2. Concurrence en programmation logique
3. Concurrence déclarative avec des ports et envoi de messages
4. Concurrence impérative avec ports et envoi de messages
5. Concurrence impérative avec mémoire partagée

Les problèmes induits par la concurrence se manifestent dans les cas de la


concurrence compétitive et coopérative. À cause de l'indéterminisme de
l'exécution, l'accès à des données partagées par les entités concurrentes peut
conduire à des incohérences au niveau des relations liant ces données. Pour
cela, on a différentes primitives de synchronisation comme les mutex, les
moniteurs ou encore les sémaphores.
Interblocage (deadlock) est un phénomène qui peut survenir en
programmation concurrente. L'interblocage se produit lorsque deux processus
concurrents s'attendent mutuellement. Les processus bloqués dans cet état le
sont définitivement, il s'agit donc d'une situation catastrophique.
Famines (livelocks) d'une entité (processus ou thread) essayant d'acquérir une
ressource, mais jamais ordonnancé au moment où elle est disponible.

Pour chaque type de programmation concurrente, on dispose d'abstractions de


haut niveau facilitant l'écriture de programmes concurrents.

Les systèmes transactionnels, utilisés principalement pour des


bases de données partagées, s'appuient sur la théorie de la sérialisabilité
pour garantir un accès concurrent à des ressources partagées. On parle de
mémoire transactionnelle Logicielle. (STM)

Dans le cas de processus en coopération en vue d'un but commun, au moins deux
techniques ont fait leurs preuves: La communication inter-processus utilisant
exclusivement l'envoi de messages et la synchronisation dataflow, c’est-à-dire
l'ordonnancement dynamique des threads en fonction de la disponibilité des
données.
Qu’est-ce que Linux ?

1. Linux est un système d’exploitation multitâche de la famille Unix. Il


fut initialement développé sur les processeurs de la famille Intel x86
mais il a depuis été adapté sur un grand nombre d’architectures
matérielles.
2. Linux est conforme à la norme POSIX, ce qui signifie que les
programmes développés sous Linux peuvent être recompilés
facilement sur d’autres systèmes d’exploitation compatibles POSIX.

3. Linux est également réputé pour sa grande interopérabilité, c’est-à-


dire qu’il peut facilement s’intégrer dans un réseau informatique
utilisant d’autres systèmes d’exploitation.
4. Le système d’exploitation Linux est libre. Le code source des
différents composants du système est disponible gratuitement sur
Internet. Ce même code source peut être redistribué gratuitement en
respectant les règles de la GPL (General Public Licence) et de sa
variante, la LGPL (Lesser General Public Licence). Elles sont définies
par la FSF (Free Software Foundation) pour le projet GNU. Le principe
général de la GPL est celui de la conservation de la liberté, chacun
devant au moins redistribuer ce qu’il a reçu.

Vous aimerez peut-être aussi