Les Systèmes d Exploitation

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

Download "Les Systèmes d Exploitation"

Transcription

1 Les Systèmes d Exploitation Comment Comment Comment Comment ça a marche marche marche marche???? RTX M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 1

2 Les Systèmes d Exploitation 1. Introduction 2. Les Processus 3. Les Threads 4. Concurrence entre processus 5. Communication entre processus 6. Les interruption logicielles (signaux) 7. Gestion de la mémoire 8. Ordonnancement 9. Les Entrées/Sorties 10. Le système de fichiers 11. Démarrage d un système 12. Interblocage 13. Sécurité 14. Systèmes multiprocesseurs M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 2

3 Définitions possibles Machine étendue : Fournir une vision de la machine plus simple à utiliser c est-à-dire des services pour la mémoire, l UE, Gestionnaire de ressources : Partager les ressources dans le temps et l'espace dans le temps par exemple partager le CPU dans l'espace par exemple partager la mémoire, le disque, M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 3

4 Point de vue historique Au début les SE étaient mono processus car on faisait surtout du calcul donc on utilisait les CPU au maximum. Plus tard, programmes interactifs et avec fichiers => beaucoup d'attente sur l'ue => le CPU est sous utilisé => changer de processus quand le processus courant est en attente = multiprogrammation. Puis temps partagé (le 1 er est CTSS Compatible Time Sharing System du MIT) puis devient MULTICS (MULTIplexed Information and Computing System) qui donnera UNIX puis LINUX. Sur les micros CPM est mono programme, MPM est multi processus. Avec le PC retour en arrière avec MSDOS (mono programme) puis Windows (multi processus) De plus en plus de machines multiprocesseurs => le partage du CPU se fait dans le temps ET dans l'espace. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 4

5 Ce que fait un SE Le SE doit gérer : la mémoire les E/S les fichiers les processus Les outils sont : la mémoire virtuelle pour la mémoire les ITs pour les E/S, les fichiers et le temps partagé le contexte (registre, environnement) pour les processus On y ajoute des mécanismes de : sécurité pour la mémoire et les fichiers communication entre processus contrôle du blocage des processus. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 5

6 Primitives Système Pour cela le SE propose des primitives système (fonctions) que tout programme peut appeler pour utiliser les ressources. En général on trouve : gestion des fichiers (ouvrir, fermer, lire, écrire ) gestion du système de fichiers (créer/supprimer/parcourir les répertoires) gestion de la mémoire (allouer, libérer, partager) gestion des processus (créer, attendre, arrêter ) gestion des communications entre processus (signaux, BàL, tubes ) gestion des E/S (graphiques, souris, clavier) gestion du réseau (connecteurs) Pour UNIX il existe la norme POSIX (ISO ) qui définit des appels standards. Pour windows c'est l'api win32. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 6

7 Structure d'un SE Monolithique Ensemble de procédures qui s'appellent entre elles et que le programmeur peut aussi appeler. Certaines fonctions auxiliaires ne sont pas documentées => le programmeur ne peut pas les utiliser (sauf à trouver l'info). C'était le cas des 1 ers windows. Systèmes en couches Par exemple : gestion du CPU gestion de la mémoire communication entre processus gestion des E/S programmes C'est le cas des SE actuels (UNIX, Windows NT). M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 7

8 Structure d'un SE Machines virtuelles La couche la plus basse du SE sert à définir une machine virtuelle qui est une vision du matériel. Par-dessus cette couche on met un SE complet qui considère la machine virtuelle comme son matériel => on peut faire tourner plusieurs SE sur le même matériel. Exemples connus : MSDOS sous Windows NT, VMWARE, java. Modèle client/serveur Les appels système ne sont plus des appels directs mais des communications C/S. Le programme qui veut quelque chose devient client d'un service du SE qui fait le travail et lui renvoie le résultat Dans ce modèle le SE est composé d'un micronoyau minimal qui gère les accès direct au matériel et de services qui font tout le reste Avantage : adapté aux systèmes distribués. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 8

9 Les Systèmes d Exploitation 1. Introduction 2. Les Processus 3. Les Threads 4. Concurrence entre processus 5. Communication entre processus 6. Les interruption logicielles (signaux) 7. Gestion de la mémoire 8. Ordonnancement 9. Les Entrées/Sorties 10. Le système de fichiers 11. Démarrage d un système 12. Interblocage 13. Sécurité 14. Systèmes multiprocesseurs M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 9

10 Notion de Processus Un ordinateur peut faire plusieurs choses en parallèle par exemple du traitement et des E/S car l'ue fonctionne en parallèle du CPU. Lorsque l'on partage le CPU dans le temps on effectue plusieurs programmes (on parle de processus) en parallèle mais c'est un faux parallélisme car le CPU n'en effectue qu'un à la fois. Remarque : les mécanismes mis en œuvre entre les processus en pseudo parallélisme sont applicables à du vrai parallélisme => les SE multiprocessus peuvent assez facilement fonctionner en vrai parallélisme (plusieurs CPU). M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 10

11 Principe de Processus Le processeur gère N processus et bascule de l'un à l'autre sans arrêt. Chaque processus dispose d'un processeur virtuel c est à dire d'un contexte où il laisse la valeur des registres pour la retrouver quand vient son tour. processus processeur virtuel processus processeur virtuel processeur processus processeur virtuel M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 11

12 Types de processus Processus interactifs La plupart des processus s'exécutent en utilisant des E/S vers un utilisateur Processus non interactifs Certains processus gèrent en arrière plan des choses sans interaction (par exemple le processus qui reçoit les mails et les met dans la boîte à lettres). On parle de démons. Certains processus sont créés au démarrage du SE et tournent indéfiniment d'autres sont créés à la demande d'un utilisateur ou d'un autre processus et se terminent au bout d'un moment. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 12

13 Création de processus UNIX utilise un appel système fork qui crée un clone du processus qui s'exécute par duplication de l'espace mémoire et du contexte. La fonction fork retourne une valeur différente à chacun des 2 processus => en testant cette valeur on peut différencier le comportement des 2 clones. Le processus initial est appelé père et son clone est le fils. Cette approche permet de créer des processus coopérants : Le fils hérite d'une copie des variables du père (par exemple des descripteurs de fichiers ouverts) il peut partager le travail avec son père. Un processus peut utiliser un appel système pour charger un nouveau programme à sa place => il modifie l'image mémoire et la remplace par celle du nouveau programme. WINDOWS utilise un appel système CreateProcess qui crée un processus et y charge un programme Remarque : fork est sans paramètre, CreateProcess a 10 paramètres. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 13

14 Principe de fork Variables du processus code du processus Copie des variables Copie du code Variables du processus code du processus int main( ) { }... fork() Retourne p Retourne 0 On a maintenant 2 processus } fork() M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 14

15 Arrêt de processus Arrêt normal par appel d'une primitive système de fin Arrêt sur erreur volontaire par appel d'une primitive système Arrêt sur erreur involontaire ou sur erreur fatale : le SE décide d'arrêter le processus Arrêt par un autre processus ou par l'utilisateur Remarque : quand un processus s'arrête, le SE peut arrêter tous les processus qu'il a crée ou pas (UNIX et Windows ne le font pas). M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 15

16 Hiérarchie de processus P1 Sous UNIX tout processus a un père => arbre Sous UNIX tout processus a un numéro (pid) P2 P4 P3 P5 P6 P8 Sous Windows ils sont à plat mais le processus qui en crée un autre récupère une info qui lui permet de le piloter (l'arrêter par exemple). P7 P1 P2 P3 P4 P5 P6 P7 P8 M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 16

17 États d'un processus 1 Bloqué En cours Prêt 1. Le processus est bloqué en attente de quelque chose (par ex une E/S) 2. Le processus est suspendu par le SE qui passe à un autre 3. Le processus est relancé par le SE qui vient de le choisir 4. Ce que le processus attend est arrivé Le changement d'état d'un processus se fait : lors d'un appel de primitive système lors d'une IT Exemple : 1. Un processus appelle une primitive pour lire sur disque => transistion 1 2. Une IT indique que la lecture disque est terminée => transition 4 M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 17

18 Temps partagé Le temps partagé est obtenu en utilisant un timer pour générer des ITs à intervalles réguliers 1 En cours 3 2 Le SE provoque des transitions 2 et 3 => exécution en pseudo parallélisme Bloqué 4 Prêt Processus A Processus B Processus C IT IT IT IT IT La partie du système qui s'occupe de ça s'appelle l'ordonnanceur. Pour choisir le processus à rendre "En cours" il peut utiliser des priorités entre les processus. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 18

19 Table des processus Le SE gère une table des processus avec toutes les informations relatives à chaque processus. Pour chaque processus on y trouve des informations sur : Le processeur Registres CO Registre d'état Pointeur de pile Le processus État du processus Priorité ID du processus ID du père Infos sur le temps d'exécution La mémoire Pointeur vers le segment de code Pointeur vers le segment de données Pointeur vers le segment de pile Les fichiers Répertoire racine Fichiers Répertoire de travail Descripteurs de fichiers ID utilisateur ID groupe Etc. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 19

20 Types de processus sous UNIX 2 types : processus utilisateurs processus système Parmi les processus système certains sont résidants en mémoire et toujours présents (ils apparaissent toujours quand on utilise la commande UNIX ps -e) Ce sont les démons (init, inetd, ). M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 20

21 Contexte de processus sous UNIX Le contexte d'un processus est constitué de 3 choses : Environnement utilisateur zone de programme zone de données zone de pile Environnement machine registres Environnement système table des processus structure U table des textes La zone de programme peut être partagée par plusieurs processus Les zones de données et de pile sont propres à chaque processus M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 21

22 Environnement système d'un processus Table des processus Table des textes structure U segment de code segment de données segment de pile L'environnement système d'un processus est créé par le SE lors de la création du processus. table des processus : 1 entrée par processus avec : pid, état, priorité, utilisateur structure U : répertoire courant, descripteur de fichiers ouverts, variables d'environnement table des textes : pour les zones de programme partagées M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 22

23 Les processus UNIX vus du programmeur Identification des processus pid_t getpid() retourne le numéro de processus pid_t getppid() retourne le numéro du processus père Mise en sommeil de processus sleep(int n) met en attente le processus pour n secondes pause() met en attente le processus jusqu'à l'arrivée d'un signal. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 23

24 Les processus UNIX vus du programmeur Création de processus Processus initial C'est par clonage du processus créateur fork() Le fils démarre à la fin du fork La fonction fork retourne : le numéro du pid du fils dans le père 0 dans le fils processus père processus fils M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 24

25 Les processus UNIX vus du programmeur Création de processus (suite) Les 2 processus ont : le même code (parfois non dupliqué selon les UNIX) les mêmes données mais dupliquées les mêmes fichiers ouverts le même environnement Remarque : comme ils partagent les mêmes fichiers si le fils se déplace dans un fichier le déplacement est valable pour le père Utilisation possible : pid_t numero; numero=fork(); switch (numero) { case -1 : erreur case 0 : corps du processus fils default : corps du processus père } M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 25

26 Les processus UNIX vus du programmeur Terminaison normale d'un processus exit(int) Quand le processus fils se termine son père peut récupérer sa valeur de sortie. Le processus père a lui-même un père qui peut, par exemple, être le shell qui l'a créé. Si le père se termine avant le fils celui-ci est adopté par le démon init Les processus zombies Un fils qui se termine envoie un signal au père puis reste en état de zombie jusqu'à ce que son père ait consulté sa valeur de retour (celle retournée par le exit du fils) Remarque : si le père se termine sans le faire, le processus peut rester zombie indéfiniment. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 26

27 Les processus UNIX vus du programmeur Attente d'un processus Le processus père peut attendre la terminaison de ses fils par : int wait(int *) Si le fils était déjà terminé wait retourne immédiatement et renvoie le pid du fils S'il n'y a plus de fils en cours wait retourne -1 Sinon wait attend la fin du 1 er fils et retourne son pid Le paramètre reçoit le code de retour du fils. Ce code est soit la valeur passée en paramètre à exit par le fils (terminaison normale du fils) soit un code d'erreur constitué par le SE (terminaison anormale du fils) et indiquant la raison de cette terminaison (par exemple processus tué) Remarque : si le père veut attendre un processus particulier il peut utiliser la fonction waitpid(int, int *, int) qui permet d'attendre le fils dont le pid est donné en 1 er paramètre, le deuxième correspond au paramètre de wait et le 3 ème permet d'indiquer les options de cette attente. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 27

28 Les processus UNIX vus du programmeur Recouvrement de processus La création d'un processus se faisant par fork, le processus fils est un clone du père. La seule différence réside dans la valeur retournée par fork => on peut utiliser un if else ou un switch. Parfois on veut que le fils soit un programme totalement différent du père pour cela il faut recouvrir son code par celui d'un autre programme. UNIX offre pour çà les primitives execl et execv avec des variantes (execle, execlp et exece, execp) qui permettent de désigner : le fichier contenant le programme à exécuter les paramètres passés à ce programme. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 28

29 Les processus sous Windows La création se fait par CreateProcess qui a 10 paramètres : 1. Un pointeur sur le nom de l'exécutable 2. La ligne de commande 3. Un pointeur sur le descripteur de sécurité du processus 4. Un pointeur sur le descripteur de sécurité du processus initial 5. Un bit pour autoriser ou pas l'héritage des descripteurs de fichiers ouverts par le père 6. Des indicateurs de priorité 7. Un pointeur sur le descripteur d'environnement 8. Un pointeur sur le nom du répertoire courant 9. Un pointeur sur la fenêtre initiale du processus 10.Un pointeur sur la structure utilisée pour la valeur de retour du processus (18 valeurs!) C'est très compliqué! Remarque : sous windows il n'y a pas de hiérarchie père-fils tous les processus sont créés au même niveau. Mais les paramètres de création (4, 5 et 10) permettent de garder un lien. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 29

30 Les Systèmes d Exploitation 1. Introduction 2. Les Processus 3. Les Threads 4. Concurrence entre processus 5. Communication entre processus 6. Les interruption logicielles (signaux) 7. Gestion de la mémoire 8. Ordonnancement 9. Les Entrées/Sorties 10. Le système de fichiers 11. Démarrage d un système 12. Interblocage 13. Sécurité 14. Systèmes multiprocesseurs M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 30

31 Les Threads Aussi appelés processus légers. Il s'agit de code s'exécutant en pseudo-parallélisme dans un même processus. La différence essentielle est que tous les threads partagent l'espace d'adressage du même processus => ils peuvent modifier les variables en concurrence. Quand un thread est créé il récupère les variables du processus et peut les modifier => aucune protection => un thread peut planter les autres threads du même processus. MAIS la protection est conservée entre processus. Remarque : Quand un processus est créé sous UNIX il récupère une copie des variables de son père => il en connaît les valeurs au moment où il démarre mais s'il les modifie il ne modifie que sa copie et le père ne le voit pas. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 31

32 Les Threads Les threads sont utilisés pour faire des programmes coopérants tandis que les processus sont utilisés pour faire des programmes concurrents. UNIX avec fork proposait une forme de processus coopérants parce qu'à l'époque les threads n'existaient pas. Un thread a : ses registres son CO son registre d'état son pointeur de pile Tout le reste est partagé. Bloqué En cours Les threads ont accès à une primitive yield qui leur permet de volontairement céder leur place (transition 2) avant que ne se termine leur quota de temps ou avant d'être bloqués. Ceci a un sens car les threads coopèrent alors que les processus sont concurrents pour l'accès au CPU. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation Prêt

33 Les threads sous UNIX Création d'un thread int pthread_create(pthread_t * ident, pthread_attr_t * attributs, void * (*fonction) (void *), void * arguments) Crée un thread qui exécute la fonction passée en 3 ème paramètre appelée avec les paramètres pointés par le dernier paramètre Le 1 er paramètre est l'identificateur du thread Le 2 ème paramètre peut être NULL si on veut adopter le comportement par défaut dans le cas contraire il faut : 1. récupérer la structure pthread_attr_t par défaut à l'aide de la fonction pthread_attr_init 2. en modifier certaines valeurs avec les fonctions set_attr_xxx. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 33

34 Les threads sous UNIX Attributs de thread Modifier les attributs des threads revient à remplir la structure des attributs de threads qui est du type pthread_attr_t, puis à la passer en tant que second argument à pthread_create(). pthread_attr_init() initialise la structure d'attributs de thread (2 ème paramètre de pthread_create) et la remplit avec les valeurs par défaut pour tous les attributs. Chaque attribut attrname peut être individuellement modifié en utilisant la fonction pthread_attr_setattrname() et récupéré à l'aide de la fonction pthread_attr_getattrname(). Les valeurs que l'on peut modifier concernent : la concurrence de ressources dans le processus la possibilité de consulter le code de retour du thread la pile allouée à ce thread la priorité du thread l'ordonnancement la possibilité d'hériter des paramètres du père. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 34

35 Exemple de création d'un thread sous UNIX pthread_attr_t attributs; pthread_t identificateur;.. pthread_attr_init(&attributs); pthread_attr_setscope(&attributs, PTHREAD_SCOPE_SYSTEM); pthread_create(&identificateur, &attributs, void * calcul, (void *) NULL); Et on écrit une fonction calcul qui sera exécutée par le thread void calcul(void) {.. } on a utilisé pthread_attr_init pour récupérer les attributs standard pthread_attr_setscope pour modifier le type de concurrence entre threads (la valeur par défaut est PTHREAD_SCOPE_PROCESS) pthread_create pour créer le thread. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 35

36 Les threads sous UNIX Terminaison d'un Thread pthread_exit(void * retour); Le paramètre sera le code de retour du thread (on peut mettre NULL si on ne veut pas de code de retour). Attente de terminaison d'un thread pthread_join(pthread_t ident, void ** retour); Attend la fin d'un processus dont l'ident est donné en 1 er paramètre. Le 2 ème paramètre recevra la valeur de retour du thread : il s'agit d'un pointeur vers la valeur de retour, or la valeur de retour est un pointeur vers le code de retour (d'où le void **). On peut mettre NULL si on ne veut pas récupérer cette valeur. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 36

37 Les threads sous UNIX Libération de ressources Contrairement à un processus un thread ne libère pas ses ressources quand il se termine car elles peuvent être utilisées par d'autres threads. On peut libérer les ressources d'un thread explicitement par pthread_detach(pthread_t ident) ça peut être fait par un autre thread qui attend la fin par join Attention : Quand un thread a libéré ses ressources il ne peut plus être attendu par un autre (pthread_join). M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 37

38 Les threads sous Windows Ils sont crées par CreateThread() dont les paramètres sont : Attributs de sécurité (en général NULL) Taille de la pile à allouer (0 si taille par défaut) Fonction exécutée par le thread Paramètres passés à cette fonction Indicateurs de mode de création du thread Identificateur du thread (en général NULL) Ils se terminent par ExitThread(code_de_sortie) On peut en modifier la priorité par SetThreadPriority(identificateur, priorité). M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 38

39 Les Systèmes d Exploitation 1. Introduction 2. Les Processus 3. Les Threads 4. Concurrence entre processus 5. Communication entre processus 6. Les interruption logicielles (signaux) 7. Gestion de la mémoire 8. Ordonnancement 9. Les Entrées/Sorties 10. Le système de fichiers 11. Démarrage d un système 12. Interblocage 13. Sécurité 14. Systèmes multiprocesseurs M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 39

40 Concurrence entre processus Trois questions : Comment passer des informations d'un processus à un autre? Comment éviter que des processus n'entrent en conflit par exemple quand ils veulent accéder à la même ressource? Comment s'assurer que le séquencement est assuré c est à dire que le processus B aille récupérer les infos produites par A après que A ait terminé de les produire? Remarque : pour les threads la 1 ere question est facilement résolue puisque l'espace mémoire est partagé. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 40

41 Le problème de la concurrence Lorsque plusieurs processus utilisent une même ressource se pose le problème de concurrence => risque de dysfonctionnements. Exemple : spooleur d'impression : 1 processus (spooleur) explore une table où sont indiqués les fichiers à imprimer et les imprime puis les retire de la table 2 processus A et B veulent imprimer un fichier (f1 pour A et f2 pour B). Processus A 10 table Processus B fx f2 f1 Processus spooleur 12 B f2 A trouve est continue démarre ne interrompu sera que jamais en la écrivant 1 ère et imprimé B A entrée démarre f1 en libre et position l erreur de la 10 table est est non la détectable. 10 et y écrit f2 M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 41

42 À la recherche d une solution Il faudrait éviter que B ne prenne la main tant que A n'a pas terminé la séquence : trouver la 1 ere entrée libre y mettre le nom du fichier f1 On dit que cette séquence constitue une section critique. Il faut alors respecter les règles suivantes : 2 processus ne peuvent être simultanément dans une section critique on ne peut rien supposer sur le temps d'exécution d'un processus un processus ne doit pas rester trop longtemps dans une section critique un processus ne doit pas attendre trop longtemps pour rentrer dans une section critique. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 42

43 Solution souhaitée On arrive au schéma suivant : A B A entre en section critique B veut entrer en section critique A sort de section critique B entre en section critique B sort de section critique M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 43

44 Résoudre le problème de l'exclusion mutuelle Solution 1 Désactiver les ITs en entrant en section critique et les réactiver en sortant => aucun autre processus ne peut démarrer (pas même un pilote de périphérique). ATTENTION : Cette solution marche mais est inutilisable car si un processus utilisateur peut désactiver les ITs il peut tout bloquer. Remarque : en général seul le SE peut désactiver les ITs. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 44

45 Résoudre le problème de l'exclusion mutuelle Solution 2 Utiliser une variable de verrou. Principe : Une variable globale est initialisée à FAUX Les processus qui utilisent des sections critiques suivent l'algorithme suivant : tant que (verrou=vrai) attendre verrou VRAI exécution de la section critique verrou FAUX M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 45

46 Résoudre le problème de l'exclusion mutuelle Le problème est qu'on ne sait pas comment le CPU exécute ces instructions. Par exemple, si on suppose que tant que (verrou=vrai) se traduit par : attente: LOAD registrex, verrou CMP registrex, VRAI BEQ attente Processus A Processus B LOAD registrex, verrou ; registrex=faux LOAD registrex, verrou ; registrex=faux CMP registrex, VRAI CMP registrex, VRAI BEQ attente ; on n'attend pas BEQ attente ; on n'attend pas MOV verrou, VRAI MOV verrou, VRAI entrée dans la section critique entrée dans la section critique Les 2 processus sont simultanément en section critique Le problème vient du fait que l'accès à la variable de verrou est lui-même critique!!!! M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 46

47 Résoudre le problème de l'exclusion mutuelle Solution 3 Pour éviter le problème précédent on pourrait utiliser des variables de verrou différentes pour chaque processus ainsi le verrou n'est modifié que par son propriétaire mais est consulté par les autres. Proposition : Utiliser un tableau de booléens (1 élément par processus mis en concurrence). Quand un processus veut entrer en section critique il met son booléen à VRAI et attend que tous les autres soient à FAUX. De cette façon on n'a plus d'accès concurrent en écriture et le problème d'accès critique à la variable de verrou est résolu. Exemple d'algo pour 2 processus qui utilisent des sections critiques : veut_entrer[moi] VRAI tant que (veut_entrer[lui]) attendre exécution de la section critique veut_entrer[moi] FAUX M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 47

48 Etude de cette solution Processus A veut_entrer[moi] VRAI tant que (veut_entrer[lui]) attendre exécution de la section critique veut_entrer[moi] FAUX Processus B veut_entrer[moi] VRAI tant que (veut_entrer[lui]) attendre exécution de la section critique veut_entrer[moi] FAUX A On exécute passe revient la àb A première qui exécute reste ligne bloqué les 2 dans premières le TQlignes => bloqué dans le TQ Les 2 processus sont bloqués dans le TQ Aucun n entre en section critique On n'en sort plus!!!!! M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 48

49 Résoudre le problème de l'exclusion mutuelle Solution 4 En 1965 Dekker propose un algorithme qui marche pour 2 processus. Il utilise la même table veut_entrer + une variable tour. L'idée est d'éviter le blocage dans le TQ. Pour cela on va, pendant le TQ, céder son tour si l'autre n'a pas encore pu passer. La variable tour est une sorte de privilège c est à dire qu'un processus qui a effectué sa section critique accepte que ce soit le tour de l'autre en cas de conflit. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 49

50 Résoudre le problème de l'exclusion mutuelle Solution 4 L'algo pour les 2 processus est alors le suivant : veut_entrer[moi] VRAI tant que (veut_entrer[lui]) // l'autre est en section critique si (tour=lui) veut_entrer[moi] FAUX // on lui cède la place TQ (tour=lui) attendre // on attend qu'il ait fini veut_entrer[moi] VRAI // on rentre en section critique FSI FTQ exécution de la section critique veut_entrer[moi] FAUX // on sort de section critique tour lui // on cède le privilège Cette méthode marche mais elle est compliquée! M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 50

51 Résoudre le problème de l'exclusion mutuelle Solution 4 En 1982 Peterson en propose une solution plus simple dont le principe est le même. L'algo pour les 2 processus est alors le suivant : veut_entrer[moi] VRAI tour moi tant que ((tour=moi)&&(veut_entrer[lui])) attendre exécution de la section critique veut_entrer[moi] FAUX M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 51

52 Etude de cette solution (cas 1) Processus 1 Processus 2 veut_entrer[1] VRAI tour 1 entrée dans la section critique Fin de la section critique veut_entrer[1] FAUX veut_entrer[2] VRAI tour 2 Boucle car tour=2 et veut_entrer[1] = VRAI Sort de la boucle car veut_entrer[1] = FAUX entrée dans la section critique Changement de processus : M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 52

53 Etude de cette solution (cas 2) Processus 1 Processus 2 veut_entrer[1] VRAI tour 1 Boucle car tour=1 et veut_entrer[2] = VRAI veut_entrer[2] VRAI tour 2 Boucle car tour=2 et veut_entrer[1] = VRAI Changement de processus : Sort de la boucle car tour=1 entrée dans la section critique M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 53

54 Résoudre le problème de l'exclusion mutuelle Solution 5 On a vu que la solution 2 (verrou) ne marchait pas si on n'était pas sûrs que les opérations sur le verrou n'étaient pas indivisibles. Les processeurs possèdent des instructions spéciales pour manipuler les verrous en 1 seule opération => un processus termine forcément l'instruction de manipulation du verrou avant que l'on ne puisse passer à l'autre => Le problème est résolu. Ce sont des instructions TSL (Test and Set Lock). TSL registre, variable fait les opérations suivantes : registre variable variable 1 Pendant l'exécution de cette instruction : on ne peut pas être interrompu (normal) aucun accès à la mémoire n'est possible (pour éviter qu'une unité externe ne puisse modifier le verrou). M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 54

55 Verrou avec l instruction TSL L algorithme de verrou et sa traduction tant que (verrou=vrai) attendre verrou VRAI exécution de la section critique verrou FAUX attendre: TSL registre, verrou CMP registre, 0 BNE attendre exécution de la section critique MOV verrou,0 Ça marche! M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 55

56 Solutions au problème de concurrence On a des solutions au problème de concurrence par : 1. définition de section critique 2. utilisation d'un mécanisme d'entrée en section critique 3. utilisation d'un mécanisme de sortie de section critique Avec des instructions TSL le matériel résout le problème sinon il faut utiliser l'algo de Dekker ou de Peterson Problème : Toutes ces méthodes utilisent une attente active (boucle TQ) càd que le processus se bloque en exécutant une boucle => il utilise du temps processeur juste pour tester le verrou et attendre qu'il se libère. Remarque : L'attente active peut poser des problèmes si les processus ne sont pas de même priorité : Si le processus qui est en section critique a une priorité beaucoup plus faible que celui qui attend, le CPU consacrera beaucoup de temps à boucler pour rien et très peu à faire avancer l'autre processus qui débloquerait le 1 er!!!! Proposition : mettre en sommeil les processus qui attendent une entrée en section critique plutôt que de les faire boucler pour rien. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 56

57 Recherche d'une solution correcte On va étudier un problème classique pour illustrer ça : Le problème du producteur/consommateur : 2 processus partagent un tampon de taille fixe l'un (le producteur) le remplit et l'autre (le consommateur) le vide. Les problèmes se posent quand le producteur trouve le tampon plein parce que le consommateur ne va pas assez vite ou quand le consommateur trouve le tampon vide parce que le producteur ne va pas assez vite On va utiliser une variable taille qui donne la taille occupée du tampon sachant que la taille maxi est MAX. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 57

58 Le problème du producteur/consommateur Producteur TQ vrai Préparer un élément Si (taille=max) dormir Mettre l'élément dans le tampon taille taille + 1 Si (taille=1) réveiller le consommateur FTQ Consommateur TQ vrai Si (taille=0) dormir Récupérer un élément dans le tampon taille taille 1 Si (taille=max-1) réveiller le producteur Traiter l'élément FTQ Problème : L'accès à taille n'est pas géré comme une section critique le consommateur lit taille et trouve 0 à ce moment on passe au producteur qui met un élément dans le tampon et réveille le consommateur mais comme il ne dormait pas ça n'a aucun effet. puis on revient au consommateur qui s'endort et ne sera jamais réveillé. Ça coince! M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 58

59 Étude de cette solution Solution à ce problème : le réveil est mémorisé c est à dire que quand le producteur réveille le consommateur c'est mémorisé et donc, dès que le consommateur voudra s'endormir, il sera instantanément réveillé => ça marche! Remarque : cette méthode devient très complexe à mettre en œuvre si on a plus de 2 processus. C était est le cas, par exemple, du spooleur d'impression (N producteurs pour 1 seul consommateur). Il faut trouver une solution simple à utiliser dans tous les cas. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 59

60 Vers une solution universelle Problème de la concurrence : Quand : Partage d une ressource Où : on ne sait pas comment les processus s enchaînent. Avec un langage de programmation on ne sait ce qui est réellement exécuté par le processeur. Section critique : 2 processus ne doivent pas être simultanément dans une section critique => exclusion mutuelle. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 60

61 L exclusion mutuelle Mécanismes possibles : Verrou : faisable avec l instruction TSL Sinon : algorithme de Dekker ou de Peterson. Solution au problème de concurrence : Définir une section critique Offrir un mécanisme d entrée Offrir un mécanisme de sortie Optimisation : pas d attente active Mise en sommeil Réveil M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 61

62 L exclusion mutuelle L exemple du producteur/consommateur contient : Un problème d exclusion mutuelle d accès au tampon Un problème d endormissement/réveil des processus quand le tampon est plein/vide => Il faut un outil unique pour gérer tout ça. Remarque : C est le même problème dans les 2 cas car : Tampon de taille N : on peut se bloquer quand il est plein ou quand il est vide Tampon de taille 1 : joue le rôle de verrou (on se bloque s il est plein) Le remplir Entrer en section critique Le vider } Exclusion mutuelle pour section critique M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 62

63 Solution unique L outil unique est le sémaphore. Il utilise le même principe mais le tampon est représenté par un compteur de cases libres. Deux opérations permettent L entrée en section critique (avec endormissement si nécessaire) remplir le tampon La sortie de section critique (avec réveil des processus endormis s il y en a) vider le tampon. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 63

64 Les sémaphores Inventés par Dijkstra en L'idée est d'utiliser un compteur de réveils. Un sémaphore est un entier S manipulable par 2 opérations : P(S) : si (S=0) endormir le processus sinon S S-1 V(S) : S S+1 réveiller un processus endormi Il faut que les opérations P et V soient atomiques c est à dire que quand un processus exécute P ou V il ne peut pas être interrompu tant qu'il n'a pas fini C'est la solution universelle à tous les problèmes de concurrence entre processus M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 64

65 Sémaphores et sections critiques Pour le cas particulier des sections critiques, il suffit : D'associer un sémaphore à chaque section critique Qu'un processus fasse P avant d'entrer en section critique Qu'il fasse V dès qu'il en sort On parle alors de MUTEX c est à dire de sémaphore binaire (ne valant que 0 ou 1) qui permet l'exclusion mutuelle d'entrée en section critique. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 65

66 Application au problème du producteur/consommateur Dans le problème du producteur/consommateur on va utiliser : un MUTEX pour éviter l'accès concurrent au tampon (section critique) un sémaphore A pour bloquer le producteur quand le tampon est plein un sémaphore B pour bloquer le consommateur quand le tampon est vide Remarques : A indique le nombre de places disponibles dans le tampon (il est décrémenté par le producteur et incrémenté par le consommateur) B indique le nombre de places occupées dans le tampon (il est décrémenté par le consommateur et incrémenté par le producteur ). M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 66

67 Le producteur TQ vrai Préparer un élément P(A) // si A est à 0 le producteur se bloque car le tampon est plein P(MUTEX) // utilisé pour éviter l'accès concurrent au tampon Mettre l'élément dans le tampon V(MUTEX) // libérer l'accès au tampon V(B) // réveiller le consommateur car le tampon n'est pas vide FTQ Le consommateur TQ vrai P(B) // si B est à 0 le consommateur se bloque car le tampon est vide P(MUTEX) // utilisé pour éviter l'accès concurrent au tampon Récupérer un élément dans le tampon V(MUTEX) // libérer l'accès au tampon V(A) // réveiller le producteur car le tampon n'est pas plein Traiter l'élément FTQ M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 67

68 Les sémaphores pour les processus d'unix Table des sémaphores Liste de sémaphores ressource ressource ressource Unix gère une table des sémaphores. Chaque entrée dans cette table est un pointeur vers une liste de sémaphores (chacun des sémaphores de cette liste gère une ressource) Les opérations portent sur un élément d'une liste (donc un sémaphore). Unix propose des opérations plus générales que P et V mais qui permettent de réaliser P et V donc de résoudre tout problème De plus il permet de faire plusieurs opérations sur un ou plusieurs sémaphores de la même liste de façon atomique. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 68

69 Création d'une liste de sémaphores (UNIX) Principe : UNIX gère un identifiant interne pour chaque liste de sémaphores. C'est la même chose que le numéro associé à un descripteur de fichier que l'on obtient par open. Mais pour un fichier on a un moyen de l'identifier de façon unique par chemin + nom. 2 processus voulant ouvrir le même fichier peuvent le faire car ils connaissent son nom. Par contre ils ne peuvent le faire en utilisant son identifiant interne (n ) que s'ils sont père et fils (le fils a hérité du numéro obtenu par le père). Pour les sémaphores on a le même problème sauf qu'on n'a pas de nom pour le désigner. UNIX propose alors comme solution d'utiliser une clé qui est une sorte de nom que tous les processus peuvent connaître. Primitive de création d'une liste de sémaphores semget(key_t cle, int nombre, IPC_CREAT 0xyz) Cette fonction retourne l'identificateur interne de cette liste. Le 1 er paramètre est la clé associée Le 2 ème paramètre est le nombre de sémaphores de la liste Le 3 ème paramètre permet la création et donne des droits d'accès (comme sur les fichiers xrwxrwxrw) M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 69

70 Accès à une liste de sémaphores (UNIX) La même fonction semget(key_t cle, int nombre, 0) permet de retrouver l'identifiant d'une liste de sémaphores dont on a la clé : il suffit de mettre 0 dans le dernier paramètre. Le problème des clés UNIX propose une fonction de création de clés à partir d'un nom de fichier et d'un entier. ftok(char * nomfich, int numero) retourne une cle (key_t). Remarque : le fichier doit exister mais il n'est pas utilisé par ftok. Le 2 ème paramètre permet de générer des clés différentes à partir du même nom de fichier Remarque : si le processus qui doit utiliser la liste de sémaphores peut connaître la valeur retournée lors de sa création (processus fils) on n'a pas besoin de clé. Dans ce cas on utilise, lors de la création, la constante IPC_PRIVATE en 1ieu de clé : semget(ipc_private, int nombre, IPC_CREAT 0xyz) M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 70

71 Opérations sur une liste de sémaphores (UNIX) La primitive semop permet d'effectuer un ensemble d'opérations sur une liste de sémaphores. Le processus qui l'utilise sera mis en sommeil si l'une de ces opérations est bloquante. semop(int ident, struct sembuf *operations, size_t nombres_d_ops) Le 1 er paramètre est l'identifiant de la liste Le 2 ème paramètre est un tableau dont chaque élément est une structure désignant une opération sous la forme : struct sembuf { ushort_t sem_num; // n du sémaphore dans la liste short sem_op; // opération à effectuer (c est un entier) short sem_flg; // options de l'opération } Le 3 ème paramètre indique la taille du tableau d'opérations. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 71

72 Opérations sur une liste de sémaphores (UNIX) Valeurs possibles de l entier sem_op de la structure décrivant l opération : si sem-op > 0 On ajoute cette valeur au sémaphore et on réveille les processus qui attendaient que cette valeur augmente si sem_op < 0 On ajoute cette valeur au sémaphore sans qu'il devienne < 0 Si on ne peut pas le faire le processus est bloqué jusqu'à ce que la valeur du sémaphore augmente (et que l opération devienne faisable) Si la valeur devient nulle tous les processus en attente que la valeur soit nulle sont réveillés si semp_op = 0 On ne modifie pas le sémaphore mais le processus est bloqué s'il n'est pas nul. L entier sem_flg de la structure décrivant l opération struct sembuf est normalement { nul mais d'autres valeurs peuvent permettre par exemple d'annuler des opérations. ushort_t sem_num; short sem_op; short sem_flg; Remarque : avec sem_op=-1 et sem_flg=0 on obtient l'opération de base P sem_op=1 et sem_flg=0 on obtient l'opération de base V } M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 72

73 Contrôle d'une liste de sémaphores (UNIX) La primitive semctl permet d'effectuer diverses opérations de contrôle sur une liste de sémaphores. Les opérations possibles sont : lecture du nombre de processus en attente d'augmentation d'un sémaphore lecture du nombre de processus en attente de nullité d'un sémaphore lecture de la valeur d'un sémaphore ou de tous lecture du pid du dernier processus ayant effectué semop modification de la valeur d'un sémaphore ou de tous suppression de la liste de sémaphores La fonction est : semctl(int ident, int semnum, int opération, paramètre) ident est l'identificateur de la liste de sémaphores semnum est le n du sémaphore dans la liste ou le nombre de sémaphores selon l'opération opération est une constante qui désigne l'opération paramètre est soit un entier soit un tableau d'entiers soit un pointeur selon l'opération. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 73

74 Contrôle d'une liste de sémaphores UNIX (suite) On utilise La primitive semctl en particulier pour : initialiser les valeurs des sémaphores supprimer une liste de sémaphores Exemples : semctl(id, num, SETVAL, val) initialise le sémaphore de n num à la valeur val. semctl(id, 0, IPC_RMID, 0) supprime la liste de sémaphores (les 2 ème et 4 ème paramètres ne servent pas). M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 74

75 Les sémaphores pour les threads d'unix Les threads peuvent communiquer par variables partagées mais l'accès à ces variables étant concurrent ils ont besoin de sémaphores de type MUTEX. UNIX propose des primitives pour manipuler de tels sémaphores de façon simple: Création d'un MUTEX par sa déclaration: pthread_mutex_t mon_mutex = PTHREAD_MUTEX_INITIALIZER Opération P par la fonction: pthread_mutex_lock(&mon_mutex) Opération V par la fonction: pthread_mutex_unlock(&mon_mutex) Destruction d'un MUTEX par la fonction: pthread_mutex_destroy(&mon_mutex) Remarque : UNIX propose d'autres fonctions comme pthread_mutex_init qui permet de créer un mutex avec vérification d'erreur. Il propose aussi des fonctions permettant de modifier certains attributs des mutex. Mais ces fonctions ne sont pas portables d'un UNIX à un autre donc il vaut mieux éviter de les utiliser. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 75

76 Les moniteurs Principe : Offrir des procédures et des structures de données pour l'accès aux ressources partagées. L'accès ne peut se faire que par ces procédures et les structures de données associées sont inaccessibles de l'extérieur de ces procédures. Il faut que le langage permette ça (java le fait). Lorsqu'un processus exécute l'une de ces procédures il ne peut pas être interrompu. Par contre il peut être suspendu par l'exécution de la procédure (il se met en état bloqué). Remarque : en java si on écrit une méthode avec synchronized elle devient une procédure de moniteur. Java offre des méthodes wait et notify pour bloquer et débloquer les processus. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 76

77 Les Systèmes d Exploitation 1. Introduction 2. Les Processus 3. Les Threads 4. Concurrence entre processus 5. Communication entre processus 6. Les interruption logicielles (signaux) 7. Gestion de la mémoire 8. Ordonnancement 9. Les Entrées/Sorties 10. Le système de fichiers 11. Démarrage d un système 12. Interblocage 13. Sécurité 14. Systèmes multiprocesseurs M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 77

78 Communication par messages C'est le principe de Boîte à Lettres avec deux primitives envoyer et recevoir. BàL Processus A Lettre3 Lettre1 Lettre2 Processus B Remarque : c'est utilisable même si les processus sont sur des machines différentes. Mais dans ce cas s'ajoutent les problèmes de perte de message et d'identification des interlocuteurs. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 78

79 Réalisation de BàL sous UNIX Les messages sont des structures à 2 champs : un type de message un contenu de message Le type de message est un entier long qui pourra être utilisé par la primitive de lecture pour chercher dans la BàL un message correspondant à ce type. Le contenu de message peut être une chaîne de caractères ou une structure quelconque. Exemples de messages struct reponse { long type; char message[100]; } struct autre_reponse { long type; msg message; } typedef struct msg {. } M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 79

80 Création d'une BàL sous UNIX On utilise la primitive : msgget( key_t cle, int options) qui retourne un descripteur de BàL On retrouve le même principe de clés que pour les sémaphores (IPC_PRIVATE ou ftok) Les options sont construites par un OU entre : IPC_CREAT si on veut créer la BàL IPC_EXCL si on veut la créer à condition qu'elle n'existe pas déjà Oxyz comme pour les fichiers Exemple : msgget(cle, IPC_CREAT IPC_EXCL 0666). M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 80

81 Envoi d'un message sous UNIX On utilise la primitive : msgsnd( int descripteur, struct msgbuf * message, size_t taille, int options) qui retourne -1 en cas d'erreur et 0 sinon Le 1 er paramètre est le descripteur retourné par msgget Le 2 ème paramètre pointe sur un message (type + corps) Le 3 ème paramètre est la taille en octets du corps du message. On peut utiliser sizeof ou strlen Le 4 ème est normalement à 0 mais on peut mettre IPC_NOWAIT si on ne veut pas se bloquer si la BàL est pleine. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 81

82 Réception d'un message sous UNIX On utilise la primitive : msgrcv(int descripteur, struct msgbuf * message, size_t taille, long msgtype, int options) qui retourne -1 en cas d'erreur et la taille du message reçu sinon Le 4 ème paramètre permet de choisir les messages (en fonction du champ type): 0 => le 1 er message disponible >0 => le 1 er message de ce type Remarque : avec MSG_EXECPT dans le dernier paramètre on peut demander tout message sauf ce type. Remarque : avec MSG_NOERROR dans le dernier paramètre on peut demander qu un message trop long soit tronqué. Normalement il n'est pas extrait de la BàL et il y a erreur. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 82

83 Contrôle de BàL sous UNIX La primitive msgctl (int descripteur, int commande, struct msqid_ds *valeur) permet de : Récupérer la totalité de la BàL (dans valeur) Modifier certains champs de la BàL (modèle dans valeur) Supprimer une BàL Exemple : pour supprimer la BàL désignée par ident on fera msgctl(ident, IPC_RMID, NULL) Le dernier paramètre n'est pas utilisé dans ce cas. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 83

84 Communication par canal Principe : créer un canal entre deux processus : P1 P2 Réalisation sous UNIX UNIX propose des tubes (pipes) pour ça. Les tubes sont à sens unique P1 P2 Si on veut communiquer dans les 2 sens il faut créer 2 tubes : P1 P2 M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 84

85 Communication par canal sous UNIX Pour que 2 processus connaissent le même canal il faut que : soit l'un est le fils de l'autre et il a hérité du descripteur soit ils peuvent le désigner de façon unique pipes : ça répond au 1 er cas On crée un tube par la fct pipe et on obtient 2 descripteurs (1 pour lire et 1 pour écrire). L'un des processus utilise l'un et l'autre utilise l'autre fifos : ça répond au 2 ème cas On crée un tube par la fct mkfifo en lui donnant un nom et des droits comme pour un fichier et on obtient 1 descripteur Les données sont écrites/lues par des primitives classiques pour les fichiers de bas niveau (write / read). M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 85

86 Communication par mémoire partagée C'est une zone de mémoire utilisable par plusieurs processus Réalisation sous d'unix Le problème est toujours le même : soit le segment partagé est connu de tous les processus car ils sont fils de celui qui l'a créé et ont hérité du descripteur soit le segment est partagé par des processus non liés La solution est aussi la même on utilise une clé qui est privée ou publique. M. DALMAU - IUT de Bayonne - Les systèmes d'exploitation 86

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

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

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

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 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

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

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

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

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

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

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

gestion des processus La gestion des processus

gestion des processus La gestion des processus 1 La Pseudo parallélisme 2 Plusieurs programmes en mémoire Le processeur exécute les instructions tantôt pour l'un tantôt pour l'autre P1 P2 programme de supervision Vu de l'utilisateur => programmes en

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

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

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

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

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

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

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

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

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

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

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

Plus en détail

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

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

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

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

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

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

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

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

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

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Leçon 11 PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Dans cette leçon, nous retrouvons le problème d ordonnancement déjà vu mais en ajoutant la prise en compte de contraintes portant sur les ressources.

Plus en détail

Systemes d'exploitation des ordinateurs

Systemes d'exploitation des ordinateurs ! " #$ % $ &' ( $ plan_ch6_m1 Systemes d'exploitation des ordinateurs Conception de Systèmes de Gestion de la Mémoire Centrale Objectifs 1. Conception de systèmes paginés 2. Conception des systèmes segmentés

Plus en détail

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

Le Ro le Hyper V Premie re Partie Configuration et Prise en main du gestionnaire Hyper-V

Le Ro le Hyper V Premie re Partie Configuration et Prise en main du gestionnaire Hyper-V Le Ro le Hyper V Premie re Partie Configuration et Prise en main du gestionnaire Hyper-V Microsoft France Division DPE Table des matières Présentation... 2 Objectifs... 2 Pré requis... 2 Quelles sont les

Plus en détail

HISTORIQUE DES SYSTEMES D'EXPLOITATION (S.E.)

HISTORIQUE DES SYSTEMES D'EXPLOITATION (S.E.) SYSTEME Chapitre 1 HISTORIQUE DES SYSTEMES D'EXPLOITATION (S.E.) Ce qu'est un S.E. = partie intelligente d'un système donné. Les S.E. ont évolué au fil des années. Ils dépendent de l'architecture des ordinateurs

Plus en détail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation C++ (débutant)/instructions for, while et do...while Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de

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

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

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

Plus en détail

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

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

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

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

Qu'est-ce que c'est Windows NT?

Qu'est-ce que c'est Windows NT? Qu'est-ce que c'est Windows NT? Que faire en cas de blocage d'une station NT? Profils «errants» avec win NT : des éclaircissements Echange de fichiers entre les deux environnements PC/Mac Blocage réseau

Plus en détail

Métriques de performance pour les algorithmes et programmes parallèles

Métriques de performance pour les algorithmes et programmes parallèles Métriques de performance pour les algorithmes et programmes parallèles 11 18 nov. 2002 Cette section est basée tout d abord sur la référence suivante (manuel suggéré mais non obligatoire) : R. Miller and

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

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

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

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

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

Plus en détail

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

Guide d'utilisation du Serveur USB

Guide d'utilisation du Serveur USB Guide d'utilisation du Serveur USB Copyright 20-1 - Informations de copyright Copyright 2010. Tous droits réservés. Avis de non responsabilité Incorporated ne peut être tenu responsable des erreurs techniques

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

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

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

Formateurs : Jackie DAÖN Franck DUBOIS Médiapôle de Guyancourt

Formateurs : Jackie DAÖN Franck DUBOIS Médiapôle de Guyancourt Client sur un domaine stage personnes ressources réseau en établissement janvier 2004 Formateurs : Jackie DAÖN Franck DUBOIS Médiapôle de Guyancourt Lycée de Villaroy 2 rue Eugène Viollet Le Duc BP31 78041

Plus en détail

VRM Monitor. Aide en ligne

VRM Monitor. Aide en ligne VRM Monitor fr Aide en ligne VRM Monitor Table des matières fr 3 Table des matières 1 Introduction 3 2 Vue d'ensemble du système 3 3 Getting started 4 3.1 Démarrage de VRM Monitor 4 3.2 Démarrage de Configuration

Plus en détail

Le meilleur de l'open source dans votre cyber cafe

Le meilleur de l'open source dans votre cyber cafe Le meilleur de l'open source dans votre cyber cafe Sommaire PRESENTATION...1 Fonctionnalités...2 Les comptes...3 Le système d'extensions...4 Les apparences...5 UTILISATION...6 Maelys Admin...6 Le panneau

Plus en détail

http://cri.univ-lille1.fr Sauvegarde et restauration d'un système d'exploitation Clonezilla

http://cri.univ-lille1.fr Sauvegarde et restauration d'un système d'exploitation Clonezilla http://cri.univ-lille1.fr Sauvegarde et restauration d'un système d'exploitation Clonezilla Version 1.0 Septembre 2011 SOMMAIRE 1. Introduction 3 2. Définitions 3 3. Principes généraux 3 4. Clonezilla

Plus en détail

Informatique industrielle A7-19571 Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Informatique industrielle A7-19571 Systèmes temps-réel J.F.Peyre. Partie I : Introduction Informatique industrielle A7-19571 Systèmes temps-réel J.F.Peyre Partie I : Introduction Plan de la première partie Quelques définitions Caractéristiques communes des applications temps-réel Exemples d

Plus en détail

Serveur d application WebDev

Serveur d application WebDev Serveur d application WebDev Serveur d application WebDev Version 14 Serveur application WebDev - 14-1 - 1208 Visitez régulièrement le site www.pcsoft.fr, espace téléchargement, pour vérifier si des mises

Plus en détail

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

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Installation et Réinstallation de Windows XP

Installation et Réinstallation de Windows XP Installation et Réinstallation de Windows XP Vous trouvez que votre PC n'est plus très stable ou n'est plus aussi rapide qu'avant? Un virus a tellement mis la pagaille dans votre système d'exploitation

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

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

1. Utilisation du logiciel Keepass

1. Utilisation du logiciel Keepass Utilisation du logiciel Keepass L'usage de mots de passe est nécessaire pour de nombreux accès ou pour la protection de données personnelles. Il convient d'en utiliser plusieurs, suivant le type d'accè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

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

! #$ $ $ ! %#& ! '& ( )! )*+ ! "! "#$ $ $ ""! %#& """! '& ( ")! )*+ "! "#$ $ $ ""! %#& """! '& ( ")! )*+, ## $ *$-./ 0 - ## 1( $. - (/$ #,-".2 + -".234-5..'"6..6 $37 89-%:56.#&(#. +6$../.4. ;-37 /. .?.@A&.!)B

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

Guide d'installation du connecteur Outlook 4

Guide d'installation du connecteur Outlook 4 Le serveur de communication IceWarp Guide d'installation du connecteur Outlook 4 Version 10 Aout 2010 Icewarp France / DARNIS Informatique i Sommaire Guide du connecteur Outlook 1 Présentation... 1 Pré-requis

Plus en détail

Séquence de découverte de SparkAngels Logiciel d entraide numérique

Séquence de découverte de SparkAngels Logiciel d entraide numérique Contributeurs : GUILLEZ Frédéric BANDINI Gérard DENIGOT Michaël FOLCH Janine PERILLAUD Stéphanie PLATEL Carl REANT Franck I. Matériel et préparation Pré requis matériel et logiciel : Ordinateur avec connexion

Plus en détail

1. Introduction...2. 2. Création d'une requête...2

1. Introduction...2. 2. Création d'une requête...2 1. Introduction...2 2. Création d'une requête...2 3. Définition des critères de sélection...5 3.1 Opérateurs...5 3.2 Les Fonctions...6 3.3 Plusieurs critères portant sur des champs différents...7 3.4 Requête

Plus en détail

Chapitre 1 : Introduction aux bases de données

Chapitre 1 : Introduction aux bases de données Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données

Plus en détail

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

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

Plus en détail

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

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

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

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

Plus en détail

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5 1. Introduction... 2 2. Création d'une macro autonome... 2 3. Exécuter la macro pas à pas... 5 4. Modifier une macro... 5 5. Création d'une macro associée à un formulaire... 6 6. Exécuter des actions en

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

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

Les avantages de la virtualisation sont multiples. On peut citer:

Les avantages de la virtualisation sont multiples. On peut citer: 1 Les mécanismes de virtualisation ont été introduits il y a fort longtemps dans les années 60 par IBM avec leur système CP/CMS. La motivation première de la virtualisation est la possibilité d'isoler

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Polymorphisme, la classe Object, les package et la visibilité en Java... 1 Polymorphisme, la classe Object, les package et la visibilité en Java. Polymorphisme, la classe Object, les package et la visibilité en Java.... 1 Polymorphisme.... 1 Le DownCast... 4 La Classe Object....

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

GPA770 Microélectronique appliquée Exercices série A

GPA770 Microélectronique appliquée Exercices série A GPA770 Microélectronique appliquée Exercices série A 1. Effectuez les calculs suivants sur des nombres binaires en complément à avec une représentation de 8 bits. Est-ce qu il y a débordement en complément

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

Guide de l'administrateur Citrix Personal vdisk 5.6.5

Guide de l'administrateur Citrix Personal vdisk 5.6.5 Guide de l'administrateur Citrix Personal vdisk 5.6.5 Sommaire Sommaire À propos de Personal vdisk 5.6.5...3 Nouveautés dans Personal vdisk 5.6.5...3 Problèmes résolus...3 Problèmes connus...4 Configuration

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

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

Microsoft Windows NT Server

Microsoft Windows NT Server Microsoft Windows NT Server Sommaire : INSTALLATION DE WINDOWS NT SERVER... 2 WINNT.EXE OU WINNT32.EXE... 2 PARTITION... 2 FAT OU NTFS... 2 TYPE DE SERVEUR... 2 Contrôleur principal de Domaine (CPD)....

Plus en détail

J ai chargé l ensemble des données d archivage Outlook (.pst) nécessaire 0. Je sais ou/comment je peux commander des logiciels en option

J ai chargé l ensemble des données d archivage Outlook (.pst) nécessaire 0. Je sais ou/comment je peux commander des logiciels en option GWP W7 User Guide 04.04.2013 Gültig für Rollout mit eorder 20.06.2013 Anpassungen für Client LifeCycle Liste de contrôle Non de l ordinateur Date de la migration Effectué par Que dois-je faire? Avant la

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

L exclusion mutuelle distribuée

L exclusion mutuelle distribuée L exclusion mutuelle distribuée L algorithme de L Amport L algorithme est basé sur 2 concepts : L estampillage des messages La distribution d une file d attente sur l ensemble des sites du système distribué

Plus en détail

COPIER, COUPER, COLLER, SELECTIONNER, ENREGISTRER.

COPIER, COUPER, COLLER, SELECTIONNER, ENREGISTRER. COPIER, COUPER, COLLER, SELECTIONNER, ENREGISTRER. 1. Comment déplacer ou copier un fichier sur Windows Vous aurez régulièrement besoin de déplacer ou dupliquer des fichiers sur votre ordinateur. Par exemple

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

Cours de Génie Logiciel

Cours de Génie Logiciel Cours de Génie Logiciel Sciences-U Lyon Diagrammes UML (2) http://www.rzo.free.fr Pierre PARREND 1 Avril 2005 Sommaire Les Diagrammes UML Diagrammes de Collaboration Diagrammes d'etats-transitions Diagrammes

Plus en détail

Chapitre 2. Classes et objets

Chapitre 2. Classes et objets Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

GESTION DE LA MEMOIRE

GESTION DE LA MEMOIRE GESTION DE LA MEMOIRE MEMOIRE CENTRALE (MC) MEMOIRE SECONDAIRE (MS) 1. HIÉRARCHIE ET DIFFÉRENTS TYPES DE MÉMOIRE... 2 2. MÉMOIRE CACHE... 3 3. MODÈLE D'ALLOCATION CONTIGUË (MC OU MS)... 5 3.1. STRATÉGIE

Plus en détail

Activité 1 : Création et Clonage d'une première machine virtuelle Linux OpenSuSE.

Activité 1 : Création et Clonage d'une première machine virtuelle Linux OpenSuSE. Activité 1 : Création et Clonage d'une première machine virtuelle Linux OpenSuSE. Lors de la première utilisation de Virtual Box, l'utilisateur devra remplir le formulaire d'inscription Virtual Box. Création

Plus en détail