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



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

Introduction aux Systèmes et aux Réseaux

REALISATION d'un. ORDONNANCEUR à ECHEANCES

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

Eléments de spécification des systèmes temps réel Pierre-Yves Duval (cppm)

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

Cours A7 : Temps Réel

Introduction à la programmation concurrente

Problèmes liés à la concurrence

LEs processus coopèrent souvent pour traiter un même problème. Ces

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

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

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

Linux embarqué Retour d expérience et temps réel. Denis Coupvent-Desgraviers

Plan global. Programmation système II. Socket du domaine UNIX. Plan. Socket UNIX, Terminaux, Async IO, Mémoire, ELF.

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

Programmation système en C/C++

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

Playing with ptrace() for fun and profit

Cours 6 : Tubes anonymes et nommés

Architecture des ordinateurs

Cours de Systèmes d Exploitation

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

Programmation C. Apprendre à développer des programmes simples dans le langage C

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Qu'est-ce qu'un processus: Définitions

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Introduction à l informatique temps réel Pierre-Yves Duval (cppm)

Systèmes et exécutifs temps-réel

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

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

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

Synchro et Threads Java TM

Introduction : les processus. Introduction : les threads. Plan

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

IV- Comment fonctionne un ordinateur?

IFT Systèmes d exploitation - TP n 1-20%

Université de La Rochelle. Réseaux TD n 6

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Programmation système I Les entrées/sorties

Virtualisation logicielle De la machine réelle à la machine virtuelle abstraite

Introduction aux Systèmes et aux Réseaux, Master 2 CCI

LES FONCTIONS DE SURVEILLANCE DES FICHIERS

Métriques de performance pour les algorithmes et programmes parallèles

Introduction au temps réel

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

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

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Support de cours système d exploitation

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

Modélisation des interfaces matériel/logiciel

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Conventions d écriture et outils de mise au point

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

Tests de performance du matériel

Contrôleur de communications réseau. Guide de configuration rapide DN

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Cours Programmation Système

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

gestion des processus La gestion des processus

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

Concept de machine virtuelle

Machines Virtuelles. et bazard autour. Rémi Forax

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

LOG4430 : Architecture et conception avancée

Structure d un programme

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Applications Embarquées Critiques

Services Réseaux - Couche Application. TODARO Cédric

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Ordonnancement temps réel

Parallélisme et Répartition

Conception des systèmes répartis

Nicolas Hanteville. for(e=n;s<i;c++){attitude();} Sur environnement Microsoft Windows

Bases de programmation. Cours 5. Structurer les données

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Projet Active Object

Analyse de sécurité de logiciels système par typage statique

<Insert Picture Here> Solaris pour la base de donnés Oracle

Contributions à l expérimentation sur les systèmes distribués de grande taille

Messagerie asynchrone et Services Web

Ordonnancement temps réel

Systèmes d exploitation

WebSphere MQ & Haute Disponibilité

Système de Gestion de Fichiers

ENSP Strasbourg (Edition ) Les Systèmes Temps Réels - Ch. DOIGNON. Chapitre 3. Mise en œuvre : signaux, gestion du temps et multi-activités

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

Architecture distribuée

Les structures de données. Rajae El Ouazzani

La technologie Java Card TM

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

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

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

Transcription:

Exécutif temps réel Pierre-Yves Duval (cppm) Ecole d informatique temps réel - La Londes les Maures 7-11 Octobre 2002 Plan Exécutif Tâches Evénements et synchronisation Partage de ressources Communications entre taches Gestion de la mémoire Gestion du temps Interruptions Fichiers temps réel POSIX et le temps réel 1

Rôle d un exécutif Principal : - ordonnancer les exécutions des tâches mais aussi: - protéger l accès aux ressources partagées - recevoir et transmettre les signaux de synchronisations Composé d agences spécialisées dans un type de fonction - gestion des tâches - gestion des événements matériels et logiciels (de synchronisation) - gestion communications entre tâches - gestion du temps - gestion des ressources partagées - gestion de la mémoire - gestion des exceptions Structure d un exécutif Tâches applicatives activation Appels de service horloge lanceur ordonnanceur communication agence événements agence tâches agence Exécutif temps agence ressources agence interruptions Monde matériel 2

Exécutif ou noyau temps réel C est d abord un système d exploitation. La principale différence entre un OS généraliste et un OS temps réel est le comportement très déterministe. Ensuite on trouvera quelques différences dans l API (voir POSIX à la fin): -politique d ordonnancement plus élaborée -gestion plus précise de plus de réveils (timers) à la résolution plus fine -plus d ouverture sur le hardware sous-jacent en particulier les connexions aux IT matérielles -plus de modularité dans la construction du noyau Tâche Agent actif d une application avec 4 attributs: -contexte d exécution registres du processeur, pile exécution, ressources détenues - priorité -état d exécution -état de protection (préemptible ou pas) 3

Tâche Dans les OS d aujourd hui les tâches sont implantées comme des fils d exécution (thread). L ordonnanceur de l OS gère les threads/tâches. La notion de processus définie un espace d adressage protégé dans lequel s exécute au moins une tâche (le main thread) qui est activé quand le processus est lancé. Le processus se termine quand la dernière tâche qu il contient se termine. Dans certains OS simples il n y a pas d espace mémoire protégé, il y a identité entre les termes: processus = thread = tâche Etats d exécution SCEPTRE Supprimer Créer Inexistant Supprimer Hors Services Lancer Arrêter Arrêter Créer Actif Prêt Sélection En Cours Opération d attente Préemption Arrivée événement Supprimer Continuer En Attente 4

Synchronisation par événements synchrones Phases temporelles de l occurrence d un événement: apparition production prise en compte consommation Code d IT jusqu à l appel du service de signalisation Délai de réveil tâche destinataire Traitements avant effacement Les événements sont dits synchrones si l application consommatrice va les lire de façon explicite. Synchronisation par événements synchrones Types d événements: Fugace: Si aucune tâche est en attente à son occurrence il est perdu Mémorisé: L occurrence est mémorisée mais aucune autre ne sera prise en compte avant sa consommation A compte: Mémorisé avec incrémentation du compteur à chaque occurrence et décrémentation chaque consommation 5

Synchronisation par événements synchrones Services génériques événements Créer (événement) Supprimer(événement) Attendre_occurrence( événement ) Signaler_occurrence( événement ) IT Lire data Copie mémoire Signaler(evt) Créer (evt) Boucle Attendre(evt) Traiter data Fin boucle Synchronisation par événements synchrones: exemple /* variable condition POSIX utilisable avec rtlinux */ /*-----------------------------------------------------------*/ pthread_cond_t cond; void coureur(){ int ret; ret = pthread_cond_timedwait(&cond,, délai ); courrir(); void arbitre(){ int ret; decompte(); ret = pthread_cond_signal(&cond); main(){ int ret; ret = pthread_cond_init(&cond, NULL); ret = pthread_create(, coureur, ); ret = pthread_create(, arbitre, ); attente_fin(); 6

Signalisation asynchrone Une tâche est associée à un signal et elle sera automatiquement activée quand l événement associé au signal arrivera. La tâche est appelée pilote (handler) du signal. La tâche n a donc pas besoin de se mettre en attente du signal. Exemple: signaux UNIX (lent), attachement à une IT matérielle Services génériques signaux asynchrone: Créer( signal )/ Détruire( signal ) Connecter( pilote, signal ) Envoyer( signal ) Il peut exister des masques qui permettent d empêcher temporairement la réception de signaux (avec perte, mémorisation ou comptage) Signalisation asynchrone: exemple /* signal POSIX simple */ /*---------------------------*/ int stopbit; void signalled(){ stopbit = 1; main(){ stopbit = 0; signal( SIGINT, signalled); while(!stopbit) { faire un travail qui sera arrêté par CtrlC terminer_proprement(); 7

Partage de ressources Problème: - gérer un nombre limité de ressources ( de 1 à n ) entre plusieurs tâches - assurer la modification cohérente de données partagées Objet: Sémaphore binaire (mutex) un utilisateur à la fois Sémaphore à compte pour n utilisateurs maxi Autres possibilités déconseillées en temps réel: masquage des IT ou interdiction de préemption Partage de ressources Services génériques sémaphores: Créer(sem)/Détruire(sem) Prendre_ressource(sem) parfois appelée P() Libérer_ressource(sem) parfois appelée V() Créer(sem) Boucle Prendre(sem) Insérer(elem,liste) Libérer(sem) Fin boucle Détruire(sem) sem liste Boucle Prendre(sem) exploiter(liste) sortir(elem,liste) Libérer(sem) Fin boucle 8

Partage de ressources: exemple /* sémaphore à compte POSIX */ /*------------------------------------*/ sem_t sem; void consommateur(){ ret = sem_wait(&sem); manipuler_ressource(); sem_post(&sem); main(){ sem_init(&sem,, nombre_utilisateurs); for ( i=0; i<10; i++) { pthread_create(, consommateur, ); attente_fin(); sem_destroy(&sem); Communication entre tâches Boite aux lettres Service de base permettant les échanges asynchrones de données entre des tâches concurrentes et non synchronisées Services génériques (c est un buffer) Créer(boite)/Supprimer(boite) Déposer(mesg) Lire(mesg) Test(mesg) Exemple: FIFOs, tubes UNIX, queues de messages (POSIX ou system V) (étendues au réseau QNX), mailbox 9

Communication entre tâches Boite au lettres: Queue de message POSIX Tâche réceptrice dans processus 2 #define MQ "/monrep/mesgq" mqd_t qfd; struct mq_attr qattr; char message_lu[20]; /* nb max msg en queue */ qattr.mq_maxmsg = 32; /* taille maxi d un message */ qattr.mq_msgsize = 20; void recepteur(){ qfd = mq_open (MQ,, &qattr); mq_receive (qfd, message_lu, sizeof (message_lu), ); print(" %s ", message_lu); mq_close(mq); Tâche émettrice dans processus 1 #define MQ "/monrep/mesgq" mqd_t qfd; struct mq_attr qattr; /* nb max msg en queue */ qattr.mq_maxmsg = 32; /* taille maxi d un message */ qattr.mq_msgsize = 20; void émetteur(){ qfd = mq_open (MQ,, &qattr); mq_send (qfd, "tout va bien", ); mq_close(mq); mq_unlink(mq); Communication entre tâches Socket: programmation répartie Objet de communication applicatif (BSD UNIX) qui permet un échange point à point de type boite aux lettres entre deux tâches sur deux sites différents (sorte de queue de messages). Ces points sont reliés aux couches réseaux de l OS qui assurent le transfert (TCP ou UDP pour Internet). Intérêt: Base de la programmation distribuée - indépendante de l OS - utilisables en local avec des sockets du domaine UNIX. 10

Communication entre tâches Tableau noir Publication de données dans un espace accessible en lecture par tous les consommateurs. Exemples: mémoire partagée entre processus (shared memory), données globales entre thread d un même processus Services génériques: Créer/Détruire Afficher/Lire Communication entre tâches Rendez-vous Modèle de communication très synchrone ou producteur et consommateur doivent être présents lors de l échange de donnée. Exemple: support d exécution du langage ADA Services génériques: Appeler_entrée demande de rendez-vous Accepter_entrée déclaration de la capacité à recevoir des demandes de rendez-vous Terminer_entrée 11

Gestion de la mémoire Selon les possibilité du hardware sous jacent on peut avoir 3 type de gestion de la mémoire. -espace plat ou toute la mémoire est visible et accessible par n importe quelle tâche -séparation entre les espace système/noyaux et les tâches applicatives -mémoire virtuelle séparée et protégée associée à chaque processus L allocation de la mémoire peut être statique (à la création) ou dynamique (automatique) en fonction des besoins Gestion du temps La précision dépend du support matériel - horloge temps réel - réveils (timer) disponibles sur la carte. L horloge génère un signal périodique qui sert de pulsation à l activité de l exécutif et maintien la date de la machine Les tâches utilisatrices peuvent: -obtenir la date -se synchroniser sur une durée -se synchroniser sur une heure absolue -limiter un blocage sur un délai de garde (timeout) 12

Gestion du temps Services génériques: Initialiser_date Lire_date/Lire_heure Attendre_date(date) Signaler_a_date(date) Attendre_délai(delai) suspend la tâche jusqu à la date signaler un événement à une date suspendre la tâche pendant un délai Créer_réveil/Supprimer_réveil réveil=timer Arrêter_réveil Signaler_top_horloge permet d envoyer un signal périodique Certain OS offrent des possibilités pour une tâche de se déclarer comme périodique et de se faire activer avec une période donnée. Gestion des interruptions Prend en compte les sollicitations matérielles du monde extérieur. Une routine d interruption (ISR) doit être aussi courte que possible: - pendant son exécution la source d IT est masquée (mais imbrication d IT de niveaux de priorités différents possible) - ce n est pas un mode d exécution «normal» Le temps de latence d IT est le délai entre arrivée de l interruption et le début de l exécution du code applicatif associé c est une caractéristique importante qui différencie un system TR d un système généraliste. 13

Gestion des interruptions: exemple /* rtlinux capter le signal d horloge temps réel */ /*------------------------------------------------------*/ #define RTC_IRQ 8 void intr_handler(int sig){ faire_truc(); rtl_hard_enable_irq(rtc_irq); int init_module(void){ struct sigaction act; act.sa_handler = intr_handler; sigaction( RTC_IRQ, &act, NULL); programmer_horloge( fréquence ); rtl_hard_enable_irq(rtc_irq); return(0); Gestion des fichiers Certains services permettent d optimiser l accès aux fichiers - plus rapides - plus déterministes pour des applications temps réel. Ce sont: - fichiers projetés en mémoire (évitent les I/O pendant l usage) - les fichiers stream ou temps réel (permettent écrire de façon continues sur des pistes physiquement contiguës d un disque) - les écritures/lectures asynchrones 14

POSIX Depuis 1984 à l IEEE P1003.1 interface de programmation pour UNIX de base gestion des processus (fork, exec, kill ) fichiers et terminaux (open, fopen, fgetc, dup,fcntl,mkdir ) information runtime (getpid, cuerid, uname ) signaux de base (signal, raise, sigaction ) gestion mémoire (malloc, memcpy, free ) gestion du temps ( time, clock ) exécution (setjmp, longjmp ) communication (pipe, mkfifo (named pipes), setbuf stream, ) POSIX temps réel P1003.1b (ex POSIX.4) extensions temps réel ordonnancement sémaphores queues de messages signaux temps réel (nouveaux, queue, paramètres horloge haute résolution entrées sorties synchrones/asynchrones mémoire partagée P1003.1c (ex POSIX.4a) extensions multithreadées thread mutex variables conditions P1003.1d (ex POSIX.4b) gestion des IT 15

OS temps réel du marché Tornado,VxW orks Blue CatLinux and LynxO s QNX Neutrino Hard HatLinux Lineo,Em bedix Et beaucoup d autres dont certaines solutions pour compléter Windows NT ou Linux avec des fonctions «temps réel stricte». OS temps réel du marché 16