Isaip-Esaip Programmation multitâche sous Unix 1. Programmation multitâche sous unix

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

Download "Isaip-Esaip Programmation multitâche sous Unix 1. Programmation multitâche sous unix"

Transcription

1 Isaip-Esaip Programmation multitâche sous Unix 1 Programmation multitâche sous unix Groupe Isaip-Esaip P. Trégouët A. Schaal remerciements à M. Benzaïd pour sa contribution à la rédaction de ce document

2 Isaip-Esaip Programmation multitâche sous Unix 2 PLAN Processus Signaux Tubes entre processus de filiation commune Tubes nommés entre processus de filiation différente File de messages Segments de mémoire partagée Sémaphores Sockets

3 Isaip-Esaip Programmation multitâche sous Unix 3 Livre de référence Programmation système en C sous Linux Auteur : Christophe Blaess Édition EYROLLES

4 Isaip-Esaip Programmation multitâche sous Unix 4 Processus Un processus est un programme en cours d exécution Un système multi-utilisateurs peut exécuter le même programme sous plusieurs processus, pour plusieurs utilisateurs L'espace mémoire alloué à un processus est constitué : du Code du programme en cours d exécution (segment code ou segment text) des Données manipulées par le programme (segment data) du Descripteur du processus (informations relatives au processus, pile d exécution, ) Types d informations : <unistd.h> pid_t PID : numéro de processus, pid_t PPID: numéro de processus parent, uid_t UID : numéro de l utilisateur réel, uid_t EUID:numéro de l utilisateur effectif, etc. Primitives pid_t getpid(void) pid_t getppid(void) uid_t getuid(void) uid_t getuid(void)

5 Isaip-Esaip Programmation multitâche sous Unix 5 Manipulation des processus (1) Création ou duplication de processus pid_t fork(void) La valeur retournée est le pid du fils pour le processus père, ou 0 pour le processus fils. La valeur -1 est retournée en cas d'erreur. Le fils hérite de presque tous les attributs du parent : segment code (partagé, copié), segment data (copié), PID/PPID (modifiées), signaux interceptés (conservés), descripteur de fichiers/tubes ouverts (copiés), pointeurs de fichiers (partagés) Terminaison de processus void exit (int code_retour) Attente de terminaison de processus enfant pid_t wait (int * code _retour), pid_t waitpid (pid_t pid_enfant, int * code_retour, int options)

6 Isaip-Esaip Programmation multitâche sous Unix 6 Manipulation des processus (2) Sommeil de processus Unsigned int sleep (unsigned int nb_secondes) Un signal reçu interrompt le sommeil du processus. Le programme continue alors son exécution après l'appel de sleep(). La valeur retournée par sleep() est le nombre de secondes restantes Recouvrement de processus = changement du programme exécuté par un processus (exec) modification de l image (le segment de code) du processus courant Toutes les variables de l ancien programme sont perdues Il n est pas possible de revenir d un exec. Les instructions qui suivent exec ne seront exécutés que si exec échoue Passage de valeurs : par les variables d environnement ou les paramètres du nouveau programme Primitives correspondantes: exec{l v}[e p] man 3 exec l : liste d arguments : fournir la liste (char *arg0, char *arg1,, 0) v : tableau d arguments : fournir un pointeur sur le tableau (char ** argv avec denier élément = 0 ) Etc.

7 Isaip-Esaip Programmation multitâche sous Unix 7 Besoins de communication entre processus Deux processus peuvent éventuellement partager le même code (ceci est sous le contrôle du système) mais les espaces mémoires réservés aux variables sont complètement étanches : un processus n'a aucun accès aux variables d un autre processus On peut néanmoins créer une application multitâche et avoir besoin de synchroniser ces tâches ou d échanger des informations entre ces tâches. Les systèmes d exploitations sont donc munis de mécanismes appropriés Synchronisation par signaux ou sémaphores Communication de données par fichiers, tubes (pipes) files de messages (queues ou boîtes à lettres) variables implantées dans un segment de mémoire partagée

8 Isaip-Esaip Programmation multitâche sous Unix 8 Communications locales ou distantes Hôte Hôte 1 Hôte 2 Processus Utilisateur Processus Utilisateur Processus Utilisateur Processus Utilisateur Noyau du S.E Noyau S.E Noyau S.E Communication intra-système Communication inter-systèmes Réseau

9 Isaip-Esaip Programmation multitâche sous Unix 9 La communication par signaux (1) Un signal peut être assimilé à une interruption logicielle (par analogie avec les interruptions matérielles) Comme pour une interruption matérielle, la réception d'un signal interrompt le traitement en cours et exécute automatiquement la fonction associée au signal (programmation événementielle). En langage C, l'association entre le numéro du signal et la fonction est réalisé par un appel à la fonction système signal(). Note : la fonction sigaction() peut être utilisée à la place de signal(). Voir man sigaction.

10 Isaip-Esaip Programmation multitâche sous Unix 10 La communication par signaux (2) Un signal est Envoyé par un processus Reçu par un autre processus (éventuellement le même) Véhiculé par le noyau Comment réagit un processus qui reçoit un signal? Il interrompt le traitement en cours il exécute la fonction de traitement du signal il reprend l'exécution du traitement interrompu Si le processus était endormi, il est réveillé par le signal. Après l'exécution de la fonction associée au signal, dans le cas où il est réveillé avant la fin d'une temporisation il ne se rendort pas; par contre s'il attendait la fin d'une entrée-sortie, il continue à attendre. Comportement associée à la réception d'un signal : En général un comportement par défaut est défini : Terminaison anormale du processus (ex: violation de mémoire, division par zéro) Le processus peut ignorer le signal Le processus peut redéfinir, par une fonction spécifique, son comportement à la réception d'un signal

11 Isaip-Esaip Programmation multitâche sous Unix 11 Origine des signaux Frappe de caractères touche CTRL-C CTRL-\ CTRL-Z signal SIGINT SIGQUIT SIGSTP Erreurs du programme Violation de mémoire, SIGSEGV Division par zéro, SIGFPE Commande kill Primitive système : kill(), alarm().

12 Isaip-Esaip Programmation multitâche sous Unix 12 Liste des signaux kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 33) SIGRTMIN 34) SIGRTMIN+1 35) SIGRTMIN+2 36) SIGRTMIN+3 37) SIGRTMIN+4 38) SIGRTMIN+5 39) SIGRTMIN+6 40) SIGRTMIN+7 41) SIGRTMIN+8 42) SIGRTMIN+9 43) SIGRTMIN+10 44) SIGRTMIN+11 45) SIGRTMIN+12 46) SIGRTMIN+13 47) SIGRTMIN+14 48) SIGRTMIN+15 49) SIGRTMAX-15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX

13 Isaip-Esaip Programmation multitâche sous Unix 13 Signaux les plus fréquemment utilisés 1 SIGHUP terminaison du processus leader 2 SIGINT frappe d interruption (CTRL-C) 3 SIGQUIT frappe de quit (CTRL-\) 4 SIGILL instruction illégale 6 SIGABRT problème matériel 7 SIGBUS erreur sur le BUS 8 SIGFPE erreur arithmétique 9 SIGKILL signal de terminaison la réaction à ce signal ne peut être redéfinie 10 SIGUSR1 signal utilisateur 11 SIGSEGV violation écriture mémoire 12 SIGUSR2 signal utilisateur 13 SIGPIPE écriture sur un tube non ouvert en lecture 14 SIGALRM fin de temporisateur 15 SIGTERM terminaison normale d un processus 17 SIGCHLD terminaison (arrêt) d un fils 18 SIGCONT continuation d un processus arrêté par SIGSTOP 19 SIGSTOP signal de suspension d exécution de processus 20 SIGTSTP frappe du caractère de suspension sur le clavier (CTRL-Z)

14 Isaip-Esaip Programmation multitâche sous Unix 14 Envoi de signaux en langage C #include <signal.h> int kill(pid_t pid,int sig) pid : > 0 : pid de processus destinataire sig : le signal à envoyer Envoie un signal à un processus #include <unistd.h> unsigned alarm (unsigned nb) Envoie un signal SIGALRM au processus en cours dans nb secondes. Attention : ne pas mélanger l'utilisation de alarm et de sleep qui partagent le même "timer" (voir man alarm)

15 Isaip-Esaip Programmation multitâche sous Unix 15 Préparer la réception des signaux en langage C #include <signal.h> void (*signal(int signum, void (*handler)(int)))(int); signum : le signal à intercepter handler : pointeur sur une fonction qui gère le signal c'est simplement en C l'identificateur de cette fonction ou constante correspondant à un comportement prédéfini: SIG_DFL : comportement par défaut SIG_IGN : ignorer le signal #include<unistd.h> int pause(void); Endort le processus appelant jusqu'à ce qu'il reçoive un signal. on peut aussi utiliser sleep() si on veut limiter l attente

16 Communication par signaux : exemple #include<signal.h> void standard(int numero) { printf("standard Signal %d recu : \n",numero); } void message(int numero) { printf("message Signal %d recu\n",numero); } main() {int numero; // traitements spécifiques for (numero=1;numero<32;numero++)signal(numero,standard); signal(sigint,message); signal(sigquit,message); //traitements prédéfinis signal(1,sig_dfl); signal(4,sig_ign); // Rien à faire, sauf réagir aux signaux: attente passive while (1) pause(); } Isaip-Esaip Programmation multitâche sous Unix 16

17 Isaip-Esaip Programmation multitâche sous Unix 17 Tubes : principe (1) Un tube est traité comme un fichier ouvert Il est transmis aux processus enfants de la même manière que les fichiers ouverts Un tube est cependant un fichier particulier : Il n a pas de nom dans l arborescence des fichiers Il est connu par deux descripteurs (lecture, écriture) On lit/écrit dans un tube comme on lit/écrit dans un fichier séquentiel Utilisation des fonctions read et write (éventuellement fscanf, fprintf etc ) Les données ne sont pas structurées: le pipe ne contient qu une suite d octets Un tube est comme un "tuyau" avec une entrée et une sortie : Plusieurs processus peuvent y écrire des données Plusieurs processus peuvent y lire des données

18 Isaip-Esaip Programmation multitâche sous Unix 18 Tubes : principe (2) Le fonctionnement est de type FIFO : On lit toujours les octets dans l'ordre où ils ont été déposés dans le tube Il n est pas possible de lire un octet sans voir lu tous ceux qui le précèdent Une donnée lue par un processus ne pourra jamais être relue par un autre processus Les droits d accès sont du même genre que les droits d accès Unix sur les fichiers (rwx, rwx, rwx) Si un tube est vide, ou si tous les descripteurs susceptibles d y écrire sont fermés, la primitive read() renvoie la valeur 0 (fin de fichier atteinte). Un processus qui écrit dans un tube qui n a plus de lecteurs (tous les descripteurs susceptibles de lire sont fermés) reçoit le signal SIGPIPE

19 Isaip-Esaip Programmation multitâche sous Unix 19 TUBES : primitives utiles Création : #include <unistd.h> int pipe(int p_desc[2]) p_desc[0] pour la lecture, p_desc[1] pour l écriture Entrées/Sorties : write (p_desc[1], buf_ecrire, nbre_octets) read (p_desc[0], buf_lire, nbre_octets) FILE * fdopen():fprintf(), fscanf(),etc... fflush : écrire la zone tampon dans le tube avant qu elle ne soit remplie Pour éviter l interblocage fermer le côté de tube non utilisé, par la primitive close()

20 Isaip-Esaip Programmation multitâche sous Unix 20 TUBES : exemple #include <signal.h> main(){ int i, ret, p_desc[2]; char c; pipe(p_desc); write(p_desc[1],"ab",2); close(p_desc[1]); for (i=1; i<=4; i++) { ret = read(p_desc[0],&c,1) ; if (ret == 1) printf("valeur lue: %c\n",c) ; else perror("impossible de lire dans le tube\n") ; } } Résultat de l exécution : valeur lue : A valeur lue: B impossible de lire dans le tube : Success impossible de lire dans le tube: Illegal seek

21 Isaip-Esaip Programmation multitâche sous Unix 21 TUBES Nommés Les tubes ordinaires, sont non visibles dans l arborescence des fichiers, et accessibles uniquement aux processus d une même affiliation Tubes nommés : visibles dans l arborescence de fichiers, utilisables entre processus ne partageant pas la même filiation Par contre, aucune information n est enregistrée sur disque, le transfert d information s effectue toujours en mémoire. Primitives correspondantes : int mknod(const char *nom_fich,mode_t mode, dev_t dev) int mkfifo (const char *pathname, mode_t mode); Ouverture de tube par les processus connaissant le nom du tube : En lecture/écriture par open() Par défaut, ouverture bloquante : lecteurs et écrivains s attendent synchronisation

22 Isaip-Esaip Programmation multitâche sous Unix 22 Nommage des objets IPC IPC = Inter Process Communication Trois types d objets IPC : files de message, segments de mémoire partagée sémaphores En général ces objets sont créés par un processus et utilisés par d autres, sans qu il y ait de liens de parenté entre ces processus. A chaque objet IPC sera associée une clé d identification de 8 chiffres hexadécimaux Cette identification externe, définie au moment où on écrit le programme est analogue à un nom de fichier : on crée ou on cherche un sémaphore d une valeur de clé donnée comme on ouvre un fichier de nom donné Cependant, on ne peut prévoir si un autre programmeur n a pas par hasard utilisé la même clé pour un autre objet IPC dans une autre application multitâche. On pourra donc utiliser une fonction spéciale, ftok(), pour créer une clé unique à partir d un nom de fichier existant dans le système de fichiers et d un numéro de projet (ceci n'est donc définit qu au moment de l exécution, sur une machine donnée). # include <sys/ipc.h> key_t ftok(const char *pathname,int proj_id);

23 Isaip-Esaip Programmation multitâche sous Unix 23 Constantes communes relatives aux primitives IPC Drapeaux : IPC_CREAT : créer un objet s'il n existe pas IPC_EXCL : échouer si l'objet existe déjà IPC_NOWAIT : ne pas attendre IPC_PRIVATE : clé privée, pas de lien avec le système de fichiers Commandes : IPC_RMID : suppression IPC_SET : mise à jour des attributs IPC_STAT : lecture des attributs Permissions : Analogues à celles du système de fichiers UNIX

24 Isaip-Esaip Programmation multitâche sous Unix 24 Commandes de manipulation des objets IPC ipcs : liste des objets ipc existants ipcrm : suppression d un objet ipc mail:/home/demo # ipcs Shared Memory Segments key shmid owner perms bytes nattch statu 0x root dest 0x root dest 0x root dest Semaphore Arrays key semid owner perms nsems 0x wwwrun x wwwrun Message Queues key msqid owner perms used-bytes messages 0x00001f58 0 root

25 Isaip-Esaip Programmation multitâche sous Unix 25 Files de messages : principe Contrairement aux tubes une file de message contient des données structurées composées D un type de message D un message de longueur variable A la différence des pipes, il sera possible d attendre uniquement des messages d un type donné: s il n y a que des messages d un autre type, le processus sera bloqué (attente passive) Comme les pipes, les files de message sont gérées selon un algorithme FIFO : on lit toujours le message du type cherché qui a séjourné le plus longtemps dans la file L attente est par défaut bloquante, mais, comme pour les pipes, et si cela est nécessaire, le processus peut ne pas attendre en positionnant le drapeau IPC_NOWAIT. Il recevra un code d erreur lui indiquant s'il a ou non obtenu un message. Comme les pipes, les files de messages ont des droits d accès de type Unix (rwx,rwx,rwx)

26 Isaip-Esaip Programmation multitâche sous Unix 26 Files de messages : primitives Création : int msgget(key_t key, int flg) : retour = msq_id Emission : (bloquante si file pleine et flg ne contient pas IPC_NOWAIT) int msgsnd(int msqid,struct msgbuf *msgp,int msgsz,int flg); Avec struct msgbuf {long msgtyp; char * msgtext;} Réception : (bloquante si file vide et flg ne contient pas IPC_NOWAIT) int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); msgtyp = 0 : premier message lu msgtyp > 0 : premier message de type msgtyp msgtyp < 0 : premier message avec un type msgtyp Opérations de contrôle : int msgctl(int f_id, int cmde, struct msqid_ds *structure) cmde = IPC_RMID, IPC_STAT, IPC_SET msqid_ds : structure définie dans <sys/msg.h> qui donne des informations sur la file comme les droits d accès, le dernier processus écrivain,etc.

27 Isaip-Esaip Programmation multitâche sous Unix 27 Création d'une File de messages : exemple #include <errno.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #define ID 123 main() { int msqid ; char *path = "nom_de_fichier_existant"; if (( msqid = msgget(ftok(path,id), IPC_CREAT IPC_EXCL MSG_R MSG_W)) == -1) { perror("echec de msgget"); exit(1); } printf("identificateur de la file: %d\n",msqid); printf("cette file est identifiée par la clé unique : %ld\n", ftok(path,id)) ; } Résultat de l exécution : identificateur de la file: 700 cette file est identifiée par la clé unique :

28 Isaip-Esaip Programmation multitâche sous Unix 28 Mémoire partagée Un segment de mémoire partagé est un espace de mémoire dans lequel un processus pourra "allouer" des variables accessibles par des pointeurs. Un processus crée un segment de mémoire partagée ou demande à utiliser un segment déjà créé. (shmget) Un processus (le même ou un autre) demande au système d initialiser un pointeur sur cet espace (shmat) Ce pointeur contiendra en fait une adresse de mémoire virtuelle différente pour chaque processus - qui sera traduite au moment de l exécution en adresse physique identique pour tous les processus utilisant cette mémoire partagée. L'adresse physique est inaccessible au programmeur. L accès à des variables définies dans un segment de mémoire partagée nécessite en général une synchronisation rigoureuse entre les processus: cette synchronisation sera réalisée le plus souvent par des sémaphores Aux segments de mémoire partagée sont associés des droits d'accès de type Unix

29 Isaip-Esaip Programmation multitâche sous Unix 29 Mémoires partagées: primitives Création : int shmget(key_t key, int size, int flg) : retour = shm_id Attachement : int shmat(int shmid, const void *shmadr, int flg); adr = 0 choix de l adresse par le système d exploitation Une même région peut être attachée plusieurs fois à des adresses différentes Retour : adresse d attachement effective ou -1 Détachement : int shmdt(const void *shmadr) : retour = 0 ou -1 Libération de l espace mémoire uniquement lors du dernier détachement Opérations de contrôle : int shmctl(int shm_id,int cmde,struct shmid_ds *structure) cmde = IPC_RMID, IPC_STAT, IPC_SET, SHM_(UN)LOCK (verrouillage en mémoire = pas de swap autorisé)

30 Isaip-Esaip Programmation multitâche sous Unix 30 Mémoires partagées : exemple #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/wait.h> #include <stdio.h> #include <string.h> void main(){ int pid,shmid ; char *mem ; int flag = 0 ; key_t clef ; printf("donnez la clé:"); scanf("%ld",&clef); shmid = shmget(clef,100, IPC_CREAT IPC_EXCL SHM_R SHM_W); printf("identificateur du segment est %d \n",shmid); pid =fork() ; if(pid == 0){/*processus fils*/ } mem = shmat(shmid,0,flag); strcpy(mem,"message pour le pere"); shmdt(mem); else {/*processus père*/ mem = shmat(shmid,0,flag) ; printf("message reçu de fils : %s\n",mem); shmdt(mem); } wait(0) ; shmctl(shmid,ipc_rmid,null) }

31 Isaip-Esaip Programmation multitâche sous Unix 31 Pourquoi utiliser un sémaphore? D'une manière générale, un sémaphore sert à la synchronisation entre les processus Un sémaphore utilisé pour l exclusion mutuelle (garantir qu un seul processus accède à un moment donné à une variable partagée), utilisera 2 primitives Attendre l accès exclusif à la ressource partagée : si la ressource est déjà utilisée par un processus, le processus qui fait cette demande sera endormi et mis dans une file d attente de processus Libérer l accès exclusif à la ressource partagée : si la file d attente des processus attendant cette ressource est non vide, le processus qui a dormi le plus longtemps est réveillé La section de programme qui se trouve entre les 2 primitives attendre la ressource et libérer la ressource s appelle une section critique Les sémaphores n empêchent pas les processus d accéder à une ressource: un processus «qui ne respecterait pas la discipline» et accéderait à la ressources sans attendre son tour pourrait le faire sans aucune restriction Aux sémaphores sont associés des droits d accès de type Unix

32 Isaip-Esaip Programmation multitâche sous Unix 32 Le "mécanisme" des sémaphores Sémaphore = objet composé : une variable (la valeur du sémaphore) une file d attente (les processus bloqués attendant la ressource) Primitives associées : Initialisation (avec une valeur positive ou nulle) Manipulation : Prendre (P ou Wait) = demande d autorisation Vendre (V ou Signal) = fin d utilisation Principe : sémaphore associé à une ressource Prendre = demande d autorisation (puis-je utiliser la ressource?) Si valeur > = 0 accord, sinon blocage Vendre = restitution d autorisation (je n'ai plus besoin de la ressource) Si valeur < 0 déblocage d un processus

33 Isaip-Esaip Programmation multitâche sous Unix 33 Sémaphores : exemple Parking de N places contrôlé par un feu

34 Isaip-Esaip Programmation multitâche sous Unix 34 Sémaphores : algorithmes des primitives P et V Initialisation(sémaphore,n) valeur[sémaphore] = n P(sémaphore) valeur[sémaphore] = valeur[sémaphore] - 1 si (valeur[sémaphore] < 0) alors étatprocessus = Bloqué mettre processus en file d attente finsi invoquer l ordonnanceur V(sémaphore) valeur[sémaphore] = valeur[sémaphore] + 1 si (valeur[sémaphore] == 0) alors extraire processus de file d attente étatprocessus = Prêt finsi invoquer l ordonnanceur

35 UNIX IPC : tableau de sémaphores (1) Création ou attachement : int semget(key_t clé,int nsems,int semflg) : retour = semid Opérations sur le compteur de sémaphore : int semop (int semid, struct sembuf *spos, int nsops) Avec struct sembuf { u_short sem_num; short sem_op; short sem_flg; } sem_op > 0 : La valeur du sémaphore est augmentée de sem_op. "sem_op ressources sont rendues disponibles". Un ou plusieurs processus bloqués pourront être libérés s'il y a suffisamment de ressources. Analogue à V, le processus appelant n'est jamais bloqué. sem_op = 0 : Teste si le sémaphore a la valeur 0. Si ce n'est pas le cas, le processus est mis en attente de la mise à zéro du sémaphore. "exemple : un écrivain attend que tous les lecteurs aient fini de lire" sem_op < 0 : La valeur du sémaphore est diminuée de sem_op. "le processus demande sem_op ressources". Si le résultat est nul, tous les processus en attente de cet événement sont réveillés. Si le résultat est négatif, le processus est bloqué "en attendant de disposer de suffisamment de ressources". Isaip-Esaip Programmation multitâche sous Unix 35

36 Isaip-Esaip Programmation multitâche sous Unix 36 Sémaphores IPC (2) Opérations de base : exlusion mutuelle P(s) : semop(sem_num, -1, 0) V(s) : semop(sem_num, +1, 0) Opérations de contrôle : int semctl(int semid,int semnum,int cmd, union semun arg) IPC_RMID, IPC_STAT, IPC_SET, Commandes spécifiques aux sémaphore : GETVAL : retourne la valeur d un sémaphore, GETPID : retourne le PID du processus effectuant dernière opération, etc.

37 Isaip-Esaip Programmation multitâche sous Unix 37 Sockets Les "sockets", ("prise" ou "connecteur" en anglais), fournissent une interface de programmation qui permet de définir facilement un canal de communication entre 2 processus locaux ou distants Chaque extrémité d un canal de communication, est définie par un numéro de port Un descripteur de socket est analogue à un descripteur de fichier Mêmes primitives read et write que pour les fichiers Communication bidirectionnelle (contrairement aux pipes) Format machine 1 Format machine 2 processus CLIENT processus SERVEUR N PORT 1 N PORT 2 Adresse IP 1 Adresse IP 2 Socket Socket Format réseau

38 Isaip-Esaip Programmation multitâche sous Unix 38 Communication en mode connecté (TCP) socket() socket() CLIENT bind() listen() SERVEUR connect() accept() write()/ Send() read()/ Recv() Transfert de données read()/ Recv() write()/ Send() Attente nouvelle connexion close() close()

39 Isaip-Esaip Programmation multitâche sous Unix 39 Communication en mode non connecté (UDP) socket() socket() CLIENT bind() SERVEUR Sendto() Recvfrom() Transfert de données Recvfrom() Sendto() close() close()

Programmation système

Programmation système Programmation système Christine Solnon Table des matières 1 Les processus 2 1.1 Etats d un processus................................... 2 1.2 Descripteur d un processus (PCB)...........................

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

Cours 6 : Tubes anonymes et nommés

Cours 6 : Tubes anonymes et nommés Cours 6 : Tubes anonymes et nommés Mécanisme de communications du système de fichiers I-node associé. Type de fichier: S_IFIFO. Accès au travers des primitives read et write. Les tubes sont unidirectionnels

Plus en détail

Programmation système en C/C++

Programmation système en C/C++ Programmation système en C/C++ Jean-Baptiste Vioix (jb.vioix@free.fr) LE2I - ENESAD http://jb.vioix.free.fr 1-41 Programmation en C/C++ sous Unix Il existe des très nombreux outils de développement sous

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

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

LEs processus coopèrent souvent pour traiter un même problème. Ces Chapitre 5 Communication interprocessus LEs processus coopèrent souvent pour traiter un même problème. Ces processus s exécutent en parallèle sur un même ordinateur (monoprocesseur ou multiprocesseurs)

Plus en détail

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

Chapitre 2. Les processus. 2.1 Introduction. 2.2 les différents états d un processus Chapitre 2 Les processus 2.1 Introduction Le processus est un concept clé dans un système d exploitation. Un processus est un programme en cours d exécution. C est-à-dire, un programme à l état actif.

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

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

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

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

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

ENSP Strasbourg (Edition 2009-2010) Les Systèmes Temps Réels - Ch. DOIGNON. Chapitre 3. Mise en œuvre : signaux, gestion du temps et multi-activités Chapitre 3 Mise en œuvre : signaux, gestion du temps et multi-activités 77 GENERALITES SUR LES SIGNAUX Un signal est une information de contrôle (requête) transmise à un processus par un autre processus

Plus en détail

Cours de S.E. les Signaux

Cours de S.E. les Signaux Cours de S.E. les Signaux A. Dragut Univ. Aix-Marseille, IUT Aix en Provence 2012 A. Dragut Cours de S.E. les Signaux 1 / 76 Plan notion noms et numéros kill() effets de l arrivée des signaux Dynamique

Plus en détail

Le système de gestion des fichiers, les entrées/sorties.

Le système de gestion des fichiers, les entrées/sorties. Le système de gestion des fichiers, les entrées/sorties. Luigi Santocanale Laboratoire d Informatique Fondamentale, Centre de Mathématiques et Informatique, 39, rue Joliot-Curie - F-13453 Marseille 19

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

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique Communications entre Processus Communication par tubes. TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique Exemple 1: On a deux processus Père/Fils. Le père

Plus en détail

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

Les processus 2/54. Qu est-ce qu un processus? 3(6)/54. Se souvenir 1(1)/54. Le système de fichiers (exemple du disque dur) Se souvenir 1(1)/54 Le système de fichiers (exemple du disque dur) Qu est-ce qu un processus? 3(3)/54 Les caches (inodes et blocks) Accès à un fichier : double indirection Compteurs de références : Les

Plus en détail

Les processus. Système L3, 2014-2015 1/39

Les processus. Système L3, 2014-2015 1/39 Les processus Système L3, 2014-2015 1/39 Les processus Processus = Instance d un programme en cours d exécution plusieurs exécutions de programmes plusieurs exécutions d un même programme plusieurs exécutions

Plus en détail

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

Qu'est-ce qu'un processus: Définitions Version septembre 2013 N 187 Qu'est-ce qu'un processus: Définitions Instruction = indécomposable et indivisible Processeur =... Processus = suite temporelle d'exécutions d'instructions Processus = exécution

Plus en détail

Communication Interprocessus

Communication Interprocessus Communication Interprocessus Introduction Segments de données et fichiers communs Les signaux Les tubes de communication d UNIX Tubes anonymes Tubes nommés Les tubes de communication de Windows Tubes anonymes

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

Le traitement du temps

Le traitement du temps Programmation Système Mesure Horloges Sommeil Mise en forme Fabrice Harrouet École Nationale d Ingénieurs de Brest harrouet@enib.fr http://www.enib.fr/~harrouet/ enib, F.H... 1/30 Intérêt Cadencer les

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

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

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

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

Le système GNU/Linux IUP NTIC2-1013 - 17/11/05

Le système GNU/Linux IUP NTIC2-1013 - 17/11/05 Capocchi Laurent Doctorant en Informatique capocchi@univ-corse.fr http://spe.univ-corse.fr/capocchiweb Objectifs Comprendre les notions de noyau Linux et des modules. Le système GNU/Linux IUP NTIC2-1013

Plus en détail

SYSTÈME DE GESTION DE FICHIERS

SYSTÈME DE GESTION DE FICHIERS SYSTÈME DE GESTION DE FICHIERS - DISQUE 1 Les couches logiciels réponse requête Requêtes E/S Système E/S Pilote E/S Interruptions utilisateur traitement S.E. commandes S.E. S.E. matériel Contrôleur E/S

Plus en détail

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

Plan global. Programmation système II. Socket du domaine UNIX. Plan. Socket UNIX, Terminaux, Async IO, Mémoire, ELF. Programmation système II Socket UNIX, Terminaux, Async IO, Mémoire, ELF Timothée Ravier LIFO, INSA-CVL, LIPN 1 re année cycle ingénieur STI 2013 2014 Plan global 1 Socket UNIX 2 Terminaux 3 Autres modèles

Plus en détail

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE C.Crochepeyre MPS_SGF 2000-20001 Diapason 1 Les couches logiciels réponse SGF requête matériel matériel Requêtes E/S Système E/S Pilote E/S Interruptions Contrôleur

Plus en détail

Applications client/serveur TCP/IP - Sockets Rappels. C.Crochepeyre Applications CS 1

Applications client/serveur TCP/IP - Sockets Rappels. C.Crochepeyre Applications CS 1 Applications client/serveur TCP/IP - Sockets Rappels C.Crochepeyre Applications CS 1 PLAN Modèle client/serveur Modèle ISO et protocole TCP/IP Comment ça marche? La programmation: les sockets Exemples

Plus en détail

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Pratiques n o 5 : Sockets Stream

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Pratiques n o 5 : Sockets Stream iut ORSAY DUT Informatique Département Informatique 2009 / 2010 Travaux Pratiques n o 5 : Sockets Stream Nom(s) : Groupe : Date : Objectifs : manipuler les primitives relatives à la communication par sockets

Plus en détail

Unix : Programmation Système

Unix : Programmation Système Département Informatique Année Universitaire 2004/2005 1 Compilation et programmation...6 1.1 Préparation du fichier source...6 1.1.1 L'éditeur vi (mode console)...6 1.1.2 L'éditeur nedit ou xedit (sous

Plus en détail

3IS - Système d'exploitation linux - Programmation système

3IS - Système d'exploitation linux - Programmation système 3IS - Système d'exploitation linux - Programmation système 2010 David Picard Contributions de : Arnaud Revel, Mickaël Maillard picard@ensea.fr Environnement Les programmes peuvent être exécutés dans des

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

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

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Communication inter-processus (IPC) : tubes & sockets exemples en C et en Java F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Java : implémentation

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

Gestion des processus

Gestion des processus 65 La Gestion des Processus 1 Définitions, exemples 2. Politiques d'allocation du processeur 3. Synchronisation des processus 66 Programme : Un programme est une suite figée d'instructions, un ensemble

Plus en détail

GESTION DES FICHIERS C/UNIX

GESTION DES FICHIERS C/UNIX Licence IG Page 1 sur 6 GESTION DES FICHIERS C/UNIX Introduction Deux modes d appel - Par la bibliothèque standard C (appel de haut niveau) - Par appels système (bas niveau) Nécessite les includes suivant

Plus en détail

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

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

Plus en détail

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

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

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

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

1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau 1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau Fonctionnement de l Internet Fonctionnement de l Internet Basé sur une architecture TCP/IP du nom des deux principaux protocoles

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

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

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

Chapitre 4 : Outils de communication centralisés entre processus

Chapitre 4 : Outils de communication centralisés entre processus Chapitre 1 : Introduction Chapitre 2 : Processus Chapitre 3 : Ordonnancement Chapitre 4 : Outils de communication centralisés entre processus Chapitre 5 : Allocation mémoire Chapitre 6 : Mémoire virtuelle

Plus en détail

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

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

Plus en détail

1 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

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

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

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

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Système et réseaux (SR1) Gestion des utilisateurs

Système et réseaux (SR1) Gestion des utilisateurs Système et réseaux (SR1) Gestion des utilisateurs Il existe un utilisateur privilégié (de nom root et de groupe root) qui dispose de droits étendus sur le système de fichier et sur le contrôle de l'activité

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

Les fichiers. Chapitre 4

Les fichiers. Chapitre 4 Chapitre 4 Les fichiers Jusqu à maintenant tous les programmes que nous avons conçus travaillaient sur des données qui étaient perdues après chaque session de travail. On peut cependant, c est bien naturel,

Plus en détail

Architecture d un système d exploitation

Architecture d un système d exploitation Architecture d un système d exploitation 1/71 Architecture d un système d exploitation Jean-Claude Bajard IUT de Montpellier, Université Montpellier 2 Première année de DUT Architecture d un système d

Plus en détail

Structure d un programme

Structure d un programme Architecture des ordinateurs Cours 6 Structure d un programme 3 décembre 2012 Archi 1/30 Programme en Assembleur Archi 2/30 Sections de données programme en assembleur = fichier texte (extension.asm) organisé

Plus en détail

Un ordonnanceur stupide

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

Plus en détail

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

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

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

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

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

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

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

Communication par sockets

Communication par sockets Rappel : le réseau vu de l!utilisateur (1) Communication par sockets Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/~krakowia (demande un service)

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

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

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

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

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

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Cours 14 Les fichiers

Cours 14 Les fichiers Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une

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

Les débordements de tampons et les vulnérabilités de chaîne de format 1

Les débordements de tampons et les vulnérabilités de chaîne de format 1 Les débordements de tampons et les vulnérabilités de chaîne de format 1 Patrice Lacroix Groupe LSFM Département d informatique et de génie logiciel Université Laval 18 décembre 2002 1 Cette recherche a

Plus en détail

Système de Gestion de Fichiers

Système de Gestion de Fichiers Chapitre 2 Système de Gestion de Fichiers Le système de gestion de fichiers est un outil de manipulation des fichiers et de la structure d arborescence des fichiers sur disque et a aussi le rôle sous UNIX

Plus en détail

Programmation Système (en C sous linux) Rémy Malgouyres LIMOS UMR 6158, IUT département info Université Clermont 1, B.P.

Programmation Système (en C sous linux) Rémy Malgouyres LIMOS UMR 6158, IUT département info Université Clermont 1, B.P. Programmation Système (en C sous linux) Rémy Malgouyres LIMOS UMR 6158, IUT département info Université Clermont 1, B.P. 86 63172 AUBI Une version PDF de ce document est téléchargeable sur mon site web,

Plus en détail

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

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

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

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

Plus en détail

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

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

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

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Unix/Linux I. 1 ere année DUT. Université marne la vallée Unix/Linux I 1 ere année DUT Université marne la vallée 1 Introduction 2 Fonctions et spécifité d Unix Architecture 3 4 5 Fichier Unix Arborescence de fichiers Quelques commandes sur les fichiers Chemins

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

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

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

Simulation d un système de paiement par carte bancaire

Simulation d un système de paiement par carte bancaire Simulation d un système de paiement par carte bancaire Mini projet IN301/IN3ST01-2009-2010 Sujet rédigé par Jean Cousty et Laurent Najman, très librement inspiré d un projet de Jérome Gueydan pour l ENSTA

Plus en détail

Formation Technicien Supérieur de Support en Informatique T2SI. Le module LINUX. Session 2012-2013 J04 Version 01

Formation Technicien Supérieur de Support en Informatique T2SI. Le module LINUX. Session 2012-2013 J04 Version 01 Formation Technicien Supérieur de Support en Informatique T2SI Le module LINUX Session 2012-2013 J04 Version 01 Christian DELAIR christian@delair.fr.eu.org GRETA / GITA Formation continue au Lycée polyvalent

Plus en détail

Programmation client-serveur sockets - RPC

Programmation client-serveur sockets - RPC Master Informatique M Plan de la suite Programmation client-serveur sockets - RPC Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/people/krakowia

Plus en détail

CH.3 SYSTÈMES D'EXPLOITATION

CH.3 SYSTÈMES D'EXPLOITATION CH.3 SYSTÈMES D'EXPLOITATION 3.1 Un historique 3.2 Une vue générale 3.3 Les principaux aspects Info S4 ch3 1 3.1 Un historique Quatre générations. Préhistoire 1944 1950 ENIAC (1944) militaire : 20000 tubes,

Plus en détail

TP : Gestion d une image au format PGM

TP : Gestion d une image au format PGM TP : Gestion d une image au format PGM Objectif : L objectif du sujet est de créer une classe de manipulation d images au format PGM (Portable GreyMap), et de programmer des opérations relativement simples

Plus en détail

Chapitre 1 : La gestion dynamique de la mémoire

Chapitre 1 : La gestion dynamique de la mémoire Chapitre 1 : La gestion dynamique de la mémoire En langage C un programme comporte trois types de données : Statiques; Automatiques ; Dynamiques. Les données statiques occupent un emplacement parfaitement

Plus en détail

Manuel d'installation

Manuel d'installation CyberMUT P@iement P@iement CIC P@iement OBC SERVICE SECURISE DE PAIEMENT INTERNET PAR CARTE BANCAIRE (Sécurisé par le protocole SSL) Manuel d'installation (Document 2/2) EURO Sp.Tech. 1.2.8 Octobre 2001

Plus en détail

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

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

Plus en détail

Les structures de données. Rajae El Ouazzani

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

Plus en détail

Conception des systèmes répartis

Conception des systèmes répartis Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan

Plus en détail