210 lines
9.0 KiB
Markdown
210 lines
9.0 KiB
Markdown
<header><h1>
|
|
Real Time
|
|
</h1></header>
|
|
|
|
## Temps réel vs non - temps réel
|
|
Pour les systèmes non temps réel, seule l'exactitude du résultat importe, le traitement est principalement contrôlé par
|
|
des données massives, et ils ne dépendent pas d'un matériel spécifique.
|
|
En revanche, pour les systèmes temps réel, non seulement l'exactitude du résultat est importante, mais aussi le moment
|
|
où le résultat apparaît. Le traitement est contrôlé par des événements, les données sont simples,
|
|
les quantités sont modérées, le processeur est intensément utilisé, et ces systèmes dépendent d'un matériel spécifique.
|
|
|
|
**Système Déterministe:**
|
|
1. L'état futur du système peut être prédit de manière précise à partir de son état actuel et des entrées.
|
|
2. Chaque transition d'état est définie de manière univoque par les conditions actuelles, assurant une prévisibilité totale.
|
|
3. Les réponses du système à des signaux d'entrée sont constantes, sans dépendance de la qualité ou du nombre de ces signaux.
|
|
4. Idéal pour les applications où la précision du timing et la prédictibilité du comportement sont cruciales, comme dans les systèmes temps réel.
|
|
5. Le concept de déterminisme assure une fiabilité et une certitude dans le fonctionnement du système.
|
|
|
|
**Système Non-Déterministe:**
|
|
1. L'état futur du système ne peut pas être prédit de manière précise à partir de son état actuel et des entrées, introduisant une certaine incertitude.
|
|
2. Plusieurs transitions d'état peuvent résulter des mêmes conditions initiales, rendant le comportement du système moins prévisible.
|
|
3. Les réponses du système à des signaux d'entrée peuvent varier en fonction de différents facteurs, tels que la charge du système ou les conditions d'exécution.
|
|
4. Souvent utilisé dans des applications où une flexibilité est nécessaire, mais peut poser des défis dans les systèmes où la prédictibilité est cruciale.
|
|
5. La gestion de l'incertitude et l'adaptabilité aux conditions changeantes sont des caractéristiques clés des systèmes non-déterministes.
|
|
|
|
### Système temps réel
|
|
- ***Temps réel dur:*** Le systéme fait une erreur si le délai est dépassé.
|
|
- ***Temps réel souple:*** Le système accepte le dépassement du délai sans grave conséquence.
|
|
- ***Temps réel ferme:*** Le système accepte le dépassement du délai, mais le résultat n'est plus d'aucune utilité.
|
|
|
|
|
|
### Management du temps (Timing)
|
|
Le timing peut avoir principalement deux formes différentes :
|
|
- *Timing absolu:* Une tâche sera exécutée à un moment dans le temps bien déterminé.
|
|
- *Timing relatif:* Une tâche sera exécutée à la suite de l'apparition d'un événement.
|
|
|
|
Le timing peut par-contre aussi être classé comme suit :
|
|
- *Fixed Time:* Une tâche sera exécutée à un moment bien précis.
|
|
- *Fixed Time +/-:* L'exécution d'une tâche est démarrée dans un tout petit intervalle de temps avant ou après un moment bien précis.
|
|
- *Latest Time:* L'exécution d'une tâche est démarrée dans un intervalle de temps avant le moment le plus tard possible.
|
|
- *Earliest Time:* L'exécution d'une tâche est démarrée dans un intervalle de temps après le moment le plus tôt possible.
|
|
|
|
### Management du traitement
|
|
|
|
***Multitasking:***
|
|
Traitement en thread: pseudo-parallèle
|
|
|
|
***Multiprocessing:***
|
|
Traintement en parallèle sur plusieurs coeur / processeurs.
|
|
|
|
### Management des ressources
|
|
|
|
***Mutex:***
|
|
Une ressource peut être utilisée par un seul processus à la fois
|
|
|
|
***Semaphore:***
|
|
Une ressource peut être utilisée par un nombre limité de processus et sous des conditions bien précise
|
|
|
|
### Approches pour la programmation temps réel
|
|
|
|
***Synchrone:***
|
|
Tout est planifié à l'avance pendant la phase de programmation.
|
|
|
|
***Asynchrone:***
|
|
Rien est planifié à l'avance. Toutes les décisions sont faites pendant d'exécution.
|
|
|
|
#### Synchrone
|
|
Le timing des tâches cycliques est planifié précisément.
|
|
Ces dernières sont synchronisées (démarrées) par un signal d'une horloge.
|
|
La scéquence des tâches est déterminé à l'avance
|
|
Le temps cumulée de l'execution des tâches ne doit pas dépasser le temps d'un cycle.
|
|

|
|
|
|
<u>*Avantages*</u><br>
|
|
- Timing précis
|
|
- Comportement déterministe
|
|
|
|
<u>*Avantages*</u><br>
|
|
- Inadaptée aux Processus Sporadiques :
|
|
- Inflexibilité
|
|
|
|
#### Asynchrone
|
|
|
|
Le timing des tâches est contrôlé soit par un RTOS soit par un XF.
|
|
Les tâches sont contrôlées par des événements et des appels de méthodes.
|
|
Des tâches parallèles sont sérialisées.
|
|
Le séquencement des tâches n'est pas déterminé.
|
|

|
|
|
|
<u>Avantages</u><br>
|
|
- Flexibilité face aux changements de spécification du système.
|
|
- Implémentation possible au moyen de diagrammes d'états transitions.
|
|
|
|
<u>Inconvénients</u><br>
|
|
- Le RTOS ou le XF introduit des délais dans le traitement.
|
|
- Le timing n'est pas très précis, rendant les systèmes moins déterministes en temps.
|
|
- Systèmes toujours préemptifs, avec la possibilité d'interruptions dans le traitement
|
|
|
|
|
|
## Processus & Thread
|
|
|
|
**Processus :**
|
|
Un processus est un programme en cours d'exécution, avec sa propre mémoire et ses ressources allouées.
|
|
Dans le contexte des systèmes temps réel, un processus est souvent appelé une "task" (tâche).
|
|
Il peut être lié à un Real-Time Operating System (RTOS) ou un Executive Framework (XF).
|
|
Chaque processus a son propre espace mémoire, ce qui signifie qu'il ne partage pas directement ses données avec d'autres processus.
|
|
La communication entre les processus se fait généralement à travers des messages.
|
|
|
|
**Thread :**
|
|
- Un thread est une unité d'exécution plus légère au sein d'un processus.
|
|
- Contrairement à un processus, un thread partage le même espace mémoire que son processus parent.
|
|
- Les threads peuvent être exécutés de manière concurrente, ce qui permet un parallélisme au sein du processus.
|
|
- Les threads peuvent communiquer plus facilement entre eux, car ils ont un accès direct à la mémoire partagée.
|
|
|
|
**Différence :**
|
|
- La principale différence réside dans la gestion de la mémoire. Les processus ont leur propre espace mémoire distinct, tandis que les threads partagent la même mémoire avec leur processus parent.
|
|
- Les threads permettent une exécution concurrente au sein du même processus, tandis que les processus sont généralement des entités indépendantes.
|
|
- En résumé, un processus est un programme complet en cours d'exécution, tandis qu'un thread est une unité d'exécution plus petite qui partage la mémoire avec d'autres threads dans le même processus.
|
|
|
|
```plantuml
|
|
@startuml
|
|
binary "Red Task" as r
|
|
binary "Green Task" as g
|
|
binary "Blue Task" as b
|
|
concise "Task" as t
|
|
robust "Red Task" as rt
|
|
|
|
@0
|
|
r is low
|
|
g is low
|
|
b is low
|
|
t is {-}
|
|
rt is Sleep
|
|
|
|
@1
|
|
r is high
|
|
g is high
|
|
b is high
|
|
t is "" #blue
|
|
rt is ready
|
|
|
|
@2
|
|
r is low
|
|
g is low
|
|
b is low
|
|
t is "" #green
|
|
|
|
@4
|
|
t is "" #red
|
|
rt is running
|
|
|
|
@6
|
|
b is high
|
|
t is "" #blue
|
|
rt is interrupt
|
|
|
|
@7
|
|
b is low
|
|
t is "" #red
|
|
rt is running
|
|
|
|
@9
|
|
b is high
|
|
g is high
|
|
t is "" #blue
|
|
rt is interrupt
|
|
|
|
@10
|
|
b is low
|
|
g is low
|
|
t is "" #green
|
|
|
|
@12
|
|
t is "" #red
|
|
rt is running
|
|
|
|
@13
|
|
t is {-}
|
|
rt is Sleep
|
|
|
|
@enduml
|
|
```
|
|
|
|
## Scheduling
|
|
|
|
|
|
## OSAL, OXF, RTOS
|
|
|
|
**Différence entre OSAL, OXF et RTOS :**
|
|
|
|
1. **OSAL (Operating System Abstraction Layer) :**
|
|
- L'OSAL est une couche d'abstraction qui fournit une interface uniforme pour accéder aux services du système d'exploitation sous-jacent.
|
|
- Il permet de rendre le code portable entre différents systèmes d'exploitation en masquant les détails spécifiques de chaque système.
|
|
- L'OSAL est utile dans des environnements où le système d'exploitation peut varier, permettant ainsi d'adapter le logiciel à différentes plates-formes sans changer le code applicatif.
|
|
|
|
2. **OXF (Object Execution Framework) :**
|
|
- L'OXF est un framework qui fournit une infrastructure pour le développement d'applications temps réel orientées objet.
|
|
- Il facilite la modélisation d'objets réactifs, possédant souvent une machine à états, et offre une gestion efficace des événements.
|
|
- L'OXF peut être utilisé avec ou sans RTOS. Il fournit des fonctionnalités telles que la gestion des événements, la gestion des tâches, et la synchronisation entre les objets réactifs.
|
|
|
|
3. **RTOS (Real-Time Operating System) :**
|
|
- Un RTOS est un système d'exploitation conçu pour répondre aux exigences temporelles strictes des systèmes temps réel.
|
|
- Il offre des fonctionnalités telles que l'ordonnancement des tâches, la gestion du temps, la synchronisation, et la gestion des interruptions pour assurer des réponses prévisibles aux événements.
|
|
- Un RTOS peut être utilisé en conjonction avec l'OXF pour développer des systèmes temps réel orientés objet.
|
|
|
|
**Conclusion :**
|
|
- L'OSAL fournit une abstraction des services du système d'exploitation.
|
|
- L'OXF est un framework pour le développement d'applications temps réel orientées objet.
|
|
- Un RTOS est un système d'exploitation temps réel complet, offrant des services spécifiques pour répondre aux contraintes temporelles strictes.
|