Utilisation des B.A.L (File de messages) Unix



Documents pareils
Cours 6 : Tubes anonymes et nommés

Cours Programmation Système

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Chapitre 2. Classes et objets

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

PROJET ALGORITHMIQUE ET PROGRAMMATION II

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Boîte à outils OfficeScan

Programmation système

Programmation système de commandes en C

Vtiger CRM - Prestashop Connector

Unix : Programmation Système

CONNECTEUR PRESTASHOP VTIGER CRM

Projet gestion d'objets dupliqués

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Assurance téléphone mobile et tablette /

Google Drive, le cloud de Google

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

La gestion des boîtes aux lettres partagées

Asset Management Software Client Module. Manuel d utilisation

Introduction aux Systèmes et aux Réseaux

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

MODELE DE CONVENTION ERDF / <Fournisseur> relative à la dématérialisation fiscale des factures d acheminement

DirXML License Auditing Tool version Guide de l'utilisateur

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

Structurer ses données : les tableaux. Introduction à la programmation

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

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

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

Carte de référence rapide

Check-list de maintenance du système Instructions impératives pour l'utilisateur du système Dernière mise à jour 09 juin 2011

Convention Beobank Online et Beobank Mobile

Introduction à la programmation concurrente

I. Introduction aux fonctions : les fonctions standards

Rappels Entrées -Sorties

Programmation Objet - Cours II

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

Votre appareil est configuré en usine pour permettre d'envoyer immédiatement des SMS.

gestion des processus La gestion des processus

Sophos Mobile Encryption pour Android Aide. Version du produit : 1.0

SYSTÈME DE GESTION DE FICHIERS

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

GESTION DES FICHIERS C/UNIX

Diagramme de classes

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Guide d'installation du connecteur Outlook 4

Sophos Mobile Encryption pour Android Aide. Version du produit : 1.3

Manuel d'installation du logiciel

Cours 420-KEG-LG, Gestion de réseaux et support technique. Atelier No 6-1

Configuration d'un annuaire LDAP

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

eps Network Services Alarmes IHM

STI 2 Édition 5 / Mars 2004

Convention de compte de société de personnes Services Investisseurs CIBC inc.

Routeur client. PC accueil Postes IP

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

TeamViewer 9 Manuel Management Console

JEU BOURSIER Séance d introduction à la plateforme de trading SaxoWebTrader. - Pour débutants -

Conditions générales de la boutique en ligne Vemma Europe (

CORRECTION EXERCICES ALGORITHME 1

Guide rapide ICP BIA desk/complete

Manuel d utilisation NETexcom

Cours 420-KEG-LG, Gestion de réseaux et support technique. Laboratoire 08. D. Création d usagers et de groupes pour la configuration des droits NTFS

Guide de fonctions du téléphone du système SCI Norstar

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

Documentation Cobian

Stockage du fichier dans une table mysql:

Gestionnaire de Réservations Guide Utilisateur

Guide d'installation. Release Management pour Visual Studio 2013

Recherche dans un tableau

CA Desktop Migration Manager

Restriction sur matériels d impression

Programmation Orientée Objet Java

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

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

ÉLECTRONIQUE DE LA PORTE

Les messages d erreur d'applidis Client

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

et rangés en deux classes ne pourront être érigés, transformés, déplacés ni exploités qu'en vertu d'un permis dit d'exploitation.

Alcatel OmniPCX Office

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

Cours de Système : Gestion de Fichiers

SPECIFICATION "E" DU CEFRI CONCERNANT LES ENTREPRISES EMPLOYANT DU PERSONNEL DE CATEGORIE A OU B TRAVAILLANT DANS LES INSTALLATIONS NUCLEAIRES

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

2.1 Le point mémoire statique Le point mémoire statique est fondé sur le bistable, dessiné de manière différente en Figure 1.

Le modèle de sécurité windows

SOLUTION D ENVOI DE SMS POUR PROFESSIONNELS

INDEX Fonctionnement Schéma de câblage... 24

GUIDE DE L UTILISATEUR

Configuration d'un compte géré par plusieurs utilisateurs

Guide Expert Comptable Production Coala

Exécutif temps réel Pierre-Yves Duval (cppm)

Cours de Génie Logiciel

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

28 MAI O.R.U. nº 41/78. Etablissements dangereux, insalubres ou incommodes. (B.O.R.U., 1956, p. 442).

Service client LSC 1

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

Documentation pour l envoi de SMS

PLAN DE CLASSIFICATION UNIFORME DES DOCUMENTS DU MSSS

Transcription:

Utilisation des B.A.L (File de messages) Unix 1. Introduction L'utilisation des boites aux lettres (B.A.L) pour la synchronisation avec échange de messages, suppose défini un ensemble de constantes et de types d'objet (key_t, msqid_ds,... ). Ces définitions sont obtenues en ajoutant les directives d'inclusion suivantes en tête des programmes utilisant les B.A.L: #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> TD //1 1

Chaque boite aux lettres est décrite par son descripteur de type msqid_ds. Quatres primitives msgget, msgctl, msgsnd et msgrcv contrôlent la communication par boîtes aux lettres. Rem: Des processus n ayant aucun lien de parenté peuvent communiquer par BAL, ce qui n est pas le cas des tubes anonymes (en mémoire). TD //1 2

2. Ouverture d'une boite aux lettres La primitive msgget consiste à attribuer un numéro interne à une boîte aux lettres désignée par un nom externe. int msgget(nom_ext, Indicateur) key_t Nom_Ext ; int Indicateur ; Selon la valeur du paramètre Indicateur, la primitive msgget réalise la création ou l'ouverture de la boite aux lettres. TD //1 3

a) La création Elle est effectuée si le nom externe a la valeur particulière IPC_PRIVATE ((key_t) 0), ou si le bit IPC_CREAT de Indicateur est à 1. Dans ce dernier cas, le bit IPC_EXCL joue le même rôle que pour les sémaphores. S'il est positionné, la création échoue si le nom externe est déjà utilisé, s'il ne l'est pas l'appelant risque d'obtenir le numéro interne d'une boite aux lettres créée par une autre application. Les droits d'accès à la boite aux lettres créée sont indiqués dans les 9 bits de poids faible de Indicateur. TD //1 4

b) L'ouverture Lors d'un appel de la primitive msgget, pour obtenir le numéro interne, la valeur du bit IPC_CREAT importe peu pourvu que IPC_EXCL et IPC_CREAT ne soient pas tous les deux positionnés. TD //1 5

3. Contrôle des attributs d'une boîte aux lettres La primitive msgctl permet des opérations de contrôle sur une boite aux lettres, telles que: Le changement des droits d'accès du propriétaire ou du groupe. La consultation des caractéristiques de la boîte aux lettres. La destruction de la boîte aux lettres. TD //1 6

La valeur retournée par la primitive msgctl est 0 en cas de succès et -1 en cas d échec. int msgctl (Num_Int, Controle, Tampon) int Num_int, Controle; struct msqid_ds *Tampon; //dans msg.h TD //1 7

Les valeurs possibles de Controle sont: IPC_STAT, copie le descriptif de la boîte aux lettres dans Tampon. IPC_SET, modifie certaines caractéristiques de la boîte aux lettres à partir des valeurs contenues dans Tampon. IPC_RMID, détruit la boîte aux lettres. TD //1 8

A la suite de la destruction d'une BAL, tout processus mis en attente à cause de l'état de la boîte aux lettres qui ne permet pas d'exécuter l'opération qu'il demande, est alors réveillé et averti de cet événement (Il reçoit -1 et une erreur EIDRM (36) dans errno). TD //1 9

4. Les échanges de message (Dépôt/Retrait) Dans la description des primitives permettant l'échange de messages, le type msgbuf est utilisé : struct msgbuf { long mtype; /* type du message */ char mtexte[ ]; /* texte du message*/ } TD //1 10

a) Le dépôt de message Un producteur dépose un message dans une boîte aux lettres en utilisant la primitive msgsnd. int msgsnd (Num_Int, Mes, Lg_Mes, Indic) int Num_Int, Lg_Mes, Indic; struct msgbuf *Mes; TD //1 11

Le dépôt peut-être momentanément bloqué si la boîte aux lettres est pleine ou ne contient pas suffisamment de place libre. Si cette situation se produit, le bit IPC_NOWAIT de Indic précise l'action à entreprendre. IPC_NOWAIT=0 (valeur par défaut) : bloquer l'appelant jusqu'à ce qu'un retrait soit effectué IPC_NOWAIT=1 : laisser l'appelant se poursuivre en l'avertissant que son message n'a pas été déposé (retour de -1 et EAGAIN(11) dans errno). TD //1 12

b) Le retrait de message Un consommateur retire un message d'une boîte aux lettres en utilisant la primitive msgrcv. int msgrcv (Num_Int, Mes, Lg_Mes, Type_Mes, Indic) int Num_Int, Lg_Mes, Indic; struct msgbuf *Mes; long Type_Mes; TD //1 13

Le type de message demandé par l'appelant est spécifié selon les conventions suivantes: Type_Mes = 0, Premier message quelque soit son type (FIFO). Type_Mes > 0, Premier message ayant pour type Type_Mes. Type_Mes < 0, Premier message dont le type est choisi par ordre de préférence parmi 1,2,... Type_Mes. TD //1 14

La valeur retournée par msgrcv est la longueur du message délivré à l'appelant. Si la longueur du message dans msgrcv est inférieure à la longueur du message dans msgsnd, le bit MSG_NOERROR du paramètre Indic dicte la conduite à tenir. MSG_NOERROR = 1, tronquer le message en gardant que les Lg_Mes premiers caractères. MSG_NOERROR = 0 (valeur par défaut), signaler à l'appelant l'impossibilité du retrait (-1 comme valeur retournée et E2BIG(7) dans errno) Rem: un message lu en partie est considéré comme étant lu en entier. TD //1 15

Le retrait d'un message peut-être momentanément bloqué si la boîte aux lettres ne contient aucun message d'un des types demandés. Si c'est le cas, le bit IPC_NOWAIT indique l'action à entreprendre. IPC_NOWAIT = 0 (valeur par défaut): Bloquer l'appelant jusqu'à ce qu'un message d'un des types demandés soit déposé. IPC_NOWAIT = 1 : Laisser l'appelant se poursuivre en l'avertissant de l'échec de sa demande (-1 comme valeur retournée et EAGAIN(11) dans errno). TD //1 16