Chapitre7 Système Dexploitation 2
Chapitre7 Système Dexploitation 2
Chapitre7 Système Dexploitation 2
Mr BENAISSA Mohamed
E-mail : benaissa_samir@yahoo.fr
1
Université Aboubekr BELKAID
كلية العلوم – تيجاني هدام
Faculté des Sciences – Tidjani HAddam
قسم اإلعالم اآللي
Département d’informatique
Communication interprocessus
2
Introduction
Les systèmes d’exploitation actuels offrent la possibilité de créer plusieurs
processus ou threads concurrents qui coopèrent pour réaliser des
traitements complexes d’un même application.
Nous pouvons citer, entre autres, les variables communes, les fichiers
communs, les signaux, les messages et les tubes de communication.
3
Communication interprocessus
– Signaux
– Mémoire commune (segment de mémoire)
– Variables communes
– Envoi de message (tube et sochet)
4
– Boîte aux lettres (file de message).
Les tubes de communications Linux
Définition
Deux types
5
Création des tubes Anonymes
6
Caractéristiques des tubes Anonymes ou ordinaires
7
Principe des tubes
8
Communications unidirectionnels:
10
Les tubes anonymes (exemple de redirection)
11
Utilisation des tubes Anonymes
12
Exemple de partage d’un tube entre un père et son fils
Mécanisme de partage
13
Fonction de création d’un tube
14
Fermeture d’un tube
15
main ()
Exemple d’un tube anonyme
{
pipe(tube);
#include <stdio.h> switch (fork())
#include <ctype.h> {
int tube[2]; case -1 :perror("erreur");
char buf1[20]; case 0 :{ fils();}
char buf2[20]; default :pere();
char c[20]; }}
int i;
void *fils() {
void *pere()
close(tube[1]);
{
read(tube[0],buf2,10);
close(tube[0]);
for (i=0; i<10;i++)
printf("je suis pere : message envoyer :");
{c[i]= toupper(buf2[i]);}
for (i=0; i<10; i++)
printf("fils : message recu du pere en
{scanf("%c",&buf1[i]);}
majuscule :%s\n",c);
write (tube[1],buf1,10);
exit(0);
exit(0);
}
}
16
Tube nommé
17
Caractéristique d’un Tubes nommés
18
Création d’un tube nommé
Création par la primitive mknod qui permet de créer les fichiers spéciaux
ou par mkfifo
#include<sys/types.h>
#include<sys/stat.h>
19
Fonction de création d’un tube nommé par le système de gestion de fichier
20
Fonction d’ouverture tube nommé
/* processus ecrivain*/
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
int entreeTube;
char nomTube[] = "tube";
mkfifo(nomTube, 0644);
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
int sortieTube;
char nomTube[] = "tube";
char chaineALire[TAILLE_MESSAGE];
printf("%s\n", chaineALire);
return 0;
}
23
Exemple d’un tube nommé crée par la commande : mkfifo –m 0666 nom-tube
int main()
{
int entreeTube;
return 0;
}
24
/*processus lecteur
par la commande : mkfifo -m 0666 benaissa */
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
int sortieTube;
char chaineALire[TAILLE_MESSAGE];
printf("%s\n", chaineALire);
return 0;
}
25
Communication par les sockets :
Les sockets se sont des outils de communication entre des processus qui
s’exécutent sur des machines différents (communication entre deux
processus qui n’appartient pas au même machine c’est-à-dire s’exécutent
sur deux machine différents)
26
Université Aboubekr BELKAID
كلية العلوم – تيجاني هدام
Faculté des Sciences – Tidjani HAddam
قسم اإلعالم اآللي
Département d’informatique
Mr BENAISSA Mohamed
E-mail : benaissa_samir@yahoo.fr
27