Robotique et temps-réel

Documents pareils
Ordonnancement temps réel

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Introduction à la programmation concurrente

1 Mesure de la performance d un système temps réel : la gigue

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Exécutif temps réel Pierre-Yves Duval (cppm)

DAns un système multi-utilisateurs à temps partagé, plusieurs processus

Introduction au temps réel

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Cours de Systèmes d Exploitation

Problèmes liés à la concurrence

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Génie Logiciel avec Ada. 4 février 2013

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Organigramme / Algorigramme Dossier élève 1 SI

Configuration automatique

Chapitre 4 : Exclusion mutuelle

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

INITIATION AU LANGAGE JAVA

Temps Réel. Jérôme Pouiller Septembre 2011

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Introduction aux systèmes temps réel. Iulian Ober IRIT

Temps Réel. Jérôme Pouiller Septembre 2011

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Exercices INF5171 : série #3 (Automne 2012)

SECURIDAY 2012 Pro Edition

Notions fondamentales du langage C# Version 1.0

Introduction aux algorithmes répartis

Cours 2: Exclusion Mutuelle entre processus (lourds, ou légers -- threads)

Projet Active Object

Programmation temps-réel Cours 1 et 2 Introduction et ordonnancement

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

Threads. Threads. USTL routier 1

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Analyse du temps de réponse des systèmes temps réel

//////////////////////////////////////////////////////////////////// Administration bases de données

Ordonnancement temps réel

PROGRAMMATION EVENEMENTIELLE sur EXCEL

Les systèmes de base de données temps réels. Pokrovskaya Natalia, Kabbali Nadia

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmer en JAVA. par Tama

Synchro et Threads Java TM

Conception des systèmes répartis

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

ACTIVITÉ DE PROGRAMMATION

Premiers Pas en Programmation Objet : les Classes et les Objets

Cours A7 : Temps Réel

Les processus légers : threads. Système L3, /31

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Introduction à la Programmation Parallèle: MPI

Plan du cours. Historique du langage Nouveautés de Java 7

Structure fonctionnelle d un SGBD

Bases Java - Eclipse / Netbeans

Corrigés des premiers exercices sur les classes

Surveillance et maintenance prédictive : évaluation de la latence de fautes. Zineb SIMEU-ABAZI Univ. Joseph Fourier, LAG)

GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Java Licence Professionnelle CISII,

Programmation Objet Java Correction

CEG4566/CSI4541 Conception de systèmes temps réel

SYSTÈME DE GESTION DE FICHIERS

Initiation au HPC - Généralités

Module BDR Master d Informatique (SAR)

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

Programmation C++ (débutant)/instructions for, while et do...while

Corrigé des TD 1 à 5

Configuration automatique

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

ORDONNANCEMENT CONJOINT DE TÂCHES ET DE MESSAGES DANS LES RÉSEAUX TEMPS RÉELS 4. QUELQUES EXEMPLES DU DYNAMISME ACTUEL DU TEMPS RÉEL

Architecture des ordinateurs

as Architecture des Systèmes d Information

Introduction au langage C

On appelle variable condition une var qui peut être testée et

GESTION LOGISTIQUE GESTION COMMERCIALE GESTION DE PRODUCTION

Gestion mémoire et Représentation intermédiaire

L exclusion mutuelle distribuée

VMWare Infrastructure 3

MEAD : temps réel et tolérance aux pannes pour CORBA

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Introduction : les processus. Introduction : les threads. Plan

Communiquer avec un ou plusieurs interlocuteurs. Michel Futtersack, Faculté de Droit, Université Paris Descartes, Sorbonne Paris Cité

Espace de stockage intermédiaire. Compte de Messagerie. Communication «Asynchrone» «Compte de Messagerie»

Documentation d information technique spécifique Education. PGI Open Line PRO

CH.3 SYSTÈMES D'EXPLOITATION

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

MANUEL D INSTALLATION DE WATCHDOC 2011 (EVALUATION)

Examen Médian - 1 heure 30

Transcription:

Robotique et temps-réel Robotique et Systèmes Embarqués Samuel Tardieu samuel.tardieu@enst.fr École Nationale Supérieure des Télécommunications Institut de la Francophonie pour l Informatique ROSE/TempsReel p.1/28

Problématique Certains problèmes sont très liés au temps: un distributeur de billets ne doit pas mettre 5 minutes à délivrer les billets une balance ne doit pas peser en 30 secondes un radar ne doit pas mettre 2 secondes à réagir un système de freinage ABS ne doit pas mettre 10ms à réagir ROSE/TempsReel p.2/28

Système temps-réel Caractéristiques: exactitude logique (comme tout système): les sorties sont déterminées en fonction des entrées et de l état interne exactitude temporelle: les sorties sont positionnées au bon moment ROSE/TempsReel p.3/28

Les types de temps-réel Temps-réel mou: un retard dans l obtention du résultat n est pas dramatique (distributeur de billets) Temps-réel dur: un retard dans l obtention du résultat le rend inutile (détection de missile) Temps-réel ferme: un retard, s il arrive très peu souvent, peu être toléré (téléphonie) La plupart des systèmes temps-réel sont hybrides. ROSE/TempsReel p.4/28

Types de contraintes Précision: effectuer certaines opérations à un moment précis (horloge dont l aiguille avance toutes les secondes) Temps de réponse: effectuer certaines opérations en un temps maximum (système de freinage ABS) ou avec un temps moyen fixé (distributeur de billets) Rendement: nombre de requêtes traitées par unité de temps (robot de production dans une usine) ROSE/TempsReel p.5/28

Architecture mono-tâche Un système temps-réel à une seule tâche est simple à définir. Il suffit de répeter indéfiniment la suite de tâches: Attendre un stimulus Agir en fonction du stimulus Le dimensionnement du processeur dépend du temps de réponse souhaité. Exemples: Un distributeur automatique Une carte à puce ROSE/TempsReel p.6/28

Architecture multi-tâches Plusieurs problèmes se posent lorsque plusieurs tâches s exécutent simultanément: accès au processeur accès concurrent à la mémoire accès aux périphériques Il faut prévoir un ordonnancement permettant au système de remplir son rôle. ROSE/TempsReel p.7/28

Priorités Les priorités permettent d organiser les tâches Elles peuvent être statiques ou dynamiques Dans un système temps-réel, en général une tâche n est jamais interrompue par une tâche de moindre priorité (inversion de priorité) une tâche ne cède la main à une tâche de même priorité que volontairement (prix du changement de contexte) Le système Unix n est pas temps-réel à la base Microsoft Windows n est pas temps-réel ROSE/TempsReel p.8/28

Ordonnancement On peut prévoir le comportement d un système si on connaît certaines caractéristiques des tâches: loi d arrivée temps de traitement Methodes: algorithmes statiques: table d exécution ou analyse «rate monotonic» algorithmes dynamiques (HPF, EDF, LLF, «best effort») ROSE/TempsReel p.9/28

Table d exécution Avantages: l ordre d exécution des tâches est connu l accès aux ressources est centralisé Inconvénients: les événements entrants ne peuvent pas être traités rapidement les caractéristiques du système doivent toutes être connues à l avance ROSE/TempsReel p.10/28

Rate monotonic Méthode: des priorités sont affectées aux différentes tâches (utilisation de HPF, «Highest Priority First») ces priorités assurent la possibilité d ordonnancer le système Inconvénients: le rythme d arrivée des tâches doit être bien défini ROSE/TempsReel p.11/28

Calcul rate monotonic Soient: C i le temps d exécution de la tâche i T i la période de la tâche i D i l échéance (D i = T i ) U i = C i /T i le taux d utilisation du processeur U = n i=1 C i T i n (2 1 n 1 ) Quand n est grand, U tend vers ln(2) (0,69). ROSE/TempsReel p.12/28

Zone critique Théorème de la zone critique: Si l ensemble des tâches respectent leur première échéance, alors toutes les tâches respecteront leurs échéances futures. ROSE/TempsReel p.13/28

EDF Earliest Deadline First le travail dont le résultat est nécessaire le plus rapidement est exécuté d abord Inconvénients: une échéance manquée provoque une avalanche de retards d échéances ROSE/TempsReel p.14/28

L L F Least Laxity First le travail à qui il reste le moins de marge s exécute d abord Inconvénients: il faut estimer le temps nécessaire pour chaque travail ROSE/TempsReel p.15/28

Sémaphore et verrou Un sémaphore S est composé de: Un compteur S n, initialisé lors de la création du sémaphore Une liste de tâches en attente sur ce sémaphore S t, initialement vide Les opérations sont: P (S): prise du sémaphore (demande d une ressource) V (S): relâchement du sémaphore (libération d une ressource) ROSE/TempsReel p.16/28

Opérations sur un sémaphore Lorsqu une tâche T opère sur un sémaphore, P (S) V (S) Dans tous les cas, décrémenter S n Si S n < 0, ajouter T en queue de S t et bloquer la tâche T P (S) est une opération potentiellement bloquante, c est un cas de contention (plus de candidats que de ressources) Dans tous les cas, incrémenter S n Si S t n est pas vide, débloquer la première tâche de la liste et la retirer de la liste V (S) n est jamais une opération bloquante ROSE/TempsReel p.17/28

Remarques S n a un double rôle lorsque S n 0, il représente le nombre de ressources libres lorsque S n < 0, il représente le nombre d entrées dans la file d attente (S n = S t ) Un verrou est un sémaphore initialisé avec S n = 1 Le sémaphore doit protéger ses propres structures contre l accès concurrent: il utiliser une instruction test-and-set fournie par le processeur et gérée par le matériel ROSE/TempsReel p.18/28

Accès concurrent Une ressource peut être protégée par une ou plusieurs sections critiques utilisant un même verrou. Dans la section critique, une tâche: peut accéder librement à la ressource peut modifier librement la ressource ne doit pas attendre une autre ressource La longueur des sections critiques affecte le temps de réponse du système. ROSE/TempsReel p.19/28

Réservation de ressource Les sections critiques ne suffisent pas: une ressource peut être bloquée pendant longtemps (réseau) une tâche de haute priorité peut avoir besoin d une ressource bloquée Il y a des risques de blocage: une tâche de haute priorité peut être bloquée par une tâche de plus basse priorité. ROSE/TempsReel p.20/28

Héritage de priorité Pour éviter les inversions de priorité, on peut utiliser l héritage de priorité: une tâche T 1 a pris une ressource R une tâche T 2 plus prioritaire souhaite prendre la ressource R on augmente temporairement la priorité de la tâche T 1 à la priorité de la tâche T 2 pour qu elle libère plus vite la ressource R ROSE/TempsReel p.21/28

Plafonnement de priorité Il est possible d éviter les inversions de priorité en affectant un plafond aux ressources. Une tâche ne peut pas prendre une ressource dont le plafond (calculé a priori) est plus important que la priorité de la tâche. Si une tâche veut prendre une ressource R, elle doit attendre que le plafond de toutes les ressources bloquées soient moins important que sa propre priorité (ou égal). ROSE/TempsReel p.22/28

Synchronisation des tâches Les tâches communiquent par rendez-vous (Ada) par boîte à lettres (Erlang, Marvin, Esterel) par des mécanismes bancales (C/C++ et threads posix, Java) Le rendez-vous est construit grâce à une variable conditionnelle, un compteur et un verrou La boîte à lettres peut être protégée par un verrou ROSE/TempsReel p.23/28

Variable conditionnelle Prenons une variable conditionnelle C et un verrou S Opérations: «wait (C, S)» (S doit être pris auparavant) bloque la tâche courante sur la variable conditionnelle C tout en relâchant S de manière atomique. Quand la tâche sera débloquée, elle aura de nouveau acquis S. «signal (C)» débloque une tâche en attente sur la variable conditionnelle C «broadcast (C)» débloque toutes les tâches en attente sur la variable conditionnelle C (une par une, à cause du sémaphore S qui doit être réacquis) ROSE/TempsReel p.24/28

Le rendez-vous On souhaite amener deux tâches (au moins) à un endroit donné On souhaite les laisser bloquées jusqu à ce que toutes soient arrivées au rendez-vous On construit un compteur avec le nombre de tâches, protégé par un verrou. Chaque tâche qui arrive: prend le sémaphore décrémente le compteur broadcast la variable conditionnelle si le compteur est nul et relâche le sémaphore, ou se met en attente sur la variable conditionnelle sinon avant de relâcher le sémaphore, tout le monde réincrémente le compteur ROSE/TempsReel p.25/28

Rendez-vous en threads Posix int n = 2; /* Nombre de tâches */ pthread_cond_t *cond; pthread_mutex_t *verrou; void rendez_vous () { pthread_mutex_lock (verrou); n = n - 1; if (n == 0) pthread_cond_broadcast (cond); else pthread_cond_wait (cond, mutex); n = n + 1; pthread_mutex_unlock (verrou); } ROSE/TempsReel p.26/28

Rendez-vous en Ada Tâche A accept RendezVous (I : in out Integer) do I := I + 1; end RendezVous; Tâche B A.RendezVous (V); C est beaucoup plus simple lorsque le langage prévoit la synchronisation directement. ROSE/TempsReel p.27/28

Le temps-réel dans Linux Le noyau Linux n est pas temps-réel Les extensions temps-réel utilisent les services du noyau pour les portions non critiques (chargement d un module sur le disque) n utilisent pas les services du noyau pour les portions critiques considèrent le noyau comme une tâche de plus basse priorité utilisent des files de messages entre les différentes tâches ROSE/TempsReel p.28/28