Vous êtes sur la page 1sur 12

STR TD 1

RTOS est un système d'exploitation destiné à servir des applications en temps


réel qui traitent les données au fur et à mesure qu'elles arrivent, principalement
sans délai de mémoire tampon.
Il propose une planification basée sur les priorités, ce qui vous permet de séparer
le traitement analytique du traitement non critique.
Les composants importants du système RTOS sont : 1) le planificateur, 2) le
multitraitement symétrique, 3) la bibliothèque de fonctions, 4) la gestion de la
mémoire, 5) la latence de distribution rapide et 6) les objets et classes de
données définis par l'utilisateur
Trois types de RTOS sont 1) le temps dur 2) le temps doux et 3) le temps ferme
Le système RTOS occupe très moins de mémoire et consomme moins de
ressources
La performance est le facteur le plus important à prendre en compte lors de la
sélection d'un RTOS.
Le système d'exploitation à usage général (GPOS) est utilisé pour les ordinateurs
de bureau et les ordinateurs portables, tandis que le système d'exploitation en
temps réel (RTOS) ne s'applique qu'à l'application intégrée.
EXAMPLE DES STR :
Les systèmes en temps réel sont utilisés dans le système de réservation des
compagnies aériennes, le système de contrôle du trafic aérien, etc.
Le plus gros inconvénient du RTOS est que le système ne se concentre que sur
quelques tâches.
English

● RTOS is an operating system intended to serve real time application that


process data as it comes in, mostly without buffer delay.
● It offers priority-based scheduling, which allows you to separate analytical
processing from non-critical processing.
● Important components of RTOS system are: 1)The Scheduler, 2)
Symmetric Multiprocessing, 3) Function Library, 4) Memory Management,
5) Fast dispatch latency, and 6) User-defined data objects and classes
● Three types of RTOS are 1) Hard time 2) Soft time ,and 3) Firm time
● RTOS system occupy very less memory and consume fewer resources
STR TD 1

● Performance is the most important factor required to be considered while


selecting for a RTOS.
● General-Purpose Operating System (GPOS) is used for desktop PC and
laptop while Real-Time Operating System (RTOS) only applied to the
embedded application.
● Real-time systems are used in Airlines reservation system, Air traffic
control system,etc.
● The biggest drawback of RTOS is that the system only concentrates on a
few tasks.
● **********************************************
● il existe 2 types de systèmes d'exploitation en temps réel. Ce sont les Hard
RTOS et les SOFT RTOS. Un Hard RTOS fournit des résultats sur une base
temporelle exacte. Alors qu'un SOFT RTOS accorde moins d'importance en
termes de temps et de précision.
● Les types de taches :
● Tâches périodiques
● Tâches dynamiques

Par exemple:

Considérez votre téléphone portable comme un exemple. Dans le


téléphone mobile, même si votre appel est activé, vous pouvez jouer avec
d'autres applications, vous pouvez taper et envoyer des messages texte,
votre horloge est mise à jour et affichée, etc.

les caractéristiques les plus courantes d'un système temps réel multitâche :
• plusieurs tâches doivent être exécutées périodiquement à intervalles
différents.
• une tâche doit communiquer de l'information à une autre tâche.
• une tâche, ici l'impression, doit s'exécuter avec une faible priorité de
façon à garantir les contraintes de temps des autres tâches.

Types de Multitâche : coopératif et préemptif

Le multitâche préemptif signifie que les changements de tâches peuvent


être lancés directement à partir des gestionnaires d'interruption.
STR TD 1

Avec le multitâche coopératif (non préemptif), un changement de tâche


n'est effectué que lorsqu'une tâche appelle le noyau, c'est-à-dire qu'il se
comporte « de manière coopérative » et donne volontairement au noyau
une chance d'effectuer un changement de tâche.

Ordonnanceur dans la vie courant : est l'art de planifier vos activités afin
que vous puissiez atteindre vos objectifs et vos priorités dans le temps qui
vous reste. Lorsqu'il est fait efficacement, il s'assure que vous disposez de
suffisamment de temps pour les tâches essentielles.

Évitez de prendre plus que ce que vous pouvez gérer.

Ordonnanceur dans system numérique : est l'action d'affecter des


ressources pour effectuer des tâches. Les ressources peuvent être des
processeurs, des liaisons réseau ou des cartes d'extension. Les tâches
peuvent être des threads, des processus ou des flux de données.

L'activité d'ordonnancement est réalisée par un processus appelé


ordonnanceur. Les planificateurs sont souvent conçus de manière à maintenir
toutes les ressources informatiques occupées (comme dans l'équilibrage de
charge), à permettre à plusieurs utilisateurs de partager efficacement les
ressources système ou d'atteindre une qualité de service cible.

Tout d'abord, qu'est-ce que le multitâche ?

Le multitâche est la capacité d'exécuter plusieurs tâches ou processus d'une


manière apparemment simultanée. et notez ici qu'il est dit apparemment
simultané, cela signifie que ce n'est pas réellement simultané et c'est parce que
dans les systèmes embarqués de petite à moyenne taille, nous n'utilisons qu'un
processeur et le processeur ne peut exécuter qu'une seule tâche à la fois. Alors,
comment pouvons-nous exécuter plusieurs tâches tout en ayant un seul
processeur ?

La réponse est en divisant le temps CPU entre toutes les tâches que nous devons
exécuter avec un taux très élevé, cela nous donne aux humains l'illusion que tout
s'exécute en même temps. Maintenant, nous savons ce qu'est le multitâche, mais
comment pouvons-nous réellement le faire dans le code ? la réponse à cela est
d'utiliser ce qu'on appelle un planificateur.

qu'est-ce qu'un ordonnanceur ?


STR TD 1

Un ordonnanceur est une partie du système d'exploitation qui est responsable de


la sélection de la prochaine tâche à exécuter par le processeur pour s'assurer que
chaque tâche respecte son échéance. Mais sur quelle base le planificateur choisit-
il la prochaine tâche à exécuter ? Le planificateur choisit la tâche à exécuter
ensuite en fonction de l'algorithme du planificateur utilisé dans la mise en œuvre
du planificateur. Il existe de nombreux algorithmes utilisés dans la planification
et j'expliquerai les plus courants et les plus importants.

algorithmes d'ordonnancement

Les algorithmes d'ordonnancement les plus connus utilisés dans les systèmes
embarqués sont.

Algorithme piloté par l’horloge

Algorithme Round-Robin

Algorithme axé sur les priorités


* Planification du premier arrivé, premier servi (FCFS).
*Ordonnancement prioritaire.
*Temps restant le plus court.
*Ordonnancement Round Robin (RR).
*Planification des files d'attente à plusieurs niveaux.
Objectif de l’ordonnanceur :
● garantit que les tâches prioritaires s'exécutent dans des délais précis
● L'objectif principal de ce ordonnanceur est de réduire le temps de réponse
associé à chacun des processus associés au lieu de gérer l'échéance.
La portabilité est sa capacité à pouvoir être adapté plus ou moins
facilement en vue de fonctionner dans différents environnements
d'exécution.
Les etats/transitions d’une taches logiciels
STR TD 1

xTaskdelay() : spécifie le temps à laquelle la tâche souhaite se débloquer par


rapport à le temps à laquelle vTaskDelay() est appelée.
Example :
Void Code_Tache_principale (void *pvParameters)
{ for( ;; )
{ // actionne le mélange et attendre pendant Tmix
vTaskDelay(Tmix);
// arrêter le mélange
// chauffer le mélange pendant le temps Tchauffe
vTaskDelay(Tchauffe);
// arreter le chauffage
// faire reposer le mélange
vTaskDelay(Trepos);
STR TD 1

Plusieurs tâches peuvent opérer de manière autonome avec la même partie


de code ou avec des codes différents. Une même fonction peut donc être exécutée
par plusieurs tâches, on la dira et on l'écrira de façon réentrante. C'est lors de la
création de ces tâches que la même partie de code est déclarée.

Les tâches sont des parties de code (fonctions) qui n'acceptent pas de
paramètre et qui ne retournent aucune valeur. Une tâche doit comporter une
boucle infinie lorsqu'elle n'est jamais sensée se terminer ou se détruire lorsqu'elle
est terminée.
Types de noyeaux str :
Les noyaux temps réel se divisent en deux catégories appelées noyaux sans
réquisition du processeur (no preemptive scheduling) et noyaux avec réquisition
du processeur (preemptive scheduling).

La notion de priorité d'une tâche est déterminée par deux notions :


• le niveau de priorité que l'on attribue à la tâche lorsqu'elle est créée.
• l'ordre dans lequel sont classées, dans un état particulier, les tâches de
même niveau de
priorité. Cet ordre est de type FIFO, il existe une file d'attente par état
ou par ressource.
STR TD 1

Dans un groupe de même priorité, les tâches s'exécutent dans l'ordre où


elles sont passées prêtes à l'exécution. Une tâche nouvellement créée dans un
niveau de priorité qui en contient déjà (et qui sont prêtes) se trouvera donc placée
en fin de liste.
Evènements qui cause la commutation du contexte :

● Changement de priorité
● Interruptions
● Sdsd

● QUESTION 15
● • sc_tcreate créer une tâche
● • sc_tdelete supprimer une tâche
● • sc_tsuspend suspendre une tâche
● • sc_tresume faire reprendre (suspended → ready) une tâche suspendue
par un sc_tsuspend
● • sc_delay suspendre une tâche pendant une durée déterminée
● • sc_tpriority changer la priorité d'une tâche
● • sc_tinquiry se renseigner sur une tâche (état, identificateur, priorité,
● • sc_lock invalider la “ rescheduling procedure ”
● • sc_unlock valider la “ rescheduling procedure ”

L'ordonnancement (scheduling) est le mécanisme par lequel le noyau


choisit la tâche qui va utiliser le processeur.
Les algorithmes d'ordonnancement peuvent également être statiques ou
dynamiques. Un algorithme est dit statique s'il sait déterminer, a priori, les
ordonnancements possibles de son système. Il est dit dynamique si
l'ordonnancement est déterminé lors de l'exécution.
On distingue souvent quatre catégories d'algorithmes d'ordonnancement :
• Algorithmes statiques pilotés par table.
• Algorithmes statiques préemptifs basés sur les priorités.
• Algorithmes dynamiques basés sur une planification à l'exécution.
STR TD 1

• Algorithmes dynamiques basés sur la notion de meilleur effort.

C'est exactement ce qu'une personne fait dans la vie courante quand elle
répartit ses activités prévisionnelles dans un agenda.
NUMRIQUE : les séquences de tâches sont rangées dans des tables et
appliquées systématiquement par un ordonnancement cyclique.

Critères de qualités des algorithmes d’allocation :


• efficacité
Le processeur doit consacrer le maximum de temps à l'application.
• temps de réponse bref
Le temps de réponse doit être faible de façon à réagir rapidement à un
événement externe.
• impartialité
L'ordonnanceur doit effectuer un partage équitable du processeur.
• débit
L'ordonnanceur doit effectuer le plus de tâches possible dans un intervalle de
temps donné. • temps de réponse aux interruptions (interrupt latency)
Le temps de réponse aux interruptions est un critère important pour les noyaux
temps réel.
héritage de priorité (priority inheritance)
Ce mécanisme sera traité et expliqué dans le chapitre relatif à la
synchronisation.
Les principaux algorithmes d'ordonnancement en ligne utilisent l'un des
critères suivants afin de prendre les décisions quand le système est actif :
priorité (priority)
échéance (deadline)
marge (laxity) marge = échéance - durée restante de traitement - temps
STR TD 1

courant.
Les algorithmes classiques de décision en ligne sont :
HPF (Highest Priority First) priorité la plus élevée d'abord
EDF (Earliest Deadline First) échéance la plus proche d'abord
LLF (Least Laxity First ou Least Slack Time) marge la plus courte d'abord.

● HPF : est l'un des plus connus : la décision consiste à sélectionner la tâche
prête qui a la priorité la plus forte.
● Dans EDF : il faut sélectionner la tâche prête qui a l'échéance la plus
proche. EDF prend en compte l'urgence d'un travail à accomplir.
● LLF prend également en compte l'urgence du travail à accomplir mais lui
rajoute la notion de durée du travail (temps de travail restant - temps
restant avant échéance).

79

Ordonnancement par priorité avec files multiples


Ce type d'ordonnancement est une variante de l'ordonnancement par
priorité. Le principe utilisé consiste à combiner l'ordonnancement circulaire (mais
sans quantum) et l'ordonnancement par priorité. Dans ce modèle, plusieurs tâches
peuvent coexister au même niveau de priorité. Si plusieurs tâches sont présentes
dans la file de plus forte priorité, une de ces tâches est en exécution. Le modèle est
proche de celui du tourniquet, sans qu'un quantum ne soit précisé, la commutation
se faisant sur des suspensions, des "réveils" ou des appels système.

Communication par zone commune de données


La façon la plus simple et la plus rapide de transmettre des données est de
ne pas en transmettre. Sinon, il suffit de disposer d'une zone de mémoire
commune dans laquelle seront disposées les données en libre service. L'allocation
de cette zone sera réalisée à l'aide de variables globales ou de requêtes spécifiques.
STR TD 1

Les risques :
Le problème de communication par zone commune de données est surtout
lié à la synchronisation entre les tâches qui communiquent. En effet les méthodes
d'écriture et de lecture de données sont assez évidentes lorsqu'on travaille avec
des pointeurs.
Les remèdes :
Il suffit de lire une donnée seulement après que celle-ci ait été écrite et de
ne pas écrire une nouvelle donnée avant que l'ancienne n'ait été lue. Comme
précédemment,
ces problèmes ont été facilement résolus en utilisant une boîte aux lettres.

Les tâches soumises à de fortes contraintes de temps sont liées à des


interruptions et sont appelées tâches matérielles.
Les tâches différées ou tâches logicielles sont programmées, soit dans une
boucle de scrutation (voir chapitre 1), soit de façon indépendante (principe utilisé
dans ce cours). Elles sont alors exécutées d'une manière pseudo-simultanée.

Code réentrant : est un code qui peut être accessible par plusieurs taches
simultanément, ce code est pas besoin d’avoir des mécanismes particulier pour les
gestion des conflits . (Vu comme ressource non partagé).

Code non-réentrant : vu comme ressource partagé.

Section critique : morceau de code qui va manipuler des ressources communes


(logiciels, matériels, variables, périphériques)

Exclusion mutuelle : permet d’éviter le partage de ressource a un instant donné.

. Portabilité
Il s'agit du mécanisme le plus simple qui peut être utilisé sur tous les
STR TD 1

ports FreeRTOS.

tâche Idle est la tâche la plus basse priorité de l'application. Lorsque aucune
tâche ne tourne (tâches bloquées), c'est en fait la tâche Idle qui est en cours
d'exécution.

Un TCB est une structure de données décrivant une tâche (descripteur de


tâche). , un TCB comporte par exemple :

● la priorité de la tâche

● le ou les événements qu'elle attend

● le pointeur de base de la pile associée à la tâche

● le pointeur de sommet de pile


STR TD 1

Vous aimerez peut-être aussi