Files
Yggdrasil/infotro/PTR/RealTime.md
T
2024-01-31 19:19:59 +01:00

8.7 KiB

Real Time

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.

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. Programmation synchrone

Avantages

  • Timing précis
  • Comportement déterministe

Avantages

  • 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é. Programmation asynchrone

Avantages

  • Flexibilité face aux changements de spécification du système.
  • Implémentation possible au moyen de diagrammes d'états transitions.

Inconvénients

  • 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.
@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.