EXERCICES DIRIGES Synchronisation de processus CORRECTION

Documents pareils
INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Problèmes liés à la concurrence

Cours de Systèmes d Exploitation

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Introduction à la programmation concurrente

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

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

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

INITIATION AU LANGAGE JAVA

Chapitre 4 : Exclusion mutuelle

1 Mesure de la performance d un système temps réel : la gigue

Les processus légers : threads. Système L3, /31

Initiation au HPC - Généralités

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

Synchro et Threads Java TM

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Partie 7 : Gestion de la mémoire

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Le langage C. Séance n 4

PROJET 1 : BASE DE DONNÉES REPARTIES

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

GESTION DES FICHIERS C/UNIX

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

Gestion des processus

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

IFT Systèmes d exploitation - TP n 1-20%

Structure fonctionnelle d un SGBD

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Chapitre 1 : La gestion dynamique de la mémoire

Bases de données avancées Concurrence d'accès et reprise

Introduction : les processus. Introduction : les threads. Plan

Ordonnancement temps réel

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

Cours Bases de données 2ème année IUT

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

SYSTÈME DE GESTION DE FICHIERS

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

TP : Gestion d une image au format PGM

DAns un système d exploitation multiprogrammé en temps partagé, plusieurs


Premiers Pas en Programmation Objet : les Classes et les Objets

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

<Insert Picture Here> Solaris pour la base de donnés Oracle

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Gestion de projet- Indicateurs de performance

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Bases de programmation. Cours 5. Structurer les données

On appelle variable condition une var qui peut être testée et

Réplication des données

Année Universitaire 2009/2010 Session 2 de Printemps

4. Outils pour la synchronisation F. Boyer, Laboratoire Sardes

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

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

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

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

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

Algorithmique et Programmation, IMA

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Java Licence Professionnelle CISII,

Les chaînes de caractères

Chap III : Les tableaux

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

Rappels Entrées -Sorties

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Une introduction à la technologie EJB (2/3)

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Représentation d un entier en base b

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Temps Réel. Jérôme Pouiller Septembre 2011

Gestion distribuée (par sockets) de banque en Java

Programmation C. Apprendre à développer des programmes simples dans le langage C

Chapitre 2. Classes et objets

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

Programmation impérative

Etude de l ENT de l Université de Paris 5. Mise en place d outils de suivi de la charge de l ENT (monitoring)

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

I. Introduction aux fonctions : les fonctions standards

Plan du cours. Historique du langage Nouveautés de Java 7

TD2/TME2 : Ordonnanceur et Threads (POSIX et fair)

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

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Introduction aux Systèmes et aux Réseaux

Méthodes de programmation systèmes UE n NSY103. Notes de cours. Nombre d'heures : 55h (~ cours de 3 heures)

LOG4430 : Architecture et conception avancée

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

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

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

UE Programmation Impérative Licence 2ème Année

BAREME sur 40 points. Informatique - session 2 - Master de psychologie 2006/2007

Chapitre 1 : Introduction aux bases de données

Les structures. Chapitre 3

Transcription:

Exercice 1 EXERCICES DIRIGES Synchronisation de processus CORRECTION Une seule écriture de nb_octets de données placées dans le tableau tampon est réalisée à la fois. Fonction ECRIRE_DISQUE (tampon, nb_octets) char tampon[] ; int nb_octets; objet verrou := libre; { Verrouiller (verrou) i = 0 ; Tant que (nb_octets > 0) Faire -- l écriture physique s effectue par blocs de 512 octets Ecrire_blocdisque (tampon[i, i + 512], 512) ; -- on écrit physiquement 512 octets nb_octets = nb_octets 512 ; -- on décrémente le nombre total d octets à écrire i = i + 512 ; -- on avance l index dans le tableau des octets à écrire Fait Deverrouiller (verrou) Return ; } Question 3 La section critique peut être réalisée en masquant et démasquant les interruptions. On identifie un schéma producteur/consommateur sur le tampon. On utilise un couple de sémaphores : NVIDE initialisé à N et NPLEIN initialisé à 0 (tampon avis) 1

Processus principal déclarations globales : avis : tampon (0..N-1) de messages; N entier; NVIDE, NPLEIN : sémaphores; INIT(NPLEIN, 0); INIT (NVIDE, N); lancer thread_exécution; lancer thread_impression; attendre mes fils n thread exécution (requete) thread imprimeur i : index depot avis res : message; i = 0; exécuter_travail(requete, res); P(NVIDE); avis(i) = res; i = i + 1 mod N; V(NPLEIN); ; j : index retrait avis mess : message; j = 0; P(NPLEIN); mess = avis(j); j = j + 1 mod N; V(NVIDE); imprimer_resultat(mess); ; Il faut maintenant gérer les accès concurrents au tampon avis e. En effet : - les différents threads exécution se partagent l'index i - les différents threads Impression se partagent l'index j les variables i, j, sont maintenant globales et les accès à ces variables doivent se faire en exclusion mutuelle. On ajoute donc deux sémaphores d'exclusion mutuelle initailisés à 1 (un sémaphore par index). 2

Processus principal déclarations globales : avis : tampon (0..N-1) de messages; N entier; NVIDE, NPLEIN, MUTI, MUTJ : sémaphores; i : index depot avis j : index retrait avis INIT(NPLEIN, 0); INIT (NVIDE, N); INIT (MUTI, 1); INIT (MUTJ,1); lancer thread_exécution; lancer thread_impression; attendre mes fils n thread exécution (requete) thread imprimeur res : message; exécuter_travail(requete, res); P(MUTI) ; P(NVIDE); avis(i) = res; i = i + 1 mod N; V(NPLEIN); V(MUTI) ; ; mess : message; P(MUTJ) ; P(NPLEIN); mess = avis(j); j = j + 1 mod N; V(NVIDE); V(MUTJ) ; imprimer_resultat(mess); ; remarque : l'ordre d'appel des sémaphores d'exclusion mutuelle par rapport à ceux du schéma producteur consommateur n' pas d'importance. L'interblocage est une situation où un ensemble de processus sont bloqués en attente d'une ressource possédée par un autre processus de l'ensemble. Chacun attend qu'un autre veuille bien libérer la ressource qu'il attend. Ceci ne peut se faire sans une intervention extérieure, puisqu'ils sont tous bloqués. Or on ne peut débloquer un processus qu'en lui donnant toutes les ressources nécessaires, et donc en réquisitionnant celle qu'il attend et qui est possédée par un autre processus de l'ensemble. Dans la solution proposée, on peut imaginer que le processus employé réserve le fichier COM et commence à saisir la commande. A ce moment le processus de facturation est activé, et réserve l'imprimante, puis se bloque en attente du fichier COM. Lorsque l'employé a terminé la saisie, il réserve l'imprimante, mais comme celle-ci est déjà réservée par le processus de 3

facturation, il se bloque en attente de la libération. Nous avons alors deux processus qui attendent mutuellement la libération d'une ressource possédée par un autre processus de l'ensemble : ces deux processus sont en interblocage. Pour ne plus avoir d'interblocage, une des solutions est de réserver les ressources dans le même ordre, puisque, dans ce cas, il ne peut plus y avoir de circularité dans les attentes de ressources. Dans le processus de facturation, il faut donc réserver le fichier COM en premier. processus facturation; début répéter indéiment réserver (COM); réserver (IMP); tant qu'il y a des commandes à facturer dans COM faire lire la prochaine commande dans COM; éditer la facture correspondante sur IMP; fait; libérer(imp); libérer(com); attendre la prochaine période de facturation; fait; ; Traduisez les opérations INIT (MutexR1, 1) ; Prendre (R1) P (MutexR1) ; ; Rendre (R1) V (MutexR1) 4

Du fait du conflit de ressources entre R1 et R2, le processus P2, plus prioritaire des trois processus est retardé. C est un processus de priorité intermédiaire P3, qui prend la main. 5