Cours systèmes temps réel, Chapitre 2 - freeRTOS

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

En 2019, FreeRTOS était l'un des systèmes d'exploitation en temps réel les plus populaires sur le marché des systèmes embarqués.

True (A)

FreeRTOS est un système d'exploitation en temps réel propriétaire et fermé.

False (B)

Combien d'architectures FreeRTOS prend-il en charge ?

34

FreeRTOS ne prend en charge que 18 chaînes de compilation.

<p>False (B)</p> Signup and view all the answers

Quel est le rôle de l'ordonnanceur dans un système multitâche ?

<p>Gérer les tâches et les exécuter de manière efficace en partageant les ressources du processeur.</p> Signup and view all the answers

Parmi les états suivants, lequel n'est PAS un état possible d'une tâche dans un système FreeRTOS ?

<p>Terminé (B)</p> Signup and view all the answers

Une tâche à l'état 'Prêt' est en train d'utiliser le processeur.

<p>False (B)</p> Signup and view all the answers

Qu'est-ce qui se passe lorsqu'une tâche est bloquée ?

<p>La tâche arrête son exécution temporairement en attendant la résolution d'un problème, comme l'accès à une ressource indisponible.</p> Signup and view all the answers

L'état 'Suspendu' est le plus utilisé dans FreeRTOS.

<p>False (B)</p> Signup and view all the answers

Les tâches dans FreeRTOS partagent la même pile mémoire.

<p>False (B)</p> Signup and view all the answers

Expliquez brièvement le concept de 'pile' dans le contexte des tâches FreeRTOS.

<p>La pile est un espace mémoire réservé à chaque tâche pour stocker les informations nécessaires à son exécution, comme les variables locales, les paramètres de fonction et l'adresse de retour.</p> Signup and view all the answers

La fonction xTaskCreate() crée une nouvelle tâche et l'ajoute à la file d'attente des tâches prêtes.

<p>True (A)</p> Signup and view all the answers

La fonction vTaskStartScheduler() démarre l'ordonnanceur et commence l'exécution des tâches.

<p>True (A)</p> Signup and view all the answers

Quelle est la principale raison de l'utilisation de mécanismes de synchronisation dans les systèmes multitâches ?

<p>Pour gérer les ressources rares et éviter les conflits d'accès entre les tâches. (A)</p> Signup and view all the answers

Les interruptions sont un exemple de mécanisme de synchronisation.

<p>True (A)</p> Signup and view all the answers

Donnez un exemple de conflit d'accès à une ressource partagée qui peut se produire dans un système multitâche.

<p>Deux tâches essayant d'écrire dans le même fichier mémoire simultanément.</p> Signup and view all the answers

La communication entre les tâches ne nécessite pas de synchronisation.

<p>False (B)</p> Signup and view all the answers

Quel est le but principal d'une queue de messages dans un système multitâche ?

<p>Permettre aux tâches de communiquer entre elles en envoyant et en recevant des messages.</p> Signup and view all the answers

Expliquez la différence entre xQueueSend() et xQueueSendToBack().

<p>La fonction <code>xQueueSend()</code> ajoute le message à la tête de la file d'attente, tandis que <code>xQueueSendToBack()</code> l'ajoute à la fin de la file d'attente.</p> Signup and view all the answers

Que se passe -t-il lorsqu'une tâche appelle xQueueReceive() sur une queue de messages vide ?

<p>La tâche est bloquée jusqu'à ce qu'un message soit disponible dans la queue de messages.</p> Signup and view all the answers

Quel est le rôle du délai d'expiration portMAX_DELAY dans le contexte de la communication entre tâches via les queues de messages ?

<p>Le délai d'expiration <code>portMAX_DELAY</code> spécifie le temps maximum pendant lequel une tâche peut attendre un message avant d'être débloquée.</p> Signup and view all the answers

Quels sont les deux mécanismes de synchronisation fondamentaux utilisés dans les systèmes multitâches ?

<p>Les queues de messages et les sémaphores (D)</p> Signup and view all the answers

Les sémaphores et les mutex ont exactement la même fonction.

<p>False (B)</p> Signup and view all the answers

Que se passe-t-il lorsqu'une tâche tente de prendre un sémaphore binaire déjà pris ?

<p>La tâche est bloquée jusqu'à ce que le sémaphore soit libéré.</p> Signup and view all the answers

Le protocole 'Priority Inheritance' est utilisé pour résoudre le problème d'inversion de priorité.

<p>True (A)</p> Signup and view all the answers

Quel est le principal avantage du protocole 'Priority Inheritance' ?

<p>Il permet d'éviter que des tâches de haute priorité ne restent bloquées inutilement par des tâches de basse priorité.</p> Signup and view all the answers

L'inversion de priorité est un cas particulier du problème d'accès critique.

<p>True (A)</p> Signup and view all the answers

Flashcards

Qu'est-ce que FreeRTOS ?

FreeRTOS est un système d'exploitation temps réel (RTOS) largement utilisé pour les systèmes embarqués.

Qu'est-ce que signifie "libre de droit d'utilisation" et "open source"?

FreeRTOS est disponible gratuitement et son code source est ouvert à tous, ce qui permet aux développeurs de l'utiliser et de le modifier librement.

Quelles architectures sont prises en charge par FreeRTOS ?

FreeRTOS est compatible avec un large éventail de microcontrôleurs et de processeurs, incluant des marques populaires comme ARM, TI, Microchip, Atmel, NXP et Intel.

Quelle est la popularité de FreeRTOS ?

FreeRTOS a été téléchargé plus de 100 000 fois en 2020, ce qui témoigne de sa popularité et de la grande taille de la communauté d'utilisateurs qui l'entoure.

Signup and view all the flashcards

Qu'est-ce qu'une tâche dans un système multitâches ?

Dans un système multitâches, une tâche représente une unité de travail indépendante qui accomplit une action spécifique. Chaque tâche est exécutée de manière autonome et peut être gérée séparément.

Signup and view all the flashcards

Quel est le rôle de l'ordonnanceur ?

L'ordonnanceur est chargé de gérer les tâches en déterminant quelle tâche sera exécutée à un moment donné. Il attribue le processeur aux tâches en fonction de leur priorité et des ressources disponibles.

Signup and view all the flashcards

Quelles sont les différents états d'une tâche ?

Une tâche peut être dans plusieurs états au cours de son cycle de vie. Ces états représentent son statut d'exécution.

Signup and view all the flashcards

Qu'est-ce qu'une tâche à l'état 'Ready'?

Une tâche est prête à s'exécuter, mais attend son tour en raison de la présence d'autres tâches de priorité plus élevée en cours d'exécution.

Signup and view all the flashcards

Qu'est-ce qu'une tâche à l'état 'Running' ?

La tâche est en cours d'exécution, elle utilise le processeur pour exécuter son code.

Signup and view all the flashcards

Qu'est-ce qu'une tâche à l'état 'Blocked'?

La tâche est temporairement bloquée dans son exécution en raison de l'attente d'un événement ou d'une ressource. Elle n'utilise pas le processeur pendant cette période.

Signup and view all the flashcards

Qu'est-ce qu'une tâche à l'état 'Suspended' ?

Une tâche est dans un état suspendu et ne peut pas être exécutée. Cet état est utilisé pour mettre une tâche en pause temporairement.

Signup and view all the flashcards

Comment la mémoire est-elle gérée dans FreeRTOS ?

FreeRTOS gère la mémoire pour chaque tâche. Chaque tâche a un espace mémoire alloué pour stocker ses variables, son code d'exécution, etc.

Signup and view all the flashcards

Pourquoi la communication entre les tâches est-elle importante dans FreeRTOS ?

La communication entre les tâches est essentielle pour permettre aux tâches de partager des informations et de collaborer.

Signup and view all the flashcards

Qu'est-ce que l'interférence dans les systèmes multitâches ?

L'interférence se produit lorsque plusieurs tâches tentent d'accéder aux mêmes ressources en même temps, ce qui peut entraîner des erreurs et des résultats imprévisibles.

Signup and view all the flashcards

Qu'est-ce que la synchronisation dans FreeRTOS ?

La synchronisation permet de coordonner les tâches pour éviter les interférences et garantir un ordre d'exécution spécifique.

Signup and view all the flashcards

Qu'est-ce qu'une queue de message dans FreeRTOS ?

Les queues de messages sont un mécanisme de communication permettant aux tâches d'échanger des données entre elles de manière ordonnée.

Signup and view all the flashcards

Qu'est-ce qu'un sémaphore dans FreeRTOS ?

Le sémaphore est un outil utilisé pour protéger les ressources partagées en limitant l'accès à une seule tâche à la fois. Il sert à éviter les conflits d'accès.

Signup and view all the flashcards

Qu'est-ce qu'un mutex dans FreeRTOS ?

Un mutex est un sémaphore binaire qui assure l'exclusion mutuelle. Il est utilisé pour empêcher plusieurs tâches d'accéder à la même ressource en même temps.

Signup and view all the flashcards

Qu'est-ce que le Priority Inheritance Protocol (PIP) ?

Le Priority Inheritance Protocol (PIP) est une technique qui permet de résoudre les problèmes d'inversion de priorité en augmentant temporairement la priorité d'une tâche à faible priorité lorsqu'elle détient une ressource dont une tâche à plus haute priorité a besoin.

Signup and view all the flashcards

Quelles sont les fonctions clés pour utiliser les queues de message dans FreeRTOS ?

xQueueSend() envoie une donnée à la queue de messages. xQueueReceive() lit une donnée de la queue de messages.

Signup and view all the flashcards

Quel est l'intérêt d'utiliser les queues de messages?

Les queues de messages sont souvent utilisées pour garantir une communication synchrone entre des tâches fonctionnant à des vitesses différentes.

Signup and view all the flashcards

Quels sont les types de sémaphore ?

Un sémaphore peut être binaire, ce qui signifie qu'il ne peut être pris que par une seule tâche à la fois, ou à compteur, ce qui permet à plusieurs tâches d'accéder à une ressource jusqu'à ce que le compteur atteigne 0.

Signup and view all the flashcards

Que se passe-t-il lorsqu'une tâche essaie de prendre un sémaphore binaire déjà pris ?

Une tâche qui essaie de prendre un sémaphore binaire déjà pris est bloquée jusqu'à ce que le sémaphore soit à nouveau disponible.

Signup and view all the flashcards

Quel est l'avantage du PIP ?

Le PIP permet d'éviter que la tâche à haute priorité ne soit bloquée pendant une durée excessive en attendant que la tâche à faible priorité termine son travail.

Signup and view all the flashcards

En quoi consiste le problème d'inversion de priorité ?

L'inversion de priorité peut survenir lorsque la tâche à basse priorité détient une ressource demandée par la tâche à haute priorité, qui est donc bloquée.

Signup and view all the flashcards

Comment le PIP résout-il le problème d'inversion de priorité ?

Le PIP résout le problème d'inversion de priorité en augmentant temporairement la priorité de la tâche à faible priorité pour qu'elle libère rapidement la ressource.

Signup and view all the flashcards

Study Notes

Cours systèmes temps réel, Chapitre 2 - Exécutif temps réel (freeRTOS)

  • Le cours porte sur les systèmes temps réel, plus spécifiquement sur l'exécutif temps réel freeRTOS.
  • Le conférencier est Mariem TURKI.
  • L'année académique est 2024/2025.
  • Le niveau est LISI3.

Introduction (Diapositive 2)

  • Une étude de marché de 2019 a identifié les systèmes d'exploitation les plus utilisés dans l'embarqué.
  • Embedded Linux et Android sont en tête des systèmes d'exploitation utilisés.
  • L'étude régionale montre que l'Europe utilise plus Embedded Linux, tandis que l'Asie-Pacifique utilise plus Android.

Introduction (Diapositive 3)

  • En 2019, FreeRTOS est un leader sur le marché de l'embarqué.
  • Il est libre d'utilisation et open source (licence MIT).
  • Il est officiellement supporté par 34 architectures (ARM, TI, Microchip, Atmel, NXP, Intel...) et 18 chaînes de compilation.
  • Il a été téléchargé plus de 100 000 fois en 2020, ce qui indique une communauté d'utilisateurs active.

Notion de tâche (Diapositive 4)

  • En environnement multitâches, une application est divisée en unités de travail indépendantes appelées tâches.
  • L'ordonnanceur gère ces tâches, permettant potentiellement l'exécution simultanée de plusieurs tâches.
    • Exemple de code C (Task1)

Notion de tâche: Différentes états (Diapositive 5)

  • Chaque tâche dans un environnement multitâches possède un état.
  • Les tâches doivent d'abord être créées et initialisées.

Notion de tâche: Différentes états (Diapositive 6)

  • Une tâche à l'état "Ready" est prête à s'exécuter et sa priorité détermine son ordre d'exécution.
  • Une tâche en exécution ("Running") est en possession du processeur.
  • Une tâche bloquée ("Blocked") attend un événement pour continuer son exécution.
    • Les causes de blocage sont : ressource non disponible, zone protégée, ou communication bloquée...
  • Une tâche suspendue ("Suspended") est hors contrôle de l'ordonnanceur.

Notion de tâche: Gestion mémoire (Diapositive 7)

  • Description de la gestion mémoire au niveau des tâches (code d'exemple).
  • Illustration graphique de la pile d'exécution.
    • Affichage des variables (Main Stack, TCB Task1, Task1 Stack, TCB Task2, Task2 Stack, Heap)

Notion de tâche: Gestion mémoire (Diapositive 8)

  • Exemple d'implémentation d'une tâche.
    • Passage de paramètres à la tâche.
    • Création d'une tâche, avec des détails sur les paramètres (pointeur, chaînes de caractères utilisés).
    • Code illustratif dans le langage C à l'aide d'exemples pour une fonction Task1

Mécanismes TR (Diapositive 9)

  • Les résultats d'une tâche peuvent être nécessaires à l'exécution d'une autre tâche. ( Exemple décompression MPEG2.)
  • Les tâches peuvent partager des ressources (mémoire, périphériques). (Exemple: navigateur et application de visioconférence)

Mécanismes TR: Problème d'interférence (Diapositive 10)

  • Dans un environnement multitâche, les ressources partagées peuvent entraîner des problèmes d'interférence (accès concurrent).
  • Illustré sur la diapositive par le code (exemple de lecture et écriture sur une variable commune).
    • Illustre schématiquement le chemin d'accès des tâches à la ressource partagée.
      • Code montrant l'interférence entre plusieurs tâches accédant à la même ressource simultanément.

Mécanismes TR: Communication entre les tâches (Diapositive 11)

  • Communication entre les tâches (échanges d'informations).
  • Utilisation de la queue des messages dans les systèmes temps réels pour satisfaire les contraintes d'échanges.
  • Utilisation des sémaphores pour la synchronisation entre tâche
  • Utilisation des mutex (mutuellement exclusive) pour des accès simultanés à des ressources partagées.

Mécanismes TR: Queue de message (Diapositive 12)

  • Les queues de messages permettent un échange de données entre tâches.
  • Structure de données FIFO en général (First In First Out).
  • Définition des queues de messages en termes de nombre et taille d'éléments.

Mécanismes TR: Queue de message (Diapositive 13)

  • Fonctionnalités des messages (FreeRTOS)
  • Détails sur xQueueSend(), xQueueSendToBack(), xQueueReceive() et les temps mort (Timeout).

Mécanismes TR: Queue de message (Diapositives 14 et 15)

  • Exemple avec deux producteurs (priorité 1) et un consommateur (priorité 2).
  • Illustration schématique du flux entre les tâches, les threads et la queue.
    • Schéma de l'échange des messages entre plusieurs threads et la queue.
      • Détail du rôle de taskYIELD (code).

Mécanismes TR: Le sémaphore (Diapositive 17)

  • Le sémaphore permet de gérer l'accès à des ressources partagées dans les applications temps réel.
  • Principe fonctionnel analogue à celui des queues de messages, et préservation de l'ordre d'arrivée des tâches.
  • Mécanisme binaire: sémaphore en tant que variable booléenne
  • Opérations: Prise ("Take")/Libération ("Give") du sémaphore
    • Code décrivant l'opération d'accès et de libération du sémaphore.

Mécanismes TR: Le sémaphore (Diapositives 18 et 19)

  • Exemple du fonctionnement d'un sémaphore pour synchroniser l'accès à une ressource partagée entre trois tâches.

Mécanismes TR: Le sémaphore (Diapositive 20)

  • Code d'exemple utilisant les sémaphores en C
    • Description du code C avec éléments clés (incluant header, définitions et fonctions).

Mécanismes TR: Inversion de priorité (Diapositive 21)

  • Explication du problème d'inversion de priorités dans les systèmes temps réel.
  • Illustration schématique de tâches avec des priorités différentes et des interactions sur les ressources.
    • Rôle du délai et de la gestion des ressources dans l'inversion des priorités.

Mécanismes TR: Inversion de priorité (Diapositives 22 et 23)

  • Le protocole d'héritage de priorité (PIP) et mécanisme d'atténuation du problème d'inversion de priorités.
  • Illustration d'un exemple de résolution du problème de l'inversion de priorités.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Use Quizgecko on...
Browser
Browser