Génie logiciel et design de systèmes temps

Dimension: px
Commencer à balayer dès la page:

Download "Génie logiciel et design de systèmes temps"

Transcription

1 Génie logiciel et design de systèmes temps réel H. Mounier 0-0

2 MOTIVATIONS Utiliser des techniques modernes de conception de logiciel Ceci pour assurer la fiabilité Ces techniques doivent être adaptées au contexte temps réel H.M. Design de systèmes temps réel 1

3 PLAN DE L EXPOSÉ 1. Guides de design 2. Patrons de conception temps réel 3. Outils de synchonisation, du capteur à l actionneur H.M. Design de systèmes temps réel 2

4 Guides de design

5 GUIDES GÉNÉRAUX Faible couplage Un composant ne doit pas se reposer sur les détails internes d un autre. Forte cohésion Un composant doit avoir une définition et un comportement précis et étroit. H.M. Design de systèmes temps réel 3

6 ENCAPSULATION : PILE BASIQUE EN C Voici un exemple de pile avec comme structure de données interne un tableau #include <stdio.h> #include <stdlib.h> #define TAILLE 200 typedef struct pile { int elements[taille]; /* donnees, ici un tableau */ int *dessus; /* bas de la pile; ne varie pas */ int *dessous; /* haut de la pile; variable */ *pile; pile creer_pile(); void empiler(pile ma_pile, int i); int depiler(pile ma_pile); void detruire_pile(pile ma_pile); H.M. Design de systèmes temps réel 4

7 ENCAPSULATION : PILE BASIQUE EN C Création de pile pile creer_pile() { pile nouvelle_pile = (pile) NULL; nouvelle_pile = (pile)calloc(1, sizeof(struct pile)); if (nouvelle_pile == (pile)null) { fprintf(stderr, "Creation de pile impossible\n"); perror("message systeme : "); exit(1); /* bas de la pile */ nouvelle_pile->dessous = &(nouvelle_pile->elements)[0]; /* au debut la pile est vide */ nouvelle_pile->dessus = &(nouvelle_pile->elements)[0]; return(nouvelle_pile); /* creer_pile() */ H.M. Design de systèmes temps réel 5

8 ENCAPSULATION : PILE BASIQUE EN C Empiler une valeur void empiler(pile ma_pile, int i) { (ma_pile->dessus)++; if( ma_pile->dessus == ((ma_pile->dessous) + TAILLE) ) { printf("debordement de pile\n"); exit(1); *(ma_pile->dessus) = i; /* empiler() */ H.M. Design de systèmes temps réel 6

9 ENCAPSULATION : PILE BASIQUE EN C Dépiler une valeur int depiler(pile ma_pile) { if(ma_pile->dessus == ma_pile->dessous) { printf("assechement de pile\n"); exit(1); (ma_pile->dessus)--; return(*((ma_pile->dessus)+1)); /* depiler() */ H.M. Design de systèmes temps réel 7

10 ENCAPSULATION : PILE BASIQUE EN C Destruction d une pile void detruire_pile(pile ma_pile) { if (ma_pile == (pile)null) { fprintf(stderr, "Destruction de pile impossible\n"); return; free((void *)ma_pile); /* detruire_pile() */ H.M. Design de systèmes temps réel 8

11 ENCAPSULATION : PILE BASIQUE EN C Programme principal /** main() **/ void main(void) { int valeur_entree; pile une_pile; une_pile = creer_pile(); do { printf("\t\tentrez une valeur a empiler \n \ (-1 pour sortir, 0 pour depiler) : "); scanf("%d", &valeur_entree); if(valeur_entree!= 0) empiler(une_pile, valeur_entree); else printf("valeur du dessus de pile : %d\n", depiler(une_pile)); while(valeur_entree!= -1); detruire_pile(une_pile); /* main() */ H.M. Design de systèmes temps réel 9

12 ENCAPSULATION : DISSIMULATION D INFORMATIONS Entre cette partie de code : int pile i, elt_pile; ma_pile; ma_pile = creer_pile(); /* remplissage de la pile */ for(i = 0; i < 100; i++) elt_pile = depiler(ma_pile); où l on utilise depiler() et celle-ci int pile elt_pile; ma_pile; ma_pile = creer_pile(); /* remplissage de la pile */ elt_pile = (ma_pile->elements)[99]; la deuxième solution doit être rejetée. H.M. Design de systèmes temps réel 10

13 ENCAPSULATION : DISSIMULATION D INFORMATIONS Si l on change la structure de données utilisée pour une pile (par exemple une liste chaînée au lieu d un tableau), la dernière partie de code est désastreuse. L abstraction aide à la maintenabilité et à l intelligibilité en réduisant le nombre de détails à connatre à chaque niveau. La dissimulation d informations aide à la fiabilité (empcher toute opération non autorisée). H.M. Design de systèmes temps réel 11

14 GUIDES DÉTAILLÉS Pour le faible couplage Minimiser le couplage des méthodes (fonctions) : ne prendre comme entrées que les données nécessaires ; ne renvoyer que les données produites par la méthode Utiliser des hiérarchies appropriées ; par exemple découpage en échelles de temps. Réduit la complexité et accroît donc la fiabilité. Découpler l interface de l implantation (cf. l exemple de la pile) H.M. Design de systèmes temps réel 12

15 GUIDES DÉTAILLÉS Pour la forte cohésion Chaque composant (chaque méthode) doit avoir un but précis Éviter de passer des données de commande aux méthodes (données décidant comment effectuer les traitements) H.M. Design de systèmes temps réel 13

16 PATRONS DE CONCEPTION Un patron de conception est une solution éprouvée, constructive à un problème connu. L utilisation de patrons (comme briques de base) permet d accroître la fiabilité (las patrons étant des problèmes déja résolus) H.M. Design de systèmes temps réel 14

17 PATRONS DE CONCEPTION Exemples de patrons Médiateur, servant à connecter deux composant en introduisant un minimum de couplage. Moniteur, une seule méthode de cet objet peut s exécuter à la fois (accès concurrent). Producteur/consommateur, le producteur peut continuer à produire aussi indépendemment que possible du consommateur Machine à états finis H.M. Design de systèmes temps réel 15

18 Outils de synchonisation, du capteur à l actionneur

19 SYNCHRONISATION : MOTIVATION Exemple de mauvaises manières. Deux tâches : capteur qui acquiert des données capteur et loi de commande qui calcule une loi de commande extern int nbsensvals, // indice de lect-ecr ds tampon capteur nbactsvals, // indice de lect-ecr ds tampon actionneur sensorsampletime, // ~ "periode" carte capteur controllawsampletime; // ~ "periode" calcul loi de commande sensordatabuff[sens_buff_size]; // tampon de donnees capteur // methode associee a la thread "capteur" void gathermeasure() { float sensorvalue; // valeur de signal capteur while (1) { // Une valeur de capteur est lue sur la carte associee read(&sensorvalue); // Elle est ecrite dans un tampon capteur sensordatabuff[nbsensvals] = sensorvalue; // On dort un moment sleep(sensorsampletime); H.M. Design de systèmes temps réel 16

20 SYNCHRONISATION : MOTIVATION // methode associee a la thread "loi de commande" void SensorToActuator(float measure) { float sensorvalue, actuatorvalue; // Valeur d actionneur while(1) { // Lecture du tampon capteur sensorvalue = sensordatabuff[nbsensvals]; // Le prochain echantillon capteur peut etre ecrit if (nbsensvals > SENS_BUFF_SIZE) nbsensvals = 0; else nbsensvals++; // Synthese de la loi de commande actuatorvalue = controllawsynthesis(sensorvalue); // La valeur d actionneur est ecrite dans un tampon actionneur actuatordatabuff[nbactvals] = actuatorvalue; // On dort a nouveau sleep(controllawsampletime); Les variables globales accroissent le couplage H.M. Design de systèmes temps réel 17

21 SYNCHRONISATION : MOTIVATION L attente active ajustée au moyen de sleep(), très dépendante des fréquences d acquisition capteur et de calcul de loi de commande Le temps de calcul de la loi de commande est très variable (loi linéaire, non linéaire), donc controllawsampletime sera une valeur de pire cas, donc très sous-optimale L utilisation du même indice nbsensvals dans les deux fonctions peut induire divers problèmes Si controllawsampletime > sensorsampletime, la tâche capteur va écraser la même valeur ; Si controllawsampletime < sensorsampletime, la tâche loi de commande va lire des valeurs de capteur très anciennes. H.M. Design de systèmes temps réel 18

22 SYNCHRONISATION : MOTIVATION Une variable globale, semblerait rǵler les choses extern int nbsensvals, // indice de lect-ecr ds tampon capteur nbactsvals, // indice de lect-ecr ds tampon actionneur sensorsampletime, // ~ "periode" carte capteur controllawsampletime; // ~ "periode" calcul loi de commande littletime; // a small sleep time extern float sensordatabuff[sens_buff_size]; // tampon de donnees capteur extern int lock = 0; // verrou de lecture/ecriture void gathermeasure() { // methode associee a la thread "capteur" float sensorvalue; // Valeur capteur while (1) { // Une valeur de capteur est lue sur la carte associee read(&sensorvalue); if (lock == 0) { // Le verrou a-t-il ete acquis? lock = 1; // Acquerir le verrou sensordatabuff[nbsensvals] = sensorvalue; lock = 0; // Relacher le verrou sleep(sensorsampletime); // Dormir suffisamment longtemps else sleep(littletime); H.M. Design de systèmes temps réel 19

23 SYNCHRONISATION : MOTIVATION void SensorToActuator(float measure) { de commande" float sensorvalue, actuatorvalue; // associee a "loi // Valeur d actionneur while(1) { if (lock == 0) { lock = 1; // Acquerir le verrou sensorvalue = sensordatabuff[nbsensvals]; if (nbsensvals > SENS_BUFF_SIZE) { nbsensvals = 0; else { nbsensvals++; lock = 0; // Relacher le verrou sleep(controllawsampletime); // Dormir suffisamment longtemps else sleep(littletime); // Synthese de la loi de commande et ecriture dans un tampon actuatorvalue = controllawsynthesis(sensorvalue); actuatordatabuff[nbactvals] = actuatorvalue; H.M. Design de systèmes temps réel 20

24 SYNCHRONISATION : MOTIVATION Premier problème : Supposons une valeur déja lue par la tâche loi de commande, donc lock == 0. C est un peu plus tard au tour de capteur de s exécuter et elle est après le test. if (code == 0) lorsqu elle est interrompue par loi de commande Cette dernière tâche voit lock égal à 0 et va lire une valeur qui n a pas été écrite. H.M. Design de systèmes temps réel 21

25 SYNCHRONISATION : MOTIVATION Deuxième problème : Supposons que la tâche capteur soit de plus haute fréquence que la tâche loi de commande Lorsque la tâche capteur a fini de lire une valeur et de la stocker dans un tampon, elle dot dormir suffisamment longtemps ; sinon, elle pourrait reacquérir le verrou lock et lire une autre valeur capteur. Le problème vient du fait que l opération test de lock et mise à 1 de lock n est pas atomique (c.à.d. non interruptible) H.M. Design de systèmes temps réel 22

26 CONDITION DE COURSE ET SYNCHRONISATION Compétition de plusieurs tâches pour un nombre limité de ressources : condition de course Solution simpliste : Désactiver les interruptions Arrêter l ordonnanceur H.M. Design de systèmes temps réel 23

27 CONDITION DE COURSE ET SYNCHRONISATION Deux tâches utilisant un verrou de synchronisation doivent être d accord sur le verrou à utiliser pour protéger les données en accès mutuel retreindre au maximum les sections de code critiques (non interruptibles) Ce qui fait défaut ici est une opération atomique de type test and set (tester un mot et le mettre à 1 si ce n est déja fait). int test_and_set(int *lock) { int temp = *lock; *lock = 1; return temp; H.M. Design de systèmes temps réel 24

28 SÉMAPHORE Structure de base d un sémaphore struct semaphore { int count; // compte du semaphore queue Queue; // liste des taches bloquees par le semaphore Fonction d acquisition de verrou sem wait() sem_wait(semaphore S) { if (S.count > 0) S.count = S.count - 1; else block the task in S.Queue; Fonction d acquisition de verrou sem signal() sem_signal(semaphore S) { if (S.Q is non-empty) wakeup a task in S.Queue; else S.count = S.count + 1; H.M. Design de systèmes temps réel 25

29 SÉMAPHORE Une autre implantation utilise test and set(), ce qui rend les opérations sem wait() et sem signal() atomique boolean test_and_set(boolean lock) { boolean temp = lock; lock = 1; return temp; Deux fonctions entry() and exit() seront utilisées ; marquage d entrée et de sortie d une tâche dans une section critique // variables partagees par les N tachaes, numerotees 0, 1,..., N-1 boolean lock initially FALSE; boolean waiting[n-1] initially FALSE; // liste des taches en attente entry(int i) { boolean key = FALSE; waiting[i] = TRUE; while (waiting[i] && key) { key = test_and_set(lock); waiting[i] = FALSE; // i est l identificateur de la tache H.M. Design de systèmes temps réel 26

30 SÉMAPHORE exit(int i) { int p; p = (i+1) mod N; // recherche de la prochaine tache en attente while (p!= i && waiting[p] == FALSE) p = (p+1) mod N; if (p == i) lock = FALSE; // pas de tache en attente else waiting[p] = FALSE; // p est la prochaine tache en attente. La liberer H.M. Design de systèmes temps réel 27

31 SÉMAPHORE Ces fonctions permettent de résoudre un problème d exclusion mutuelle pour N tâches. Les fonctions sem wait() and sem signal() sont alors sem_wait(semaphore S) { S.entry(i); if (S.count == 0) { S.exit(i); waitin(i, S.Queue); else { S.count = S.count - 1; S.exit(i); // l identificateur de la tache est i waitin(int i, queue Q) { move task i to Q; schedule(); H.M. Design de systèmes temps réel 28

32 SÉMAPHORE sem_signal(semaphore S) { S.entry(i); if S.Queue not empty move task i to readyqueue; else S.count = S.count + 1; S.exit(i); Ici readyqueue est la queue des tâches prètes à être exécutées. H.M. Design de systèmes temps réel 29

33 MUTEX Un verrou d exculion mutuelle, ou verrou mutex est un mécanisme de synchronisation partageant certaines des caractéristiques d un sémaphore binaire. Comme pour un sémaphore, il y a des opérations de verrouillage et de déverrouillage, avec blocage sur le verrou déja acquis Contrairement à un sémaphore, un mutex doit être relâché par la tâche qui l a acquise ; il y a une forme de possession du mutex. Deux appels y sont associés : L acquisition du verrou par mutex lock() et La libération du verrou par mutex unlock() H.M. Design de systèmes temps réel 30

34 VARIABLES DE CONDITION Les variables de condition permettent à une tâche de dormir au sein d une section critique, jusqu à ce qu une expression booléenne définie par le programmeur soit satisfaite. Ce sont des formes d événements associés à un mutex. On utlise la combinaison Un verrou mutex Une expression booléenne Un événement, que d autres tâches peuvent générer pour réveiller la tâche bloquée par la variable de condition Deux appels sont associés à une variable de condition : cond wait() et cond broadcast() H.M. Design de systèmes temps réel 31

35 VARIABLES DE CONDITION L appel cond wait() apparaît dans une section critique, entre mutex lock() et mutex unlock() L appel cond wait() bloque atomiquement la tâche et relâche le verrou mutex. L appel cond broadcast() relâche le verrou mutex et réveille toutes les tâches bloquées par la variable de condition. H.M. Design de systèmes temps réel 32

36 Patrons de conception temps réel

37 MÉDIATEUR Un médiateur est un patron pour affaiblir le couplage entre composants. Le découplage intervient dans le nommage ; les composants n ont besoin de connaître que le médiateur la gestion des données ; on accède aux données uniquement via l interface du médiateur la synchronisation ; toute la synchronisation réside au sein du médiateur Un médiateur est une politique d utilisation du mécanisme offert par le patron moniteur. H.M. Design de systèmes temps réel 33

38 MONITEUR Un moniteur fournit des méthodes de synchronisation pour accéder aux données La synchronisation est effectuée grâce à un verrou de moniteur. Une seule méthode synchronisée d un moniteur peut s exécuter à la fois. Ces méthodes déterminent quand elles sont bloquées au moyen de conditions de moniteur. H.M. Design de systèmes temps réel 34

39 MÉTHODES D INTERFACE DU MONITEUR Méthodes d interface (vue externe du moniteur) : put() insère un message dans la file, get() enlève un message de la file empty() et full() testent si la file est vide ou pleine. put() (resp. get()) bloque si la file est pleine (resp. vide). class Message_Queue { public: enum { MAX_MESSAGES = /*... */; ; // The constructor defines the maximum number // of messages in the queue. This determines // when the queue is full. Message_Queue (size_t max_messages = MAX_MESSAGES); // = Message queue synchronized methods. // Put the <Message> at the tail of the queue. H.M. Design de systèmes temps réel 35

40 MÉTHODES D INTERFACE DU MONITEUR // If the queue is full, block until the queue // is not full. void put (const Message &msg); // Get the <Message> at the head of the queue. // If the queue is empty, block until the queue // is not empty. Message get (void); // True if the queue is full, else false. // Does not block. bool empty (void) const; ; // True if the queue is empty, else false. // Does not block. bool full (void) const; private: //... H.M. Design de systèmes temps réel 36

41 MÉTHODES D IMPLANTATION DU MONITEUR Méthodes d implantation, qui simplifient le codage des méthodes d interface Découplage synchronisation ordonnancement On utilise les conventions suivantes (idiome de sûreté des thread) : (i) Les méthodes d interface ne font qu acquérir ou relâcher les verrous du moniteur et attendre ou réveiller selon des conditions du moniteur. Elles passent ensuite le contrôle aux méthodes d implantation (ii) Les méthodes d implantation n effectuent aucun appel de synchronisation (ceci est délégué aux méthodes d interface). Ces méthodes ne sont pas bloquantes. H.M. Design de systèmes temps réel 37

42 MÉTHODES D IMPLANTATION DU MONITEUR Méthodes d implantation : put i() insère un message dans la file get i() enlève un message de la file empty i() et full i() testent si la file est vide ou pleine. Selon l idiome de sûreté des thread, put i() (resp. get i(), empty i(), full i()) est appelée per put() (resp. get(), empty(), full()). H.M. Design de systèmes temps réel 38

43 MÉTHODES D IMPLANTATION DU MONITEUR class Message_Queue { public: //... See above... private: // = Private helper methods (non-synchronized // and do not block). // Put the <Message> at the tail of the queue. void put_i (const Message &msg); // Get the <Message> at the head of the queue. Message get_i (void); // True if the queue is full, else false. // Assumes locks are held. bool empty_i (void) const; // True if the queue is empty, else false. // Assumes locks are held. bool full_i (void) const; //... H.M. Design de systèmes temps réel 39

44 ÉTAT INTERNE DU MONITEUR L état interne consiste en 3 groupes Les données représentant la file ; les données elle-même (par ex. un tampon circulaire), et des informations pour déterminer si la file est vide ou pleine (champs message count et max messages ). Les données associées au verrou du moniteur. monitor lock est une instance de Thread mutex défini ci-dessous. Les données associées à la condition du moniteur.les conditions not empty et not full sont utilisées pour bloquer le client si la file est vide ou pleine. Ce sont des instances de Thread Condition défini ci-dessous. H.M. Design de systèmes temps réel 40

45 ÉTAT INTERNE DU MONITEUR Les classes Thread mutex et Thread Condition sont des instances du patron de facade ( wrapper facade pattern ), c.à.d., ils représentent une interface orientée-object pour les fonctions écrites dans un langage qui ne l est pas (ici le langage C) et sous différents environnements (systèmes d exploitation). class Message_Queue { //... See above... private: // Internal Queue representation.... // Current number of <Message>s in the queue. size_t message_count_; // The maximum number <Message>s that can be // in a queue before its considered full. size_t max_messages_; // = Mechanisms required to implement the // monitor objects synchronization policies. H.M. Design de systèmes temps réel 41

46 ÉTAT INTERNE DU MONITEUR // Mutex that protect the queues internal state // from race conditions during concurrent access. mutable Thread_Mutex monitor_lock_; // Condition variable used to make synchronized // method threads wait until the queue is no // longer empty. Thread_Condition not_empty_; // Condition variable used to make synchronized // method threads wait until the queue is // no longer full. Thread_Condition not_full_; H.M. Design de systèmes temps réel 42

47 CLASSE Thread Mutex La classe Thread Mutex est utilisée pour le verrouillage interne du moniteur C est un exemple du patron de facade H.M. Design de systèmes temps réel 43

48 CLASSE Thread Mutex Voici une implantation sous Solaris: class Thread_Mutex { public: Thread_Mutex (void) { mutex_init (&mutex_, 0, 0); Thread_Mutex (void) { mutex_destroy (&mutex_); int acquire (void) { return mutex_lock (&mutex_); int release (void) { return mutex_unlock (&mutex_); private: // Solaris-specific Mutex mechanism. mutex_t mutex_; // = Disallow copying and assignment. Thread_Mutex (const Thread_Mutex &); void operator= (const Thread_Mutex &); ; H.M. Design de systèmes temps réel 44

49 CLASSE Thread Mutex Voici une implantation sous Windows NT : class Thread_Mutex { public: Thread_Mutex (void) { InitializeCriticalSection (&mutex_); Thread_Mutex (void) { DeleteCriticalSection (&mutex_); int acquire (void) { EnterCriticalSection (&mutex_); return 0; int release (void) { LeaveCriticalSection (&mutex_); return 0; private: // Win32-specific Mutex mechanism. CRITICAL_SECTION mutex_; // = Disallow copying and assignment. Thread_Mutex (const Thread_Mutex &); void operator= (const Thread_Mutex &); ; H.M. Design de systèmes temps réel 45

50 CLASSE Thread Mutex Les méthodes ne font qu appeler les fonctions correspondantes du système (d où le nom de patron de facade) H.M. Design de systèmes temps réel 46

51 CLASSE Thread Condition Lorsque la file est pleine put() doit être bloquante, et lorsqu elle st vide, get() doit être bloquante. Ceci est obtenu en utilisant l implantation de facade Thread Condition class Thread_Condition { public: // Initialize the condition variable and // associate it with the <mutex_>. Thread_Condition (const Thread_Mutex &m) // Implicitly destroy the condition variable. Thread_Condition (void); // Wait for the <Thread_Condition> to be, // notified or until <timeout> has elapsed. // If <timeout> == 0 wait indefinitely. int wait (Time_Value *timeout = 0) const; // Notify one thread waiting on the // <Thread_Condition>. int notify (void) const; H.M. Design de systèmes temps réel 47

52 CLASSE Thread Condition // Notify *all* threads waiting on // the <Thread_Condition>. int notify_all (void) const; private: #if defined (_POSIX_PTHREAD_SEMANTICS) pthread_cond_t cond_; #else // Condition variable emulations. #endif /* _POSIX_PTHREAD_SEMANTICS */ ; // Reference to mutex lock. const Thread_Mutex &mutex_; H.M. Design de systèmes temps réel 48

53 TEST DE LA FILE : INTERFACE Voici le code des méthodes d interface empty() et full() bool Message_Queue::empty(void) const { Thread_Mutex_Guard guard(monitor_lock_); return empty_i(); bool Message_Queue::full(void) const { Thread_Mutex_Guard guard(monitor_lock_); return full_i(); Ces méthodes utilisent l idiome de verrou avec portée ( scoped locking idiom ) Le verrou est automatiquement acquis lorsque l on entre en portée (au travers d un constructeur) et est automatiquement relâché lorsque l on est hors de portée (au travers du destructeur correspondant). H.M. Design de systèmes temps réel 49

54 TEST DE LA FILE : INTERFACE class Thread_Mutex_Guard { public: // Store a pointer to the lock and acquire the lock. Thread_Mutex_Guard (Thread_Mutex &lock) : lock_ (lock) { result_ = lock_.acquire (); // Release the lock when the guard goes // out of scope. Thread_Mutex_Guard (void) { // Only release the lock if it was acquired. if (result_!= -1) lock_.release (); private: // Reference to the lock were managing. Thread_Mutex &lock_; // Records if the lock was acquired successfully. int result_; ; H.M. Design de systèmes temps réel 50

55 TEST DE LA FILE : IMPLANTATION Voici le code pour les méthodes d implantation empty i() et full i() implementation methods: bool Message_Queue::empty_i(void) const { return message_count_ <= 0; bool Message_Queue::full_i(void) const { return message_count_ > max_messages_; Ces méthodes supposent que le verrou monitor lock a été acquis. Elles ne font que des tests. H.M. Design de systèmes temps réel 51

56 TEST DE LA FILE : IMPLANTATION void Message_Queue::put (const Message &msg) { // Use the Scoped Locking idiom to // acquire/release the <monitor_lock_> upon // entry/exit to the synchronized method. Thread_Mutex_Guard guard (monitor_lock_); // Wait while the queue is full. while (full_i ()) { // Release <monitor_lock_> and suspend our // thread waiting for space to become available // in the queue. The <monitor_lock_> is // reacquired automatically when <wait> returns. not_full_.wait (); // Enqueue the <Message> at the tail of // the queue and update <message_count_>. put_i (msg); // Notify any thread waiting in <get> that // the queue has at least one <Message>. not_empty_.notify (); // Destructor of <guard> releases <monitor_lock_>. H.M. Design de systèmes temps réel 52

57 TEST DE LA FILE : IMPLANTATION Le client appelant put() est bloqué jusqu à ce que la file ne soit plus pleine (il est bloqé à not full.wait()). Puis, il transmet à put i() le message qui doit être inséré dans la file. La méthode put i() n a pas besoin d être synchronisée, puisqu elle n est appelée que lorsque le verrou est acquis. Elle n a pas besoin de vérifier non plus si la file est pleine, puisqu elle n est appelée que lorsque full i() renvoie false. De manière similaire à ce qui précède, get() effectue les operations duales H.M. Design de systèmes temps réel 53

58 TEST DE LA FILE : IMPLANTATION Message Message_Queue::get (void) { // Use the Scoped Locking idiom to acquire/release the // <monitor_lock_> upon entry/exit to the synchronized method. Thread_Mutex_Guard guard (monitor_lock_); // Wait while the queue is empty. while (empty_i ()) { // Release <monitor_lock_> and wait for a new <Message> // to be placed in the queue. The <monitor_lock_> is reacquired // automatically when <wait> returns. not_empty_.wait (); // Dequeue the first <Message> in the queue // and update the <message_count_>. Message m = get_i (); // Notify any thread waiting in <put> that the // queue has room for at least one <Message>. not_full_.notify (); return m; // Destructor of <guard> releases <monitor_lock_>. H.M. Design de systèmes temps réel 54

59 IMPLANTATION COMPLÈTE L implantation complète est la suivante, sans les commentaires class Message_Queue { public: enum { MAX_MESSAGES = /*... */; ; Message_Queue (size_t max_messages = MAX_MESSAGES); void put (const Message &msg); Message get (void); bool empty (void) const; bool full (void) const; private: private: void put_i (const Message &msg); Message get_i (void); bool empty_i (void) const; bool full_i (void) const; size_t message_count_; size_t max_messages_; mutable Thread_Mutex monitor_lock_; Thread_Condition not_empty_; Thread_Condition not_full_; H.M. Design de systèmes temps réel 55

60 IMPLANTATION COMPLÈTE class Thread_Condition { public: Thread_Condition (const Thread_Mutex &m) Thread_Condition (void); int wait (Time_Value *timeout = 0) const; int notify (void) const; int notify_all (void) const; private: pthread_cond_t cond_; const Thread_Mutex &mutex_; ; H.M. Design de systèmes temps réel 56

61 IMPLANTATION COMPLÈTE bool Message_Queue::empty(void) const { Thread_Mutex_Guard guard(monitor_lock_); return empty_i(); bool Message_Queue::full(void) const { Thread_Mutex_Guard guard(monitor_lock_); return full_i(); H.M. Design de systèmes temps réel 57

62 IMPLANTATION COMPLÈTE bool Message_Queue::empty_i(void) const { return message_count_ <= 0; bool Message_Queue::full_i(void) const { return message_count_ > max_messages_; H.M. Design de systèmes temps réel 58

63 IMPLANTATION COMPLÈTE void Message_Queue::put (const Message &msg) { Thread_Mutex_Guard guard (monitor_lock_); while (full_i ()) { not_full_.wait (); put_i (new_item); not_empty_.notify (); Message Message_Queue::get (void) { Thread_Mutex_Guard guard (monitor_lock_); while (empty_i ()) { not_empty_.wait (); Message m = get_i (); not_full_.notify (); return m; H.M. Design de systèmes temps réel 59

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr 4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr Le problème Insuffisance des solutions de base (verrous) Les solutions de plus haut niveau Les Sémaphores Les Moniteurs

Plus en détail

Introduction à la programmation concurrente

Introduction à la programmation concurrente Introduction à la programmation concurrente Moniteurs Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud This work is licensed under

Plus en détail

4. Outils pour la synchronisation F. Boyer, Laboratoire Sardes Fabienne.Boyer@imag.fr

4. Outils pour la synchronisation F. Boyer, Laboratoire Sardes Fabienne.Boyer@imag.fr 4. Outils pour la synchronisation F. Boyer, Laboratoire Sardes Fabienne.Boyer@imag.fr Le problème Insuffisance des solutions de base (verrous) Les solutions de plus haut niveau Les Sémaphores Les Moniteurs

Plus en détail

LOG4430 : Architecture et conception avancée

LOG4430 : Architecture et conception avancée LOG4430 : Architecture et conception avancée Abdou Maiga Patrons pour la conception d applications distribuées Département de génie informatique et de génie logiciel École Polytechnique de Montréal Guéhéneuc,

Plus en détail

Problèmes liés à la concurrence

Problèmes liés à la concurrence ENS Cachan Problématique Difficile de gérer la concurrence : Pas toujours facile d avoir des fonctions réentrantes. Risque de race condition : ex : x :=x+1 x :=x+1 On voudrait des blocs d instructions

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

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

On appelle variable condition une var qui peut être testée et Un concept plus général: g Variables condition On appelle variable condition une var qui peut être testée et endort le thread qui la teste si la condition est fausse le réveille quand la condition devient

Plus en détail

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

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java Info0604 Programmation multi-threadée Cours 5 Programmation multi-threadée en Java Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 18 février 2015 Plan

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

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

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation Cycle Ingénierie 2e année SIGL Dernière mise à jour : 19/10/2006 Christophe Porteneuve Threads Principes Cycle de vie Création java.lang.thread

Plus en détail

Threads. Threads. USTL http://www.lifl.fr/ routier 1

Threads. Threads. USTL http://www.lifl.fr/ routier 1 Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un

Plus en détail

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

Cours 2: Exclusion Mutuelle entre processus (lourds, ou légers -- threads) Cours 2: Exclusion Mutuelle entre processus (lourds, ou légers -- threads) Concurrence entre processus & Problème d Exclusion Mutuelle 1. Introduction 2. Solutions avec attente active, dites Sans Arbitrage

Plus en détail

Introduction : les processus. Introduction : les threads. Plan

Introduction : les processus. Introduction : les threads. Plan IN328 Programmation distribuée avec Java et J2EE 2 - Threads en Java Introduction : les processus Un processus est un ensemble d instructions à exécuter, un espace mémoire réservé et éventuellement d autres

Plus en détail

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

Exercices INF5171 : série #3 (Automne 2012) Exercices INF5171 : série #3 (Automne 2012) 1. Un moniteur pour gérer des ressources Le moniteur MPD 1 présente une première version d'un moniteur, exprimé en pseudo-mpd, pour gérer des ressources le nombre

Plus en détail

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

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

Plus en détail

Synchro et Threads Java TM

Synchro et Threads Java TM Synchro et Threads Java TM NICOD JEAN-MARC Master 2 Informatique Université de Franche-Comté UFR des Sciences et Techniques septembre 2008 NICOD JEAN-MARC Synchro et Threads avec Java TM 1 / 32 Sommaire

Plus en détail

Les processus légers : threads. Système L3, 2014-2015 1/31

Les processus légers : threads. Système L3, 2014-2015 1/31 Les processus légers : threads Système L3, 2014-2015 1/31 Les threads Les threads sont des processus légers exécutés à l intérieur d un processus L exécution des threads est concurrente Il existe toujours

Plus en détail

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00 Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00 HFFv2 1. OBJET L accroissement de la taille de code sur la version 2.0.00 a nécessité une évolution du mapping de la flash. La conséquence de ce

Plus en détail

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

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN

Plus en détail

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

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran)  Processus = suite d'actions = suite d'états obtenus = trace Processus 1) Contexte 2) Modèles de Notion de Points de vue Modèle fourni par le SX Opérations sur les 3) Gestion des Représentation des Opérations 4) Ordonnancement des Niveaux d ordonnancement Ordonnancement

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

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

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition Surveillance de Scripts LUA et de réception d EVENT avec LoriotPro Extended & Broadcast Edition L objectif de ce document est de présenter une solution de surveillance de processus LUA au sein de la solution

Plus en détail

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

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

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

Exécutif temps réel Pierre-Yves Duval (cppm) 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

Plus en détail

Systèmes d exploitation Gestion de processus

Systèmes d exploitation Gestion de processus Systèmes d exploitation Gestion de processus SITE : http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation - Mírian Halfeld-Ferrari p. 1/5 Les processus, à quoi ça sert? À faire plusieurs

Plus en détail

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

Notion de thread (1/2)

Notion de thread (1/2) Notion de thread (1/2) La machine virtuelle java (JVM) permet d'exécuter plusieurs traitements en parallèle (en pratique, ils s'exécutent par tranche et en alternance sur le processeur). Ces traitements

Plus en détail

Once the installation is complete, you can delete the temporary Zip files..

Once the installation is complete, you can delete the temporary Zip files.. Sommaire Installation... 2 After the download... 2 From a CD... 2 Access codes... 2 DirectX Compatibility... 2 Using the program... 2 Structure... 4 Lier une structure à une autre... 4 Personnaliser une

Plus en détail

Application Form/ Formulaire de demande

Application Form/ Formulaire de demande Application Form/ Formulaire de demande Ecosystem Approaches to Health: Summer Workshop and Field school Approches écosystémiques de la santé: Atelier intensif et stage d été Please submit your application

Plus en détail

RULE 5 - SERVICE OF DOCUMENTS RÈGLE 5 SIGNIFICATION DE DOCUMENTS. Rule 5 / Règle 5

RULE 5 - SERVICE OF DOCUMENTS RÈGLE 5 SIGNIFICATION DE DOCUMENTS. Rule 5 / Règle 5 RULE 5 - SERVICE OF DOCUMENTS General Rules for Manner of Service Notices of Application and Other Documents 5.01 (1) A notice of application or other document may be served personally, or by an alternative

Plus en détail

Temps Réel. Jérôme Pouiller <j.pouiller@sysmic.org> Septembre 2011

Temps Réel. Jérôme Pouiller <j.pouiller@sysmic.org> Septembre 2011 Temps Réel Jérôme Pouiller Septembre 2011 Ordonnancement avec contraintes de précédance Problèmatique des accès concurents Problème liés aux partage de ressources Solutions utres

Plus en détail

Instructions Mozilla Thunderbird Page 1

Instructions Mozilla Thunderbird Page 1 Instructions Mozilla Thunderbird Page 1 Instructions Mozilla Thunderbird Ce manuel est écrit pour les utilisateurs qui font déjà configurer un compte de courrier électronique dans Mozilla Thunderbird et

Plus en détail

TD2 Programmation concurrentielle

TD2 Programmation concurrentielle TD2 Programmation concurrentielle Développement Logiciel (L2-S4) Lundi 10 février 2014 Exercice 1 (Au bar...) Trois clients se trouvent au bar. Il est tard, ils sont fatigués, et ils s endorment sur le

Plus en détail

Archived Content. Contenu archivé

Archived Content. Contenu archivé ARCHIVED - Archiving Content ARCHIVÉE - Contenu archivé Archived Content Contenu archivé Information identified as archived is provided for reference, research or recordkeeping purposes. It is not subject

Plus en détail

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14 Document FAQ Supervision et infrastructure - Accès aux EXP Page: 1 / 9 Table des matières Introduction... 3 Démarrage de la console JMX...4 I.Généralités... 4 II.WebLogic... 5 III.WebSphere... 6 IV.JBoss...

Plus en détail

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

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

INTRODUCTION À LA PROGRAMMATION CONCURRENTE INTRODUCTION À LA PROGRAMMATION CONCURRENTE POLYCOPIÉ DU COURS PCO1 Prof. Claude Evéquoz Prof. Yann Thoma HEIG-VD 2009 Table des matières Table des matières 2 1 Introduction à la programmation concurrente

Plus en détail

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

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

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013 Rendu Temps Réel - OpenGL 4 et compute shaders December 18, 2013 résumé des épisodes précédents... création des objets opengl, organisation des données, configuration du pipeline, draw,... opengl 4.3 :

Plus en détail

POLICY: FREE MILK PROGRAM CODE: CS-4

POLICY: FREE MILK PROGRAM CODE: CS-4 POLICY: FREE MILK PROGRAM CODE: CS-4 Origin: Authority: Reference(s): Community Services Department Cafeteria Services and Nutrition Education Division Resolution #86-02-26-15B.1 POLICY STATEMENT All elementary

Plus en détail

Noyau de concurrence par moniteur pour Java ou C# pour une autre sémantique plus fiable et plus performante

Noyau de concurrence par moniteur pour Java ou C# pour une autre sémantique plus fiable et plus performante Noyau de concurrence par moniteur pour Java ou C# pour une autre sémantique plus fiable et plus performante Claude Kaiser, Jean-François Pradat-Peyre CEDRIC - CNAM Paris 292, rue St Martin, 75003 Paris

Plus en détail

Exercices sur SQL server 2000

Exercices sur SQL server 2000 Exercices sur SQL server 2000 La diagramme de classe : Exercices sur SQL server 2000 Le modèle relationnel correspondant : 1 Créer les tables Clic-droit on Tables et choisir «New Table» Créer la table

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

APPENDIX 2. Provisions to be included in the contract between the Provider and the. Holder

APPENDIX 2. Provisions to be included in the contract between the Provider and the. Holder Page 1 APPENDIX 2 Provisions to be included in the contract between the Provider and the Obligations and rights of the Applicant / Holder Holder 1. The Applicant or Licensee acknowledges that it has read

Plus en détail

Contents Windows 8.1... 2

Contents Windows 8.1... 2 Workaround: Installation of IRIS Devices on Windows 8 Contents Windows 8.1... 2 English Français Windows 8... 13 English Français Windows 8.1 1. English Before installing an I.R.I.S. Device, we need to

Plus en détail

Introduction aux systèmes temps réel. Iulian Ober IRIT ober@iut-blagnac.fr

Introduction aux systèmes temps réel. Iulian Ober IRIT ober@iut-blagnac.fr Introduction aux systèmes temps réel Iulian Ober IRIT ober@iut-blagnac.fr Sommaire Généralités Caractéristiques récurrentes des STR Types de problèmes soulevées Programmation des STR Prog. concurrente

Plus en détail

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

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

that the child(ren) was/were in need of protection under Part III of the Child and Family Services Act, and the court made an order on

that the child(ren) was/were in need of protection under Part III of the Child and Family Services Act, and the court made an order on ONTARIO Court File Number at (Name of court) Court office address Applicant(s) (In most cases, the applicant will be a children s aid society.) Full legal name & address for service street & number, municipality,

Plus en détail

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

TD2/TME2 : Ordonnanceur et Threads (POSIX et fair) UE PC2R page 1/8 TD2/TME2 : Ordonnanceur et Threads (POSIX et fair) Exercice 1 (Modélisation) Chemin de Fer Cet exercice est dédié à l étude d un problème de circulation de trains : Voie! out1 in1 Voie!

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

Introduction aux Systèmes et aux Réseaux

Introduction aux Systèmes et aux Réseaux Introduction aux Systèmes et aux Réseaux Cours 5 Processus D après un cours de Julien Forget (univ Lille1) Laure Gonnord http://laure.gonnord.org/pro/teaching/ Laure.Gonnord@univ-lyon1.fr Master CCI -

Plus en détail

Frequently Asked Questions

Frequently Asked Questions GS1 Canada-1WorldSync Partnership Frequently Asked Questions 1. What is the nature of the GS1 Canada-1WorldSync partnership? GS1 Canada has entered into a partnership agreement with 1WorldSync for the

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

TABLE DES MATIERES A OBJET PROCEDURE DE CONNEXION

TABLE DES MATIERES A OBJET PROCEDURE DE CONNEXION 1 12 rue Denis Papin 37300 JOUE LES TOURS Tel: 02.47.68.34.00 Fax: 02.47.68.35.48 www.herve consultants.net contacts@herve consultants.net TABLE DES MATIERES A Objet...1 B Les équipements et pré-requis...2

Plus en détail

Une introduction à la technologie EJB (2/3)

Une introduction à la technologie EJB (2/3) Une introduction à la technologie EJB (2/3) 1 Les singletons des EJB 3.1 1.1 Synchronisation gérée manuellement Depuis la version 3.1, des EJB Statless à instance unique sont maintenant disponibles : ce

Plus en détail

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

IFT2245 - Systèmes d exploitation - TP n 1-20% IFT2245 - Systèmes d exploitation - TP n 1-20% DIRO - Université de Montréal Nicolas Rous et Dorian Gomez Disponible : 14/02/2013 - Remise : 28/03/2013 au début de la démo LISEZ TOUT LE DOCUMENT AVANT

Plus en détail

APPENDIX 6 BONUS RING FORMAT

APPENDIX 6 BONUS RING FORMAT #4 EN FRANÇAIS CI-DESSOUS Preamble and Justification This motion is being presented to the membership as an alternative format for clubs to use to encourage increased entries, both in areas where the exhibitor

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

MELTING POTES, LA SECTION INTERNATIONALE DU BELLASSO (Association étudiante de lʼensaparis-belleville) PRESENTE :

MELTING POTES, LA SECTION INTERNATIONALE DU BELLASSO (Association étudiante de lʼensaparis-belleville) PRESENTE : MELTING POTES, LA SECTION INTERNATIONALE DU BELLASSO (Association étudiante de lʼensaparis-belleville) PRESENTE : Housing system est un service gratuit, qui vous propose de vous mettre en relation avec

Plus en détail

Temps Réel. Jérôme Pouiller <j.pouiller@sysmic.org> Septembre 2011

Temps Réel. Jérôme Pouiller <j.pouiller@sysmic.org> Septembre 2011 Temps Réel Jérôme Pouiller Septembre 2011 Sommaire Problèmatique Le monotâche Le multitâches L ordonnanement Le partage de ressources Problèmatiques des OS temps réels J. Pouiller

Plus en détail

DOCUMENTATION - FRANCAIS... 2

DOCUMENTATION - FRANCAIS... 2 DOCUMENTATION MODULE CATEGORIESTOPMENU MODULE CREE PAR PRESTACREA INDEX : DOCUMENTATION - FRANCAIS... 2 INSTALLATION... 2 CONFIGURATION... 2 LICENCE ET COPYRIGHT... 3 SUPPORT TECHNIQUE ET MISES A JOUR...

Plus en détail

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

ARCHOS Activity Tracker

ARCHOS Activity Tracker ARCHOS Activity Tracker «Archos Connected Self» Application Connecté pour votre confort L'ARCHOS Activity Tracker synchronise automatiquement votre activité quotidienne à votre smartphone ou votre tablette

Plus en détail

Projet gestion d'objets dupliqués

Projet gestion d'objets dupliqués Projet gestion d'objets dupliqués Daniel Hagimont Daniel.Hagimont@enseeiht.fr 1 Projet Service de gestion d'objets dupliqués Mise en cohérence lors de la prise d'un verrou sur un objet Pas de verrous imbriqués

Plus en détail

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

1 Mesure de la performance d un système temps réel : la gigue TP TR ENSPS et MSTER 1 Travaux Pratiques Systèmes temps réel et embarqués ENSPS ISV et Master TP1 - Ordonnancement et communication inter-processus (IPC) Environnement de travail Un ordinateur dual-core

Plus en détail

GAME CONTENTS CONTENU DU JEU OBJECT OF THE GAME BUT DU JEU

GAME CONTENTS CONTENU DU JEU OBJECT OF THE GAME BUT DU JEU GAME CONTENTS 3 wooden animals: an elephant, a Polar bear and an African lion 1 Playing Board with two tree stumps, one red and one blue 1 Command Board double sided for two game levels (Green for normal

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

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

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales

Plus en détail

DOCUMENTATION - FRANCAIS... 2

DOCUMENTATION - FRANCAIS... 2 DOCUMENTATION MODULE SHOPDECORATION MODULE PRESTASHOP CREE PAR PRESTACREA INDEX : DOCUMENTATION - FRANCAIS... 2 INSTALLATION... 2 Installation automatique... 2 Installation manuelle... 2 Résolution des

Plus en détail

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

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

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi 802.11 module François SCHNEIDER Lycée Victor-Hugo BESANÇON. STS SE FreeRTOS Programmation réseau WIFI Programmation réseau Socket Tcp FlyPort smart Wi-Fi 802.11 module Prérequis : langage C, connaissance réseau : Ip,

Plus en détail

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)

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) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Le No.1 de l économie d énergie pour patinoires.

Le No.1 de l économie d énergie pour patinoires. Le No.1 de l économie d énergie pour patinoires. Partner of REALice system Economie d énergie et une meilleure qualité de glace La 2ème génération améliorée du système REALice bien connu, est livré en

Plus en détail

Objets et Programmation. origine des langages orientés-objet

Objets et Programmation. origine des langages orientés-objet Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève

Plus en détail

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Gestion des transactions et accès concurrents dans les bases de données relationnelles Gestion des transactions et accès concurrents dans les bases de données relationnelles Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Fev.

Plus en détail

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions 1/46 2/46 Pourquoi? Anne-Cécile Caron Master MAGE - SGBD 1er trimestre 2014-2015 Le concept de transaction va permettre de définir des processus garantissant que l état de la base est toujours cohérent

Plus en détail

France SMS+ MT Premium Description

France SMS+ MT Premium Description France SMS+ MT Premium Description Summary Subscription : kinematics Subscription via SMS (Kinematic + messages) Subscription via Wap (Kinematic + messages) Subscription via Mix SMS / WAP Subscription

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Compléter le formulaire «Demande de participation» et l envoyer aux bureaux de SGC* à l adresse suivante :

Compléter le formulaire «Demande de participation» et l envoyer aux bureaux de SGC* à l adresse suivante : FOIRE AUX QUESTIONS COMMENT ADHÉRER? Compléter le formulaire «Demande de participation» et l envoyer aux bureaux de SGC* à l adresse suivante : 275, boul des Braves Bureau 310 Terrebonne (Qc) J6W 3H6 La

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Programmation MacOSX / ios

Programmation MacOSX / ios Programmation MacOSX / ios Master Ingénierie Informatique 2011-2012 Jean-Baptiste.Yunès@liafa.jussieu.fr deux extensions objets de C : C++ (Stroustrup) Objective-C (Cox & Love) ajout de constructions à

Plus en détail

Projet Active Object

Projet Active Object Projet Active Object TAO Livrable de conception et validation Romain GAIDIER Enseignant : M. Noël PLOUZEAU, ISTIC / IRISA Pierre-François LEFRANC Master 2 Informatique parcours MIAGE Méthodes Informatiques

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

First Nations Assessment Inspection Regulations. Règlement sur l inspection aux fins d évaluation foncière des premières nations CONSOLIDATION

First Nations Assessment Inspection Regulations. Règlement sur l inspection aux fins d évaluation foncière des premières nations CONSOLIDATION CANADA CONSOLIDATION CODIFICATION First Nations Assessment Inspection Regulations Règlement sur l inspection aux fins d évaluation foncière des premières nations SOR/2007-242 DORS/2007-242 Current to September

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche 1 arbre des comparaisons 2 recherche dichotomique l'arbre est recalculé à chaque recherche 2 5 3 4 7 9 1 6 1 2 3 4 5 6 7 9 10 conserver la structure d'arbre au lieu de la reconstruire arbre binaire de

Plus en détail

Programmation avec des objets : Cours 7. Menu du jour

Programmation avec des objets : Cours 7. Menu du jour 1 Programmation avec des objets : Cours 7 Menu du jour 1. Retour sur la classe Liste 2. Précisions sur l interface 3. Difficultés dans le cas d erreurs 4. Soulever des exceptions 5. Utilisation des Listes

Plus en détail

Editing and managing Systems engineering processes at Snecma

Editing and managing Systems engineering processes at Snecma Editing and managing Systems engineering processes at Snecma Atego workshop 2014-04-03 Ce document et les informations qu il contient sont la propriété de Ils ne doivent pas être copiés ni communiqués

Plus en détail

4. Groupement d objets

4. Groupement d objets Conception objet en Java avec BlueJ une approche interactive 4. Groupement d objets Collections et itérateurs David J. Barnes, Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Principaux

Plus en détail

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite. Rational ClearCase or ClearCase MultiSite Version 7.0.1 Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite. Product Overview IBM Rational

Plus en détail

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

Analyse de sécurité de logiciels système par typage statique Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction

Plus en détail

Algorithmique, Structures de données et langage C

Algorithmique, Structures de données et langage C UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure

Plus en détail