Horloges et chronomètres

Documents pareils
Le traitement du temps

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

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

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

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

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

Introduction à la programmation concurrente

1. Base de données SQLite

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

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

Le langage C. Séance n 4

PROJET ALGORITHMIQUE ET PROGRAMMATION II

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Cours de S.E. les Signaux

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

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

sommaire Archives... Archiver votre messagerie... Les notes... Les règles de messagerie... Les calendriers partagés Les listes de diffusions...

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

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Arguments d un programme

Cours de Systèmes d Exploitation

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Programmation système en C/C++

Les processus 2/54. Qu est-ce qu un processus? 3(6)/54. Se souvenir 1(1)/54. Le système de fichiers (exemple du disque dur)

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

module Introduction aux réseaux DHCP et codage Polytech / 5

Performances et optimisations

Compression de Données - Algorithme de Huffman Document de Conception

La norme Midi et JavaSound

Introduction aux Systèmes et aux Réseaux

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Plateforme PAYZEN. Définition de Web-services

Conventions d écriture et outils de mise au point

Définition des Webservices Ordre de paiement par . Version 1.0

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

- affichage digital - aiguille

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

Stockage du fichier dans une table mysql:

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

TD 1 - Transmission en bande de passe

Importantes instructions de sécurité

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

Un ordonnanceur stupide

Les structures. Chapitre 3

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Initiation au HPC - Généralités

Baladeur Santé VITAL'ACT

Visual Taxe 4.1.0B04 minimum

TD2/TME2 : Ordonnanceur et Threads (POSIX et fair)

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Education Delivery Intelligent Tool

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

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

Cours Programmation Système

Programmation système

Projet de Veille Technologique

Architecture des ordinateurs

Comment configurer. le web.

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

L exclusion mutuelle distribuée

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Kit pédagogique RFID-EDUC

Le signal GPS. Les horloges atomiques à bord des satellites GPS produisent une fréquence fondamentale f o = Mhz

Exemple d application: l annuaire DNS Claude Chaudet

TP3 : Manipulation et implantation de systèmes de fichiers 1

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014

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

LOSLIER Mathieu. Filière Informatique et Réseau 1 ère année. TP DNS. Responsable : LOHIER Stephane. Chargé de TD : QUIDELLEUR Aurélie

Programmation impérative

Ordinateurs, Structure et Applications

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

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

Poker. A rendre pour le 25 avril

Introduction à la Programmation Parallèle: MPI

Configuration automatique

Synchro et Threads Java TM

Tp 1 correction. Structures de données (IF2)

CORRECTION TP Multimètres - Mesures de résistances - I. Mesure directe de résistors avec ohmmètre - comparaison de deux instruments de mesure

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

SUPPORT DE COURS / PHP PARTIE 3

Guide Rapide d'utilisation

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Problèmes liés à la concurrence

Connexion à distance. Pour configurer les automates Beckhoff via un PC de programmation VERSION : 1.0 / PH

V- Manipulations de nombres en binaire

Introduction au langage C

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

1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau

Représentation des Nombres

Informatique III: Programmation en C++

Chapitre 2. Les processus. 2.1 Introduction. 2.2 les différents états d un processus

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

SCHMITT Année 2012/2014 Cédric BTS SIO. TP Serveur Backup

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Transcription:

Gestion du temps

Horloges et chronomètres Exécution d une tâche à un moment donné horloge absolue (clock) ou à intervalles réguliers chronomètres (timers) à un coup à répétition UNIX (POSIX.1) fournit déjà plusieurs outils POSIX.4 rajoute de la précision et des fonctionnalités souvent associées à une horloge "temps réel", externe ou non F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 2

les horloges POSIX.1 time: #include <time.h> time_t time(time_t *what_time); retourne le nombre de secondes écoulées depuis le 1er janvier 1970 0h et le stocke dans what_time gettimeofday: struct timeval { time_t tv_sec; time_t tv_usec;} int gettimeofday(struct timeval *what_time); la résolution est de toutes façons limitée par l'horloge de la machine (~ 0,1s) codage sur 32 bits bug du 15 février 2038! F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 3

les timers POSIX.1 #include <sys/time.h> int setitimer(int id, const struct itimerval *new_value, struct itimerval *old_value); int getitimer(int id, struct itimerval *current_value), struct itimerval{struct timeval it_value, struct timeval it_interval;} id : ITIMER_REAL signal SIGALRM ITIMER_VIRTUAL signal SIGVTALRM ITIMER_PROF signal SIGPROF int alarm(const int i); envoie le signal SIGALRM au bout de i secondes int sleep(const int n); suspend le process pendant n secondes F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 4

les timers POSIX.1 problèmes de précision et de dérive : la précision ultime est ~ 1 µs ITIMER_VIRTUAL (utilisation de la CPU par le process) et ITIMER_PROF (utilisation de la CPU par le process et le système au nom du process) sont utilisés pour le profilage F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 5

la gestion du temps avec POSIX.4 horloges #include <time.h> int clock_settime(clockid_t id, const struct timespec *curr_time); int clock_gettime(clockid_t id, struct timespec *curr_time); int clock_getres(clockid_t id, struct timespec *resolution); int clock_nanosleep(const struct timespec *req, struct timespec *remaining); F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 6

la gestion du temps avec POSIX.4 timers #include <time.h> int timer_create(clockid_t id, const struct sigevent *signal_spec, timer_t *timer_id); int timer_settime(timer_t timer_id, int flags, const struct itimerspec *new_int, struct itimerspec *old_int); int timer_gettime(timer_t timer_id, struct itimerspec *curr_int); int timer_getoverrun(timer_t timer_id); int timer_delete(timer_t timer_id); int nanosleep(const struct timespec *req, struct timespec *remaining); F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 7

Les horloges POSIX.4 horloges fournies par Linux (>2.6.12) : CLOCK_REALTIME Une horloge système temps réel configurable. CLOCK_MONOTONIC Une horloge non configurable, toujours croissante qui mesure le temps depuis un instant non spécifié dans le passé et qui ne change pas après le démarrage du système. CLOCK_PROCESS_CPUTIME_ID Une horloge qui mesure le temps CPU (utilisateur et système) consommé par le processus appelant (et tous ses threads). CLOCK_THREAD_CPUTIME_ID Une horloge qui mesure le temps CPU (utilisateur et système) consommé par le thread appelant. seule CLOCK_REALTIME existe partout F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 8

les horloges POSIX.4 structure de stockage du temps struct timespec { time_t tv_sec; time_t tv_nsec; }; F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 9

les horloges POSIX.4 int clock_gettime (clockid_t clock_id, struct timespec *tp) lit la valeur courante de l horloge spécifiée int clock_settime (clockid_t clock_id, struct timespec *tp) règle l horloge valide uniquement pour CLOCK_REALTIME utilisé pour spécifier l heure à laquelle sera réveillé un thread bloqué sur un appel à clock_nanosleep avec une date absolue sur CLOCK_REALTIME int clock_getres (clockid_t clock_id, struct timespec *tp) lit la résolution de l horloge spécifiée F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 10

les horloges POSIX.4 int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp) suspend la tâche jusqu à la date spécifiée par rqtp ou jusqu à l arrivée d un signal géré par l application si TIMER_ABSTIME est spécifié dans flags, rqtp une date absolue, sinon rqtp est un intervalle si la tâche est réveillée par l arrivée d un signal et si TIMER_ABSTIME n est pas spécifié et si rmtp n est pas NULL, alors le temps restant jusqu au réveil «normal» est retourné dans rmtp F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 11

les horloges POSIX.4 int nanosleep(const struct timespec *rqtp, struct timespec *rmtp) identique à clock_nanosleep, mais uniquement pour des intervalles de temps F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 12

les timers POSIX.4 structure pour gérer les données relatives au timer struct itimerspec { struct timespec it_value; struct timespec it_interval; } it_value : date d expiration it_interval : valeur de rechargement, après expiration F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 13

les timers POSIX.4 int timer_create(clockid_t clock_id, const struct sigevent *evp, timer_t *timerid) crée un timer basé sur l horloge spécifiée evp décrit le mécanisme de notification à l expiration du timer l'identificateur du timer est retourné dans timerid F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 14

les timers POSIX.4 structure sigevent sigev_notify : SIGEV_NONE : pas de notification (on suit le timer avec timer_gettime) SIGEV_SIGNAL : un signal temps réel est envoyé au process SIGEV_THREAD_ID : le signal est envoyé à un thread SIGEV_THREAD : une fonction de notification est exécutée sigev_signo : numéro du signal envoyé sigev_value : valeur transportée union sigval sigev_value définie par : int sival_int ; void * sival_ptr; sigev_notify_function : nom de la fonction exécutée par le thread créé (SIGEV_THREAD) sigev_notify_attributes : attributs du thread créé (SIGEV_THREAD) sigev_notify_thread_id : TID du thread auquel est envoyé le signal (SIGEV_THREAD_ID) F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 15

les timers POSIX.4 int timer_delete(timer_t timerid) détruit le timer F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 16

les timers POSIX.4 int timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue) arme le timer si value.it_value est nul, le timer est arrêté, sinon il est démarré si value.it_interval est différent de 0, le timer est périodique si flags est égal à TIMER_ABSTIME, value.it_value est interprété comme une date absolue de l horloge spécifiée dans timer_create, sinon c est interprété comme un intervalle le thread appelant soit être un thread POSIX (créé par pthread_create) les valeurs courantes du timer sont stockées dans ovalue F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 17

les timers POSIX.4 int timer_gettime(timer_t timerid, struct itimerspec *value) stocke dans value la date d expiration et la valeur de rechargement du timer int timer_getoverrun(timer_t timerid) retourne le nombre de dépassements du timer depuis la dernière expiration du timer timerid nombre de fois où le timer a expiré alors qu il n y avait pas de tâche ayant mis en place une procédure de gestion du signal émis à l expiration F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 18

IPC F. Touchard Polytech Marseille INFO4 2016-17 Introduction aux systèmes Temps Réels Gestion du temps 19