Génie logiciel et design de systèmes temps
|
|
- Aubin Crépeau
- il y a 8 ans
- Total affichages :
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 Le problème Insuffisance des solutions de base (verrous) Les solutions de plus haut niveau Les Sémaphores Les Moniteurs
Plus en détailIntroduction à 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étail4. 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étailLOG4430 : 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étailProblè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étailUn 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étailOn 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étailInfo0604 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étailCours 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étailJ2SE 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étailThreads. 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étailCours 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étailIntroduction : 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étailExercices 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étailExclusion 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étailSynchro 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étailLes 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étailInstructions 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étailINTRODUCTION 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étailProcessus! 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étailLicence 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étail03/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étailSurveillance 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étailGé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étailINITIATION 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étailIntroduction à 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étailExé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étailSystè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étailPré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étailNotion 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étailOnce 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étailApplication 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étailRULE 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étailTemps 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étailInstructions 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étailTD2 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étailArchived 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étailSupervision 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étailBases 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étailINTRODUCTION À 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étail1. 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étailM2-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étailPOLICY: 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étailNoyau 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étailExercices 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étailCours 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étailAPPENDIX 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étailContents 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étailIntroduction 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étailTP 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étailProgrammer 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étailthat 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étailTD2/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étailINITIATION 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étailConventions 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étailIntroduction 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étailFrequently 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étailPremiers 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étailIN 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étailTABLE 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étailUne 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étailIFT2245 - 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étailAPPENDIX 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étailRecherche 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étailMELTING 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étailTemps 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étailDOCUMENTATION - 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étailLangage 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étailCours 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étailARCHOS 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étailProjet 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étail1 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étailGAME 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étailCette 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étailCentre 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étailBrefs 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étailDOCUMENTATION - 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étailProjet 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étailSTS 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étail1/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étailLe 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étailObjets 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étailGestion 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étailLes 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étailFrance 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étailLes 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étailComplé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étailas 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étailProgrammation 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étailProjet 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étailEPREUVE 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étailFirst 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étailArbres 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étailProgrammation 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étailEditing 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étail4. 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étailQuick 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étailAnalyse 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étailAlgorithmique, 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