Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parJoel Pagé Modifié depuis plus de 6 années
1
7 – COMMUNICATION INTER PROCESSUS SEGMENTS DE MÉMOIRE PARTAGEE
UNIX AVANCE 7 – COMMUNICATION INTER PROCESSUS SEGMENTS DE MÉMOIRE PARTAGEE Yves PAGNOTTE – Janvier 2011
2
OUTILS DE COMMUNICATION INTER PROCESSUS
(IPC) sémaphores tubes files de messages segments de mémoire partagée
3
SEGMENT DE MEMOIRE PARTAGEE
- c’est le concept de variable globale à plusieurs processus : zone d’octets consécutifs en mémoire - identifié dans UNIX par un identificateur entier - tout processus qui connaît l’existence d ’un segment de mémoire partagée peut réaliser des opérations sur celle-ci - un segment de mémoire partagée : pas seulement accessible à la descendance du processus qui crée la file, mais à tout processus dans le cadre des droits d’accès
4
OPERATIONS SUR UN SEGMENT DE MEMOIRE
- création d’un segment - opération de contrôle d’un segment : - parmi lesquelles la suppression du segment - attachement d’un segment à un processus - détachement d’un segment d’un processus - lire et écrire dans un segment
5
LE FICHIER /usr/include/sys/shm.h
contient des définitions : - constantes relatives aux droits - structures - shmid_ds qui correspond à peu près au type segment de mémoire - shminfo, contient des informations sur l’ensemble des segments définis dans le système
6
CREATION D’UN SEGMENT DE MEMOIRE
la fonction shmget retourne l’identificateur entier du segment ou -1 en cas d’erreur : #include <stdio.h> #include <sys/types.h> #include <sys/shm.h> ..... Id = shmget (IPC_PRIVATE, nb_octets, IPC_CREAT | IPC_EXCL | 0666);
7
CONTROLE D’UN SEGMENT DE MÉMOIRE
la fonction shmctl retourne 0 (- 1 en cas d’erreur) Exemple : shmctl (id, IPC_RMID, 0); supprime le segment d’identificateur id
8
ATTACHEMENT D’UN SEGMENT A UN PROCESSUS
la fonction shmat retourne l’adresse de début du segment sous forme d’un void * Exemple d’un segment contenant des entiers, p contient l’adresse de début du segment int *p; p = (int*) shmat (id, NULL, 0); Le pointeur p permet ensuite de gérer tous les emplacements du segment comme un tableau pour les opérations classiques de lecture ou écriture dans le segment.
9
DETACHEMENT D ’UN SEGMENT D ’UN PROCESSUS
la fonction shmdt retourne 0 (- 1 en cas d’échec) Exemple avec les notations précédentes : shmdt ((void *) p);
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.