Cours #7 Communication avec le matériel et traitement des interruptions

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

Download "Cours #7 Communication avec le matériel et traitement des interruptions"

Transcription

1 ELE-784 Ordinateurs et programmation système Cours #7 Communication avec le matériel et traitement des interruptions Bruno De Kelper Site internet : Cours # 7 ELE784 - Ordinateurs et programmation système 1 Plan d aujourd hui 1. (chap. 9) 1. Ports I/O et mémoire I/O 2. Utilisation des ports I/O 3. Utilisation de la mémoire I/O 2. (chap. 10) 1. Installation d une routine d interruption 1. Auto-détection du numéro d interruption (IRQ) 2. Mécanisme interne du traitement des interruptions 3. Activer / désactiver les interruptions 2. Implémentation d une routine d interruption 3. Moitié haute et moitié basse 1. Tasklet 2. Workqueues 4. Partage d interruption 5. I/O piloté par interruption Réf. : Linux Device Drivers, 3 ième éd., J. Corbet, A. Rubin, G. Kroah-Hartman, O Reilly Media, chap Cours # 7 ELE784 - Ordinateurs et programmation système 2 Cours # 7 ELE784 - Ordinateurs et programmation système 1

2 - Un pilote est une couche d abstraction entre le logiciel et le matériel qui permet au logiciel de "voir" le matériel au travers de certaines fonctionnalités. - En tant que tel, le pilote doit "parler" aux deux : logiciel et matériel. - Le pilote doit transmettre les requêtes du logiciel vers le matériel, au travers d une interface bien définie, et répondre aux événements provenant du matériel. - Les cours précédents ont essentiellement traités de l interface entre le pilote et le logiciel (application-usager) et il convient maintenant de traiter la communication avec le matériel Ports I/O et mémoire I/O - Tous les périphériques sont contrôlés au travers de leurs registres-internes qui sont "adressés" par le processeur selon l une de deux méthodes : Port I/O Mémoire I/O Lignes de contrôle I/O CPU Bus-Donnée Bus-Adresse Lignes de contrôle Mémoire Périphérique Mémoire CPU Bus-Donnée Bus-Adresse Lignes de contrôle Mémoire Périphérique Mémoire Cours # 7 ELE784 - Ordinateurs et programmation système Ports I/O et mémoire I/O - Dans le 1 er cas Port I/O, le processeur utilise des lignes et des instructions spéciales pour accéder aux registres des périphériques, tel que pour les processeurs de la famille x86. - Dans le 2 ième cas Mémoire I/O, les registres des périphériques sont cartographiés en mémoire et sont perçus par le processeur comme des cases de mémoire ordinaires. - La plupart des périphériques sont conçus pour l accès par Port I/O, même dans les systèmes basés sur un processeur utilisant la méthode Mémoire I/O. - Mais quelques périphériques utilisent l accès par Mémoire I/O, par exemple les périphériques PCI et les cartes graphiques, même dans des systèmes basés sur l approche Port I/O. - Du côté du processeur, celui-ci est conçu pour une approche ou pour l autre, peu importe le type de périphérique contenu dans le système. - Un processeur de type Port I/O accède alors à un périphérique en Mémoire I/O au travers d une circuiterie spéciale, et vice-versa. Cours # 7 ELE784 - Ordinateurs et programmation système 4 Cours # 7 ELE784 - Ordinateurs et programmation système 2

3 1.1 - Ports I/O et mémoire I/O - Malgré tout, l accès aux registres des périphériques doit être effectuée avec précaution. - En effet, contrairement aux accès à la mémoire, les accès aux registres occasionnent des effets secondaires puisqu ils dictent le comportement du matériel. - Ainsi, les optimisations effectuées par le compilateur ou le processeur luimême, tels que la mise en mémoire-cache et le réarrangement de la séquence d exécution des instructions, peuvent perturber grandement les accès aux registres des périphériques. Optimisation Mise en mémoire-cache Réarrangement des séquences d exécution Solution pour les accès aux registres Le matériel est configuré automatiquement ou par Linux pour éviter la mise en mémoire-cache lors des accès aux registres de périphériques. L utilisation de Barrières permet d assurer que l ordre d exécution est respecté. (voir cours #2, acétates 24-26) Cours # 7 ELE784 - Ordinateurs et programmation système Ports I/O et mémoire I/O Exemple : Utilisation d une Barrière pour l accès à un périphérique Configure le périphérique Barrière d écriture writel (dev->registers.addr, io_destination_address); writel (dev->registers.size, io_size); writel (dev->registers.operation, DEV_READ); wmb ( ); writel (dev->registers.control, DEV_GO); Démarre l exécution - Il est important de noter que l utilisation de Barrières dégrade la performance, puisqu elles empêchent certaines optimisations, et doivent être utilisées avec parcimonie. - Aussi, plusieurs "primitives" de synchronisation du Noyau, tels que les verrous tournants (spinlock) et les opérations atomiques, agissent comme des barrières. - Certains bus de périphériques ont aussi des problèmes de "cache" spécifiques qui doivent être pris en compte. Cours # 7 ELE784 - Ordinateurs et programmation système 6 Cours # 7 ELE784 - Ordinateurs et programmation système 3

4 1.2 - Utilisation des Ports I/O Allocation d un Port I/O : - Avant d utiliser un Port I/O, le pilote doit en demander l accès exclusif au Noyau à l aide de : Nombre de registres (inclus dans linux/ioport.h) Adresse du 1 er registre struct resource *request_region (unsigned long first, unsigned long n, Retour non-null si la const char *name); demande est acceptée Nom choisit pour l unité-matériel - Le pilote peut aussi vérifier la disponibilité du Port I/O avec : Code d erreur int check_region (unsigned long first, unsigned long n); Adresse du 1 er registre - Finalement, le Port I/O sera retourné au Noyau avec : Nombre de registres void release_region (unsigned long start, unsigned long n); Adresse du 1 er registre Nombre de registres Cours # 7 ELE784 - Ordinateurs et programmation système Utilisation des Ports I/O Manipulation d un Port I/O : - Lors de l écriture ou la lecture de registres de périphériques, il faut tenir compte de leur taille respective (8, 16 ou 32 bits). - Aussi, Linux fournit des fonctions de lecture et d écriture standardisées pour l accès aux registres en Port I/O : Pour la lecture : La donnée lue (proviennent de asm/io.h) unsigned inb (unsigned port); unsigned inw (unsigned port); unsigned inl (unsigned port); L adresse du registre Pour l écriture : La donnée à écrire void outb (unsigned char byte, unsigned port); void outw (unsigned short word, unsigned port); void outl (unsigned longword, unsigned port); L adresse du registre Cours # 7 ELE784 - Ordinateurs et programmation système 8 Cours # 7 ELE784 - Ordinateurs et programmation système 4

5 1.2 - Utilisation des Ports I/O Accès à un Port I/O à partir de l espace-usager : - Les fonctions d écriture et de lecture des registres de périphérique sont aussi accessibles à partir d une application-usager, moyennant l inclusion de sys/io.h. - Par contre, les accès directs aux Ports I/O par une application-usager sont par définition un risque élevé de sécurité. - Ainsi, ces fonctions sont accessibles seulement si : - L application-usager est compilée avec l option -O pour forcer l expansion des fonctions incorporées (inline). Permission sur un Port Permission sur tous les Ports - L appel-system ioperm () ou iopl () est utilisé pour obtenir la permission d effectuer des opérations sur un Port (spécifique à la famille x86). - L application-usager doit être exécutée en tant que ROOT pour avoir le droit d utiliser ioperm () ou iopl (). (voir exemples misc-prog/inp.c et misc-prog/outp.c) Cours # 7 ELE784 - Ordinateurs et programmation système Utilisation des Ports I/O Opérations "chaîne" sur un Port : - Certains registres de périphérique peuvent être alimentés par un flux de données. - Ce genre de transaction peut être effectuée plus efficacement par les fonctions d écriture et de lecture suivantes : Pour la lecture : void insb (unsigned port, void *addr, unsigned long count); void insw (unsigned port, void *addr, unsigned long count); void insl (unsigned port, void *addr, unsigned long count); Pour l écriture : Adresse du registre Adresse du tampon Nombre de données void outsb (unsigned port, void *addr, unsigned long count); void outsw (unsigned port, void *addr, unsigned long count); void outsl (unsigned port, void *addr, unsigned long count); - Elles sont implémentées soit par des instructions-machine, lorsque le processeur les possède, ou par des boucles très serrées. Cours # 7 ELE784 - Ordinateurs et programmation système 10 Cours # 7 ELE784 - Ordinateurs et programmation système 5

6 1.2 - Utilisation des Ports I/O Temps-mort d accès aux I/O : - Sur certaines plateformes (ex. : i386), le bus d accès aux périphériques est trop lent par rapport au processeur et celui-ci doit ralentir les accès consécutifs. - La solution à ce problème est d ajouter de petits délais entre chaque accès consécutifs. - Une méthode, sur les plateformes x86, est d écrire 1 byte au Port 0x80 qui n est habituellement pas utilisé (ex. : "outb (0, 0x80);" ). - Une autre approche est d utiliser les fonctions d écriture et de lecture avec pause suivantes : unsigned inb_p (unsigned port); unsigned inw_p (unsigned port); unsigned inl_p (unsigned port); void outb_p (unsigned char byte, unsigned port); void outw_p (unsigned short word, unsigned port); void outl_p (unsigned longword, unsigned port); Cours # 7 ELE784 - Ordinateurs et programmation système Utilisation des Mémoires I/O - La Mémoire I/O est simplement une plage d adresses de mémoire qui est réservée pour donner accès aux registres des périphériques. - Ainsi, chaque registre de périphérique est vu par le processeur comme s il était une case de mémoire et il y accède exactement de la même façon qu il accède à la mémoire. - D ailleurs, contrairement aux Ports I/O, il est possible d accéder à un registre en Mémoire I/O au travers d un pointeur; mais cette pratique est déconseillée. - Par contre, la lecture ou l écriture dans ces cases-mémoire spéciales à des effets secondaires, contrairement aux cases de mémoire ordinaires. - Dans un même système, les deux approches peuvent se côtoyer, avec certains périphériques en Port I/O (ex. : bus ISA) et d autres en Mémoire I/O (ex. : bus PCI). Cours # 7 ELE784 - Ordinateurs et programmation système 12 Cours # 7 ELE784 - Ordinateurs et programmation système 6

7 Allocation d une Mémoire I/O : Utilisation des Mémoires I/O - Dépendant de la plateforme et du bus, la Mémoire I/O peut être accédée au travers des tables de pages de mémoire. - Dans ce cas, avant toutes choses, le Noyau doit rendre ces adresses physiques visibles au pilote en leur assignant des adresses virtuelles avec : Adresse des registres Nombre de cases de mémoire NULL si pas disponible utilisées par les registres void *ioremap (unsigned long phys_addr, unsigned long size); - La fonction ioremap_nocache () ci-dessous à le même effet mais les adresses obtenues ne seront pas disponibles pour être misent en mémoire-cache. void *ioremap_nocache (unsigned long phys_addr, unsigned long size); - Finalement, lorsque le pilote n a plus besoin du/des périphériques, les adresses-virtuelles sont libérées avec : void iounmap (void * addr); Adresse à libérer Cours # 7 ELE784 - Ordinateurs et programmation système 13 Allocation d une Mémoire I/O : Utilisation des Mémoires I/O - Comme pour le Port I/O, avant d utiliser une Mémoire I/O, le pilote doit en demander l accès exclusif au Noyau à l aide de : Nombre de cases (inclus dans linux/ioport.h) Adresse de la mémoire struct resource *request_mem_region (unsigned long start, unsigned long len, Retour non-null si la char *name); demande est acceptée Nom choisit pour l unité-matériel - Le pilote peut aussi vérifier la disponibilité de la Mémoire I/O avec : Code d erreur int check_mem_region (unsigned long start, unsigned long len); Adresse de la mémoire - Finalement, le Port I/O sera retourné au Noyau avec : Nombre de cases void release_mem_region (unsigned long start, unsigned long len); Adresse de la mémoire Nombre de cases Cours # 7 ELE784 - Ordinateurs et programmation système 14 Cours # 7 ELE784 - Ordinateurs et programmation système 7

8 1.3 - Utilisation des Mémoires I/O Accès à la Mémoire I/O : - Comme pour les Ports I/O, il faut tenir compte de la taille respective (8, 16 ou 32 bits) des registres. Pour la lecture : La donnée lue unsigned int ioread8 (void *addr); unsigned int ioread16 (void *addr); unsigned int ioread32 (void *addr); (proviennent de asm/io.h) L adresse du registre Pour l écriture : La donnée à écrire void iowrite8 (u8 value, void *addr); void iowrite16 (u16 value, void *addr); void iowrite32 (u32 value, void *addr); L adresse du registre - Même si les adresses des registres peuvent être accédées directement par un pointeur, cette pratique n est pas "portable" et il est préférable d utiliser les fonctions d accès ci-dessus. Cours # 7 ELE784 - Ordinateurs et programmation système Utilisation des Mémoires I/O Opérations "répétées" sur une Mémoire I/O : - Comme pour les Ports I/O, certains registres de périphérique peuvent être alimentés par un flux de données. - Ce genre de transaction peut être effectuée plus efficacement par les fonctions d écriture et de lecture suivantes, équivalentes aux opérations "chaines" des Ports I/O : Pour la lecture : void ioread8_rep (void *addr, void *buf, unsigned long count); void ioread16_rep (void *addr, void *buf, unsigned long count); void ioread32_rep (void *addr, void *buf, unsigned long count); Pour l écriture : Adresse du registre Adresse du tampon Nombre de données void iowrite8_rep (void *addr, const void *buf, unsigned long count); void iowrite16_rep (void *addr, const void *buf, unsigned long count); void iowrite32_rep (void *addr, const void *buf, unsigned long count); Cours # 7 ELE784 - Ordinateurs et programmation système 16 Cours # 7 ELE784 - Ordinateurs et programmation système 8

9 1.3 - Utilisation des Mémoires I/O Opérations "blocs" sur une Mémoire I/O : - En plus des opérations de lecture et d écriture habituelles, le Noyau fournit des opérations qui permettent d agir sur un bloc de registres à des adresses contigües : Pour initialiser un bloc contigüe de registres : void memset_io (void *addr, u8 value, unsigned int count); Adresse du bloc de registres Pour copier un bloc contigüe de registres : À partir des registres : (équivalent au memset() ) Valeur d initialisation void memcpy_fromio (void *dest, void *source, unsigned int count); Vers les registres : Adresse du tampon Adresse du bloc de registres Nombre de registres (équivalent au memcpy() ) void memcpy_toio (void *dest, void *source, unsigned int count); Adresse du bloc de registres Adresse du tampon Nombre de registres Nombre de registres Cours # 7 ELE784 - Ordinateurs et programmation système Utilisation des Mémoires I/O Port I/O vue comme de la Mémoire I/O : - Certaines versions d un périphérique sont en Port I/O tandis que d autres versions du même périphérique sont en Mémoire I/O. - Les registres des différentes versions sont les mêmes, seul la méthode d accès change. - Dans le but de simplifier l accès à ces périphériques, indépendamment de la méthode d accès, le Noyau fournit une fonction qui permet l accès en Mémoire I/O à des périphériques qui sont en Port I/O : Pour cartographier en Mémoire I/O : void *ioport_map (unsigned long port, unsigned int count); NULL si pas accessible Pour libérer la Mémoire I/O : void ioport_unmap (void *addr); Adresse du bloc de registres Adresse du bloc de registres Nombre de registres - Malgré tout, le Port I/O doit être attribué avec request_region (), comme précédemment. Cours # 7 ELE784 - Ordinateurs et programmation système 18 Cours # 7 ELE784 - Ordinateurs et programmation système 9

10 - Une interruption est un mécanisme matériel qui permet à un périphérique de demander de l attention du processeur. - Une interruption est toujours déclenchée à la suite d un événement qui s est produit dans le périphérique et qui requière un traitement spécifique. - Ainsi, une interruption est un signal transmit au processeur et qui déclenche l exécution d une routine d interruption (ISR Interrupt Service Routine). Périphérique Signal d interruption Étapes 1 Le périphérique transmet un signal d interruption au processeur. 2 Le processeur récupère le vecteur d interruption dans la table des vecteurs. 3 Le processeur exécute la routine d interruption. 1 2 CPU 3 Vecteur d interruption Routine d interruption Mémoire Table des vecteurs d interruption Routines d interruption (ISR) Note : La table des vecteurs d interruption est une table de pointeurs vers des routines d interruption. Cours # 7 ELE784 - Ordinateurs et programmation système 19 - L infrastructure matérielle des interruptions dépend du type de processeur : CPU Registre de statut CPU Registre de statut IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ15 Masque d interruption Interruption PIC Interruptions partagées Registre de masque IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ15 Dans les deux cas, les périphériques sont reliés à des lignes d interruptions spécifiques, qui peuvent être partagées, et auxquelles est accordé un niveau de priorité. Interruptions partagées Activation d interruption Masque d interruption Cours # 7 ELE784 - Ordinateurs et programmation système 20 Cours # 7 ELE784 - Ordinateurs et programmation système 10

11 - Pour qu un périphérique génère une interruption, lors d un événement, il doit être configuré correctement à l aide de ses registres internes. Par exemple : base_addr = Port parallèle en mode SPP (Standard Parallel Port) 0x378 (LPT1) Control Port (base_addr+2) ou IRQ Enable 0x278 (LPT2) Status Port (base_addr+1) Data Port (base_addr+0) Cours # 7 ELE784 - Ordinateurs et programmation système 21 - Pour utiliser les interruptions d un périphérique, il faut : 1 Connaître le périphérique : - L adresse de ses registres - Signification de ses registres - Son fonctionnement manufacturier 2 Savoir sur quelle(s) ligne(s) d interruption il est connecté. 3 Concevoir une routine d interruption pour répondre à cette interruption. 4 Connecter la routine d interruption à la table des vecteurs d interruptions. 5 Initialiser correctement le périphérique Logiciel Spécifications du Architecture du système - L initialisation du périphérique se fait en écrivant dans ses registres internes (voir "", section 1.0, cours # 7). - Les interruptions se produisent n importe quand (imprévisible) et sont exécutées concurremment avec les autres tâches (voir "synchronisation", cours # 2). - Habituellement, toutes les autres interruptions sont bloquées lors du traitement d une interruption. - Les routines d interruptions (ISR) doivent être le plus rapide possible. Cours # 7 ELE784 - Ordinateurs et programmation système 22 Cours # 7 ELE784 - Ordinateurs et programmation système 11

12 2.1 - Installation d une routine d interruption - Pour "attacher" une routine d interruption (ISR) à un signal d interruption (IRQ), le Pilote doit en faire la demande au Noyau avec : Numéro de l interruption (IRQ) Pointeur vers la routine d interruption (ISR) int request_irq (unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long flags, const char *dev_name, void *dev_id); Code d erreur Drapeaux d options SA_INTERRUPT SA_SHIRQ SA_SAMPLE_RANDOM Nom du propriétaire de l interruption Pour les ISR rapides. Permet le partage Peut servir pour la génération de nombres aléatoires Code d identification servant au partage d interruption - La routine d interruption (ISR) est "détachée" du signal d interruption (IRQ) avec : Numéro de l interruption (IRQ) Code d identification void free_irq (unsigned int irq, void *dev_id); Cours # 7 ELE784 - Ordinateurs et programmation système Installation d une routine d interruption - Le nombre de lignes d interruption est limité et elles doivent être économisées. - Il convient donc de réserver une ligne d interruption seulement lorsqu on en a réellement besoin. - Donc, le meilleur moment pour réserver et libérer les lignes d interruptions est : request_irq () free_irq () - Le 1 er Open () du pilote - Avant de démarrer le périphérique - Le dernier Close () du pilote - Après avoir arrêté le périphérique Auto-détection du numéro d interruption (IRQ) : - Le numéro d interruption (IRQ) associé à un périphérique dépend de l architecture du système et doit être déterminé dynamiquement par le Pilote. - Certains périphériques peuvent "dire" au Pilote quel est leur numéro d IRQ (en lisant un de leurs registres internes). Cours # 7 ELE784 - Ordinateurs et programmation système 24 Cours # 7 ELE784 - Ordinateurs et programmation système 12

13 2.1 - Installation d une routine d interruption Auto-détection du numéro d interruption (IRQ) : - D autres utilisent un numéro d IRQ parmi quelques numéros standards et qui est identifié par une option du Pilote. Par exemple : Code pour choisir le numéro d IRQ selon l adresse de base du port parallèle OU Utilisation d une option du Pilote Numéro d IRQ du port parallèle if (parallelport_irq < 0) switch (short_base) { case 0x378 : parallelport_irq = 7; break; case 0x278 : parallelport_irq = 2; break; case 0x3bc : parallelport_irq = 5; break; } insmod./mon_pilote.ko irq=3 - Dans bien des cas, par contre, la meilleure méthode est de tester toutes les interruptions pour déterminer laquelle est attachée au périphérique. Cours # 7 ELE784 - Ordinateurs et programmation système Installation d une routine d interruption Auto-détection du numéro d interruption (IRQ) : Auto-détection "à la main" : int trials[ ] = {3, 5, 7, 9, 0}; int tried[ ] = {0, 0, 0, 0, 0}; int i, count = 0; volatile int my_irq = 0; for (i = 0; trials[i]; i++) Attacher une ISR-Bidon à chaque IRQ disponible tried[i] = request_irq (trials[i], probing_isr, SA_INTERRUPT, "my probe", NULL); do { my_irq = 0; INITIALISE LE PÉRIPHÉRIQUE udelay(5); Attends un peu } while ((my_irq <= 0) && (count++ < 5)); for (i = 0; trials[i]; i++) if (tried[i] = = 0) free_irq(trials[i], NULL); Interruptions que l on veut tester if (my_irq < 0) printk("probe failed %i times, giving up\n", count); Puisque ce travail prend du temps, on le ferait dans la partie INIT du Pilote. Initialise le périphérique pour qu il générer des interruptions Détache la ISR-Bidon des IRQ Répète 5 x ou jusqu à ce qu on trouve Cours # 7 ELE784 - Ordinateurs et programmation système 26 Cours # 7 ELE784 - Ordinateurs et programmation système 13

14 2.1 - Installation d une routine d interruption Auto-détection du numéro d interruption (IRQ) : Auto-détection "à la main" : irqreturn_t probing_isr (int irq, void *dev_id, struct pt_regs *regs) { if (my_irq = = 0) my_irq = irq; On a trouvé } if (my_irq!= irq) On avait trouvé, mais my_irq = -irq; là ce n est plus sûr return IRQ_HANDLED; Cette ISR ne fait que placer le numéro de l ISR dans la variable globale my_irq Cours # 7 ELE784 - Ordinateurs et programmation système Installation d une routine d interruption Auto-détection du numéro d interruption (IRQ) : Auto-détection par le Noyau : - Le Noyau fournit deux (2) fonctions de bas niveau pour tester les interruptions, mais seulement celles qui ne sont pas partagées. - Elles fonctionnent selon le même principe que la détection "à la main", c est-àdire que le périphérique doit déclencher au moins une interruption pour que la détection se fasse. - Par contre, elles ne requièrent pas l utilisation d une interruption "bidon". unsigned long probe_irq_on (void); int probe_irq_off (unsigned long); Prend une "image" de l état actuel des interruptions non-assignées Compare "l image" avec l état actuel et retourne le numéro de celle qui a changée Cours # 7 ELE784 - Ordinateurs et programmation système 28 Cours # 7 ELE784 - Ordinateurs et programmation système 14

15 2.1 - Installation d une routine d interruption Auto-détection du numéro d interruption (IRQ) : Auto-détection par le Noyau : Puisque ce travail prend du temps, on Par exemple : int count = 0; le ferait dans la partie INIT du Pilote. unsigned long mask; Initialise le périphérique pour qu il générer des interruptions Répète 5 x ou jusqu à ce qu on trouve do { Prend une image mask = probe_irq_on ( ); INITIALISE LE PÉRIPHÉRIQUE udelay(5); Attends un peu my_irq = probe_irq_off (mask); Compare l image if (my_irq = = 0) { printk(kern_info "no irq reported by probe\n"); my_irq = -1; } } while ((my_irq < 0) && (count++ < 5)); if (my_irq < 0) printk("probe failed %i times, giving up\n", count); Cours # 7 ELE784 - Ordinateurs et programmation système Installation d une routine d interruption Mécanisme interne du traitement des interruptions : - En fait, les interruptions n exécutent pas leur ISR immédiatement, mais chacune fait appel à la routine commune : do_irq (). IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ15 Au cas où l interruption réveille une tâche do_irq () { Accuse réception de l interruption Capture un spinlock Permettre une seule Trouve la bonne ISR interruption à la fois Si ISR trouvée handle_irq_event (ISR) Libère le spinlock } handle_irq_event (ISR) { Si pas SA_INTERRUPT Débloque les interruptions Appelle ISR () schedule () } Pour les interruptions "lentes" ma_isr () { } Cours # 7 ELE784 - Ordinateurs et programmation système 30 Cours # 7 ELE784 - Ordinateurs et programmation système 15

16 2.1 - Installation d une routine d interruption Activer / désactiver les interruptions : - Il peut arriver qu un Pilote doive désactiver les interruptions pendant une très courte période de temps. - C est le cas, par exemple, lorsque le Pilote tient un verrou tournant (spinlock). Activer / désactiver une seule interruption : - Les fonctions suivantes permettent d activer / désactiver une interruption particulière, sauf les interruptions qui sont partagées. void disable_irq (int irq); Désactive l interruption sur tous les processeurs, mais n attends pas. void enable_irq (int irq); Désactive l interruption sur tous les processeurs. Si l interruption est en exécution, attends qu elle termine. void disable_irq_nosync (int irq); Active l interruption sur tous les processeurs. Ces fonctions sont cumulatives. Elles peuvent être appelées à partir d une ISR. - Danger de verrou mortel (Deadlock) si la tâche qui désactive l interruption tient une ressource nécessaire à la ISR de cette interruption. Cours # 7 ELE784 - Ordinateurs et programmation système Installation d une routine d interruption Activer / désactiver les interruptions : Activer / désactiver toutes les interruptions : - Les fonctions suivantes permettent d activer / désactiver toutes les interruptions pour le processeur courant, c est-à-dire le processeur qui exécute la fonction. void local_irq_save (unsigned long flags); void local_irq_restore (unsigned long flags); Désactive les interruptions sans sauvegarder le masque Réactive les interruptions sans tenir compte du masque Désactive les interruptions tout en sauvegardant le masque Réactive les interruptions en récupérant le masque void local_irq_disable (void); void local_irq_enable (void); - Ces fonctions ne sont pas cumulatives et les interruptions sont réactivées immédiatement, peu importe le nombre de fois qu elles ont étés désactivées. Cours # 7 ELE784 - Ordinateurs et programmation système 32 Cours # 7 ELE784 - Ordinateurs et programmation système 16

17 2.2 - Implémentation d une routine d interruption - Une ISR s exécute dans le contexte d interruption, contrairement à un appelsystème qui s exécute dans le contexte du processus. - Ainsi, une ISR ne peut pas : - Échanger des données avec l espace-usager - Bloquer ou attendre (dormir) - Appeler l ordonnanceur du Noyau (schedule ()) - Le rôle d une ISR est de : - Informer le périphérique que son interruption a été réceptionnée - Récupérer / transmettre la donnée, selon le cas - Réveiller la tâche qui attend pour cet événement Par exemple : IRQ_NONE ou IRQ_HANDLED Numéro de l interruption Pointeur vers un paramètre État des registres du processeur irqreturn_t my_interrupt (int irq, void *dev_id, struct pt_regs *regs) { RÉINITIALISE LE PÉRIPHÉRIQUE (RÉCUPÈRE LA DONNÉE) ou (TRANSMET UNE DONNÉE) wake_up_interruptible (&my_queue); return IRQ_HANDLED; } Cours # 7 ELE784 - Ordinateurs et programmation système Moitié haute et moitié basse - En temps normal, les interruptions sont désactivées pendant l exécution d une ISR. - Il est donc primordial que l exécution de la ISR soit la plus rapide possible, sinon le temps de réponse du système en est largement affecté. - Il est possible de réactiver les interruptions dans la ISR manuellement ou automatiquement afin de minimiser l impact lors des ISR "lentes". - Manuellement En utilisant les fonctions d activation (voir section 2.1.3) - Automatiquement En n utilisant pas l option SA_INTERRUPT lors l installation de l interruption (voir section 2.1) - Mais la façon la plus efficace de faire un travail important, en réponse à un événement, est de diviser le travail en deux (2) parties : - Moitié haute : - C est la ISR en tant que telle. - Elle doit être très rapide. - Elle déclenche la moitié basse. - Moitié basse : - Elle fait le gros du travail. - Elle s exécute avec les interruptions activées. Cours # 7 ELE784 - Ordinateurs et programmation système 34 Cours # 7 ELE784 - Ordinateurs et programmation système 17

18 2.3 - Moitié haute et moitié basse - La moitié haute se borne à faire le travail essentiel, c est-à-dire : - Sauvegarder les données du périphérique dans un tampon du Pilote. - Transmettre les données du tampon du Pilote vers le périphérique. - Démarrer l exécution de la moitié basse. - La moitié basse fait tout le reste à un moment plus opportun qui ne ralentit pas le système. - Cette façon de faire permet à la moitié haute de répondre à d autres interruptions pendant l exécution de la moitié basse. - Presque toutes les interruptions "sérieuses" sont conçues de cette façon. - Le Noyau de Linux fournit deux (2) mécanismes pour implémenter la moitié basse : - Tasklet : - Sont rapides, mais leur code doit être "atomique". - Sont souvent le mécanisme préféré pour les moitiés basses. - Workqueue : - Sont plus lentes, mais elles peuvent "dormir". Cours # 7 ELE784 - Ordinateurs et programmation système Moitié haute et moitié basse Tasklet : - Un Tasklet est une fonction spéciale qui est cédulée pour exécution, dans le contexte d interruption, à un moment opportun pour le Noyau. - L ordonnancement d un Tasklet n est pas cumulatif; c est-à-dire qu il peut être cédulé plusieurs fois, mais ne sera exécuté qu une seule fois. - Donc, un Tasklet ne peut jamais s exécuté concurremment avec lui-même et un Pilote qui utilise plusieurs Tasklets doit implanter des mécanismes de blocages pour éviter les conflits. - Le Tasklet s exécute toujours sur le même processeur que l ISR qui l a déclenché et ne peut donc pas commencer son exécution avant la fin de l ISR. - Par contre, l ISR peut être exécutée de nouveau pendant l exécution du Tasklet et des mécanismes de synchronisation peuvent être nécessaires. - Un Tasklet est déclaré à l aide de la macro : DECLARE_TASKLET (name, function, data); Pointeur vers la fonction contenant le code du Tasklet Nom du Tasklet Paramètre fournit au Tasklet Cours # 7 ELE784 - Ordinateurs et programmation système 36 Cours # 7 ELE784 - Ordinateurs et programmation système 18

19 2.3 - Moitié haute et moitié basse Tasklet : Exemple de déclaration d un Tasklet : Prototype de la fonction du Tasklet void my_do_tasklet (unsigned long); DECLARE_TASKLET (my_tasklet, my_do_tasklet, (unsigned long) &my_var); Nom du Tasklet Paramètre fournit au Tasklet Exemple d activation d un Tasklet par une ISR : Activation du Tasklet irqreturn_t my_isr (int irq, void *dev_id, struct pt_regs *regs) { TRAVAIL ESSENTIEL DE LA ISR compte_isr++; Permet de compter le nombre tasklet_schedule (&my_tasklet); de fois que l ISR est exécutée return IRQ_HANDLED; } Cours # 7 ELE784 - Ordinateurs et programmation système Moitié haute et moitié basse Tasklet : Exemple de fonction d un Tasklet : void my_do_tasklet (unsigned long param) { struct my_struct *data = (struct my_struct *) param; int compte = compte_isr; Conserve le compte d ISR } compte_isr = 0; TRAVAIL PARTICULIER DU TASKLET wake_up_interruptible (&my_queue); Réveille une tâche, au besoin - Il est souvent utile que le Tasklet sache le nombre de fois que la ISR a été exécutée car s a l informe du travail qu il a à faire. - Aussi, souvent le Tasklet réveille une tâche qui attend pour les résultats de l événement qui a déclenché l interruption. Cours # 7 ELE784 - Ordinateurs et programmation système 38 Cours # 7 ELE784 - Ordinateurs et programmation système 19

20 2.3 - Moitié haute et moitié basse Workqueue : - Une Workqueue est en fait une fil d attente de travail qui s exécute lorsque possible. - La tâche du Workqueue s exécute dans le contexte-processus et peut donc "dormir", si besoin est. - Par contre, la tâche du Workqueue ne peut pas échanger aisément des données avec l espace-usager. - Bien qu il est possible de créer une Workqueue, la pratique courante est d utiliser la Workqueue du Noyau en y ajoutant simplement des tâches. - Pour insérer une nouvelle tâche de travail dans une Workqueue, il faut déclarer une variable spéciale (struct work_struct) et initialiser la Workqueue. Déclaration d une tâche de Workqueue : static struct work_struct my_wq_task; Cours # 7 ELE784 - Ordinateurs et programmation système Moitié haute et moitié basse Workqueue : Initialisation de la Workqueue : (est habituellement fait dans INIT du Pilote) INIT_WORK (& my_wq_task, (void (*)(void *)) my_do_wq_task, (void *) &my_var); Pointeur vers la variable de la tâche du Workqueue Pointeur vers la fonction de la tâche Exemple d activation d une tâche de Workqueue par une ISR : Pointeur vers le paramètre de la fonction Activation de la tâche de Workqueue irqreturn_t my_isr (int irq, void *dev_id, struct pt_regs *regs) { TRAVAIL ESSENTIEL DE LA ISR compte_isr++; Permet de compter le nombre schedule_work (&my_wq_task); de fois que l ISR est exécutée return IRQ_HANDLED; } - La fonction de la tâche du Workqueue est identique au Tasklet déjà vu. Cours # 7 ELE784 - Ordinateurs et programmation système 40 Cours # 7 ELE784 - Ordinateurs et programmation système 20

21 2.4 - Partage d interruption - Le nombre de périphériques qui utilisent les interruptions dépasse largement le nombre de ligne d interruption dans un système. - Ainsi, tous Pilote doit permettre le partage des lignes d interruptions qu il utilise avec d autres Pilotes, à chaque fois que le matériel le permet (certains périphériques ne permettent pas le partage d interruption). - Et, en fait, le partage d interruption est assez simple car il s agit d abord que l interruption soit installée de la façon suivante : (comme pour les interruptions ordinaires, voir section 2.1, acétate 23) int request_irq (unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), SA_SHIRQ, const char *dev_name, (void *) &my_struct); Drapeau d option pour le partage d interruption L installation réussit si : Code d identification unique, par exemple, l adresse d une variable personnelle du Pilote - La ligne d interruption est libre, ou - Tous les Pilotes qui y sont déjà reliés, l ont déclarée "partageable". Cours # 7 ELE784 - Ordinateurs et programmation système Partage d interruption - Lors de l interruption, le processus se déroule de la façon suivante : 1. Le Noyau appelle chaque ISR attachée à l interruption et leur passe en paramètre leur propre dev_id. 2. Chaque ISR doit déterminer si l interruption lui appartient et retourner : IRQ_NONE : Immédiatement, si l interruption ne lui appartient pas. IRQ_HANDLED : Après le traitement, si l interruption lui appartient. - Pour déterminer si l interruption lui appartient, la ISR du Pilote vérifie les registres du périphérique qu elle contrôle pour savoir s il a généré l interruption. - Lors de la désinstallation de l interruption avec free_irq (), le Noyau utilise le dev_id qui est fournit pour déterminer quelle ISR doit être déconnectée. Notes importantes : - L auto-détection du numéro d interruption doit être fait "à la main", le Noyau ne fournit rien pour le faire. - Le Pilote ne peut pas utiliser enable_irq () et disable_irq () pour activer / désactiver l interruption. Cours # 7 ELE784 - Ordinateurs et programmation système 42 Cours # 7 ELE784 - Ordinateurs et programmation système 21

22 2.4 - Partage d interruption Exemple de ISR sur une ligne d interruption partagée : irqreturn_t my_sh_interrupt (int irq, void *dev_id, struct pt_regs *regs) { int value = inb (status_reg); Vérifie le registre de statut du périphérique if (!(value & 0x80)) return IRQ_NONE; Si l interruption ne nous appartient pas, retourne immédiatement } RÉINITIALISE LE PÉRIPHÉRIQUE (RÉCUPÈRE LA DONNÉE) ou (TRANSMET UNE DONNÉE) wake_up_interruptible (&my_queue); return IRQ_HANDLED; Le reste du traitement ne change pas Cours # 7 ELE784 - Ordinateurs et programmation système I/O piloté par interruption - Toutes les interruptions n ont pas pour but la communication de données entre le périphérique et le Pilote. - Par contre, lorsque c est le cas, les I/O piloté par interruption sont particulièrement efficace lorsque jumelés avec une stratégie de temporisation. Read Input Buffer Évite que Read / Write soit appelé trop souvent Write Output Buffer PILOTE Input Tasklet Améliore la synchro entre Tasklet et ISR Output Tasklet In_ISR buffer Out_ISR buffer Input ISR Output ISR Cours # 7 ELE784 - Ordinateurs et programmation système 44 Périphérique Périphérique Cours # 7 ELE784 - Ordinateurs et programmation système 22

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

Pilotes matériels sous Linux : mode noyau versus mode utilisateur

Pilotes matériels sous Linux : mode noyau versus mode utilisateur 1/31 Pilotes matériels sous Linux : mode noyau versus mode utilisateur Stelian Pop Système d exploitation 2/31 Interface entre : ressources matérielles (écran, clavier, carte

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

REALISATION d'un. ORDONNANCEUR à ECHEANCES

REALISATION d'un. ORDONNANCEUR à ECHEANCES REALISATION d'un ORDONNANCEUR à ECHEANCES I- PRÉSENTATION... 3 II. DESCRIPTION DU NOYAU ORIGINEL... 4 II.1- ARCHITECTURE... 4 II.2 - SERVICES... 4 III. IMPLÉMENTATION DE L'ORDONNANCEUR À ÉCHÉANCES... 6

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

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

Ordinateurs, Structure et Applications

Ordinateurs, Structure et Applications Ordinateurs, Structure et Applications Cours 10, Les interruptions Etienne Tremblay Université Laval, Hiver 2012 Cours 10, p.1 Les interruptions du 8086 Une interruption interrompt l exécution séquentielle

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

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

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

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

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

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE ARDUINO DOSSIER RESSOURCE POUR LA CLASSE Sommaire 1. Présentation 2. Exemple d apprentissage 3. Lexique de termes anglais 4. Reconnaître les composants 5. Rendre Arduino autonome 6. Les signaux d entrée

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

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

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants : GIF-3002 SMI et Architecture du microprocesseur Ce cours discute de l impact du design du microprocesseur sur le système entier. Il présente d abord l architecture du cœur ARM Cortex M3. Ensuite, le cours

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

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

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?

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

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

Programmation système de commandes en C

Programmation système de commandes en C Programmation système de commandes en C Cours de Programmation système Tuyêt Trâm DANG NGOC Université de Cergy-Pontoise 2012 2013 Tuyêt Trâm DANG NGOC Programmation système de commandes

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

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

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7 Cahier des charges driver WIFI pour chipset Ralink RT2571W sur hardware ARM7 RevA 13/03/2006 Création du document Sylvain Huet RevB 16/03/2006 Fusion des fonctions ARP et IP. SH Modification des milestones

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

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

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr 6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure

Plus en détail

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes Fabienne.Boyer@imag.fr

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes Fabienne.Boyer@imag.fr Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes Fabienne.Boyer@imag.fr 1- Structure d un disque 2- Ordonnancement des requêtes 3- Gestion du disque - formatage - bloc d amorçage - récupération

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

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

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

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

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

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

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

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

La technologie Java Card TM

La technologie Java Card TM Présentation interne au CESTI La technologie Java Card TM sauveron@labri.u-bordeaux.fr http://dept-info.labri.u-bordeaux.fr/~sauveron 8 novembre 2002 Plan Qu est ce que Java Card? Historique Les avantages

Plus en détail

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données EARTH et Threaded-C: Éléments clés du manuel de références de Threaded-C Bref historique de EARTH et Threaded-C Ancêtres de l architecture EARTH: Slide 1 Machine à flux de données statique de J.B. Dennis

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

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

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996] Mesure de performances [Architecture des ordinateurs, Hennessy & Patterson, 1996] Croissance des performances des microprocesseurs Avant le milieu des années 80, le gain dépendait de la technologie. Après,

Plus en détail

Programmation système I Les entrées/sorties

Programmation système I Les entrées/sorties Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les

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

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

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0 WINDOWS NT 2000: Travaux Pratiques -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 TABLE DES MATIÈRES Installer un boitier Serveur...3 Fonctions du boitier :...3 Installation du boitier Hp Jetdirect

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Cours de Base de Données Cours n.12

Cours de Base de Données Cours n.12 Cours de Base de Données Cours n.12 Gestion des transactions : contrôle de concurrence Elisabetta De Maria - http://www.i3s.unice.fr/ edemaria/ UFR Sciences et Laboratoire I3S, CNRS 2013-2014 Université

Plus en détail

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

<Insert Picture Here> Solaris pour la base de donnés Oracle Solaris pour la base de donnés Oracle Alain Chéreau Oracle Solution Center Agenda Compilateurs Mémoire pour la SGA Parallélisme RAC Flash Cache Compilateurs

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

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

DAns un système multi-utilisateurs à temps partagé, plusieurs processus Chapitre 8 Ordonnancement des processus Dns un système multi-utilisateurs à temps partagé, plusieurs processus peuvent être présents en mémoire centrale en attente d exécution. Si plusieurs processus sont

Plus en détail

Programmation impérative

Programmation impérative Programmation impérative Cours 4 : Manipulation des fichiers en C Catalin Dima Organisation des fichiers Qqs caractéristiques des fichiers : Nom (+ extension). Chemin d accès absolu = suite des noms des

Plus en détail

UE C avancé cours 1: introduction et révisions

UE C avancé cours 1: introduction et révisions Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple

Plus en détail

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

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I Runtime Gestion de la réactivité des communications réseau François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I 1 Le calcul hautes performances La tendance actuelle

Plus en détail

Modélisation des interfaces matériel/logiciel

Modélisation des interfaces matériel/logiciel Modélisation des interfaces matériel/logiciel Présenté par Frédéric Pétrot Patrice Gerin Alexandre Chureau Hao Shen Aimen Bouchhima Ahmed Jerraya 1/28 TIMA Laboratory SLS Group 46 Avenue Félix VIALLET

Plus en détail

Démarrer et quitter... 13

Démarrer et quitter... 13 Démarrer et quitter... 13 Astuce 1 - Ouvrir, modifier, ajouter un élément dans le Registre... 14 Astuce 2 - Créer un point de restauration... 18 Astuce 3 - Rétablir un point de restauration... 21 Astuce

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

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles Brique ASC Samuel Tardieu sam@rfc1149.net École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles La compilation peut

Plus en détail

Guide d installation logicielle

Guide d installation logicielle Guide d installation logicielle Drivers USB pour Windows XP/2000 X-Edit Editor/Librarian pour Windows XP/2000 Nous tenons à vous remercier d avoir choisi ce processeur DigiTech USB. Ce guide d installation

Plus en détail

Cours de Système : Gestion de Fichiers

Cours de Système : Gestion de Fichiers Cours de Système : Gestion de Fichiers Bertrand Le cun et Emmanuel Hyon bertrand.le cun{at}u-paris10.fr et Emmanuel.Hyon{at}u-paris10.fr Université Paris Ouest Nanterre 25 octobre 2011 B.L.C. & E.H. (UPO)

Plus en détail

Arguments d un programme

Arguments d un programme Arguments d un programme L2 SPI, Bruno Jacob 1 Arguments Quand on appelle un programme dans un environnement UNIX ou MS- DOS, on compose une ligne de commandes de la forme : nom-du-programme argument1

Plus en détail

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

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

IV- Comment fonctionne un ordinateur?

IV- Comment fonctionne un ordinateur? 1 IV- Comment fonctionne un ordinateur? L ordinateur est une alliance du hardware (le matériel) et du software (les logiciels). Jusqu à présent, nous avons surtout vu l aspect «matériel», avec les interactions

Plus en détail

1. Systèmes d entrée/sortie 2. Systèmes de fichiers 3. Structure de mémoire de masse (disques)

1. Systèmes d entrée/sortie 2. Systèmes de fichiers 3. Structure de mémoire de masse (disques) Chapitre 4 Le système de Gestion de Fichiers 1. Systèmes d entrée/sortie 2. Systèmes de fichiers 3. Structure de mémoire de masse (disques) 1 Systèmes d entrée/sortie Concepts importants : Matériel E/S

Plus en détail

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Chapitre V : La gestion de la mémoire Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Introduction Plusieurs dizaines de processus doivent se partager

Plus en détail

Partie 7 : Gestion de la mémoire

Partie 7 : Gestion de la mémoire INF3600+INF2610 Automne 2006 Partie 7 : Gestion de la mémoire Exercice 1 : Considérez un système disposant de 16 MO de mémoire physique réservée aux processus utilisateur. La mémoire est composée de cases

Plus en détail

Systèmes d exploitation

Systèmes d exploitation Systèmes d exploitation Virtualisation, Sécurité et Gestion des périphériques Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Novembre 2009 Gérard Padiou Systèmes d exploitation

Plus en détail

OS Réseaux et Programmation Système - C5

OS Réseaux et Programmation Système - C5 OS Réseaux et Programmation Système - C5 Rabie Ben Atitallah rabie.benatitallah@univ-valenciennes.fr RPC - XDR Rappel RPC: Remote Procedure Call Besoin d un environnement de haut niveau pour le développement

Plus en détail

Les structures. Chapitre 3

Les structures. Chapitre 3 Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre

Plus en détail

Windows Internet Name Service (WINS)

Windows Internet Name Service (WINS) Windows Internet Name Service (WINS) WINDOWS INTERNET NAME SERVICE (WINS)...2 1.) Introduction au Service de nom Internet Windows (WINS)...2 1.1) Les Noms NetBIOS...2 1.2) Le processus de résolution WINS...2

Plus en détail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

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

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers. I Présentation : Dans le chapitre 1, nous avons vu comment utiliser les appels-systèmes de bas niveau pour créer et accéder à des fichiers sur le disque. Nous avons notamment mis en évidence leur dépouillement

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

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

Prise en main. Prise en main - 0

Prise en main. Prise en main - 0 Prise en main 0404 Prise en main - 0 1- Introduction Creative Professional Merci d avoir choisi le Digital Audio System 0404 d E-MU. Nous avons conçu ce produit E-MU pour qu il soit logique, intuitif et

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

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

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Manuel de System Monitor

Manuel de System Monitor Chris Schlaeger John Tapsell Chris Schlaeger Tobias Koenig Traduction française : Yves Dessertine Traduction française : Philippe Guilbert Traduction française : Robin Guitton Relecture de la documentation

Plus en détail

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation Base de données S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :

Plus en détail

Structure fonctionnelle d un SGBD

Structure fonctionnelle d un SGBD Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert

Plus en détail

Playing with ptrace() for fun and profit

Playing with ptrace() for fun and profit sous GNU/Linux nicolas.bareil@eads.net EADS Corporate Research Center - DCR/STI/C SSI Lab SSTIC 2006 Il était une fois... Sous UNIX, ptrace() est le seul moyen de debuggage. User-space, Interface rigide

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

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

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique. École Polytechnique de Montréal Département de Génie Informatique et Génie Logiciel Cours INF2610 Contrôle périodique Automne 2013 Date : 11 octobre 2013 de 18h à 20h Professeur : Boucheneb Hanifa Documentation

Plus en détail

Rappels d architecture

Rappels d architecture Assembleur Rappels d architecture Un ordinateur se compose principalement d un processeur, de mémoire. On y attache ensuite des périphériques, mais ils sont optionnels. données : disque dur, etc entrée

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

Concept de machine virtuelle

Concept de machine virtuelle Concept de machine virtuelle Chap. 5: Machine virtuelle Alain Sandoz Semestre été 2007 1 Introduction: Java Virtual Machine Machine Virtuelle Java: qu est-ce que c est? c est la spécification d une machine

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

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

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

La carte à puce. Jean-Philippe Babau

La carte à puce. Jean-Philippe Babau La carte à puce Jean-Philippe Babau Département Informatique INSA Lyon Certains éléments de cette présentation sont issus de documents Gemplus Research Group 1 Introduction Carte à puce de plus en plus

Plus en détail

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables

Plus en détail

Cours A7 : Temps Réel

Cours A7 : Temps Réel Cours A7 : Temps Réel Pierre.Paradinas / @ / cnam.fr Cnam/Cedric Systèmes Enfouis et Embarqués (SEE) Motivations Du jour : les mécanismes multitâches, la gestion des priorités, l ordonnancement, la gestion

Plus en détail

Contrôleur de communications réseau. Guide de configuration rapide DN1657-0606

Contrôleur de communications réseau. Guide de configuration rapide DN1657-0606 K T - N C C Contrôleur de communications réseau Guide de configuration rapide DN1657-0606 Objectif de ce document Ce Guide de configuration rapide s adresse aux installateurs qui sont déjà familiers avec

Plus en détail

Le Network File System de Sun (NFS)

Le Network File System de Sun (NFS) 1 sur 5 Le Network File System de Sun (NFS) Le Network File System de Sun (NFS) Architecture Protocoles Mounting Automounting vs Static mounting Directory et accès aux fichiers Problèmes Implémentation

Plus en détail

Optimisations des SGBDR. Étude de cas : MySQL

Optimisations des SGBDR. Étude de cas : MySQL Optimisations des SGBDR Étude de cas : MySQL Introduction Pourquoi optimiser son application? Introduction Pourquoi optimiser son application? 1. Gestion de gros volumes de données 2. Application critique

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

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