# Temps Réel : Intro

## Qu'est ce que le temps réel

### Caractéristiques

- Non terminaison du système
- Cadencement évènementiel
- Traimtements et I/O entrelacés
- Le système peut attendre un évènement

**Définition** : Système qui a la capacité de répondre à des évènements asynchrones issus du monde physique dans des *délais prédéterminés*. 

Les contraintes temporelles doivent être respectées : 
- Sinon le système est *défaillant*
- L'échelle de temps dépend de l'application
&rarr; Temps réel != rapide

### Problématique

Vérifier que les contraintes temporelles spécifiées sont respectées avant toute exécution du système : 
- Caractériser le comportement de chaque entité du système
- Organiser les traitements pour garantir le respect des contraintes
&rarr; Ordonnancement temps-réel

### Caractéristiques d'un système temps-réel

- Déterministe : pour un contexte donné, le comportement est toujours le même
- Prédictibilité : les performances l'application doivent être prévues dans tous les cas possible pour respecter les contraintes de temps (Worst Case Execution Time)
- Fiabilité : capacité à réaliser et maintenir ses fonctionnalités dans les conditions prévues d'utilisation
  
## Gestion des interruptions

### Principe d'interruption

- Indique à l'OS l'occurence d'un évènement
- Seul moyen pour l'OS de reprendre la main sur le CPU
- Les interruption machines s'exécutent séquentiellement

### Atomicité des instructions

- Point Interruptible : Le CPU possède un état mémorisable à des instants précis où les registres sont stables.
- Instruction ASM atomique : interrruption seulement entre deux instructions

### Gestion des interruptions

Gestionnaire : Programme appelé par le processeur lorsque l'interruption est rencomtrée
- Gère les conséquences de l'interruption
- Responsable de de sauvegarder le contexte puis de le rétablir

**Changement de contexte / commutation de tâche** : Opération provoqué par le système quand le CPU doit être réaffecter à une autre tâche que celle qu'il exécutait avant ce changement.

### Etapes de gestion des interruptions

- Arrivée d'une interruption non masquée
- Sauvegarde du contexte d'exécution de la tâche courante
- Activation du gestionnaire d'interruptions
- Traitement de l'interruption
- Reprendre la tâche interrompue ou commutation vers une nouvelle tâche

### Condition de prise en compte

- Une interruption n'est pas automatiquemetn traitée dès qu'elle survient. Pour être traitée, elle doit : 
	- Ne pas être masquée
    - Arriver sur un point interruptible pour le CPU
    - Pas en même temps qu'une interruption plus prioritaire
- La qualité du STR dépend de la constance du temps de réponse d'une interruption

### Caracéristiques des tâches

- Tâche non-préemptible : tâche en cours d'exécution qui ne peut pas être interrompue
- Tâche préemptible : tâche en cours d'exécution qui peut être interrompue

### Interruptions UNIX

- Signal = interruption / déroutement
  - Evènement externe : envoyé par un autre process
  - Evènement interne : erreur
- Possible de les masquer
- Signal en attente = bit dans le registre des signaux à 1 &rarr; un autre signal du même type arrive il est perdu (TP)
- Prise en compte d'un signal = exécution d'une fonction
  - Handler système
  - Handler définit par un programmeur

## Système Multitâches

- Objectif général : optimiser l'emploi des ressources 
- Objectifs temps réel : 
  - Résultats justes à des dates donneés
  - Gérer des échelles de temps différentes
- Rôle de l'OS
  - Interface avec le matériel
  - Ordonnancement des tâches
  - IPC
  - Partage des ressources

### Intérêts

- Optimiser l'utilisation du matériel
  - Plusieurs fonctionnalités sur un même ordinateur
  - Parallèliser les I/O
- Simplifier la conception
- Traiter les évènements asynchrones
- Gérer les objectifs temps-réels
  - Echelles de temps
  - Degré de criticité

### Caractéristiques des tâches

- Niveau d'urgence : défini par la date d'échéance
- Niveau d'importance : capacité à résister aux fautes temporelles
  - Critiques
  - Essentielles
&rarr; permet de distinguer deux tâches de mêmes importance/urgence

### Règles d'ordonnancement

Dans un système temps-réel multitâche
- 100% des tâches critiques doivent respecter leur contrainte
- Pour les tâches essentielles, best effort

Deux types de STR :
- Dur : aucune faute temporelle acceptée
- Mou : une faute temporelle est acceptable
