École Polytechnique de Montréal. Département de Génie Informatique. Cours INF3600 : Systèmes d exploitation. Contrôle périodique Automne 2001



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

Introduction aux Systèmes et aux Réseaux

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

Cours Programmation Système

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

Cours de Systèmes d Exploitation

Partie 7 : Gestion de la mémoire

Programmation système en C/C++

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

Cours A7 : Temps Réel

Introduction à la programmation concurrente

REALISATION d'un. ORDONNANCEUR à ECHEANCES

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

DAns un système multi-utilisateurs à temps partagé, plusieurs processus

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

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

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

Qu'est-ce qu'un processus: Définitions

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

Problèmes liés à la concurrence

Chapitre 4 : Outils de communication centralisés entre processus

Systèmes d exploitation Gestion de processus

Gestion des processus

Initiation au HPC - Généralités

Ordonnancement temps réel

Un ordonnanceur stupide

Cours 6 : Tubes anonymes et nommés

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

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

Synchro et Threads Java TM

Cours de Génie Logiciel

Le langage C. Séance n 4

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

Introduction à la Programmation Parallèle: MPI

Simulation d un système de paiement par carte bancaire

CH.3 SYSTÈMES D'EXPLOITATION

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

Les structures de données. Rajae El Ouazzani

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

Chapitre 4 : Exclusion mutuelle

gestion des processus La gestion des processus

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

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

L exclusion mutuelle distribuée

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


LEs processus coopèrent souvent pour traiter un même problème. Ces

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Ordonnancement temps réel

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Programmation d Applications Concurrentes et Distribuées (INF431)

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

Support de cours système d exploitation

Algorithmique et Programmation, IMA

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

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

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

GESTION DES FICHIERS C/UNIX

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

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Genie Logiciel Avancé Projet :Gestion d une chaîne hotelier low cost

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)

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Architecture des ordinateurs

Introduction : les processus. Introduction : les threads. Plan

Pré-conditions : Evénement déclencheur : le client souhaite un virement. Description du déroulement du cas : Description des Use cases

Linux embarqué Retour d expérience et temps réel. Denis Coupvent-Desgraviers

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Recherche dans un tableau

SYSTÈME DE GESTION DE FICHIERS

Structure fonctionnelle d un SGBD

Université de Sherbrooke, Département d informatique

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

NOTICE D INSTALLATION

UTILISER LA MESSAGERIE

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

Virtualisation logicielle De la machine réelle à la machine virtuelle abstraite

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Conventions d écriture et outils de mise au point

LOG4430 : Architecture et conception avancée

Solutions du chapitre 4

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Cours de Système : Gestion de Fichiers

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

Les arbres binaires de recherche

Notions fondamentales du langage C# Version 1.0

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

Canevas théoriques du projet sur le poker Partie A

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

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

TP3 : Manipulation et implantation de systèmes de fichiers 1

Twincat PLC Temperature Controller. Régulation de Température à l aide de TwinCAT PLC.

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

Programmation système

Transcription:

École Polytechnique de Montréal Département de Génie Informatique Cours INF3600 : Systèmes d exploitation Contrôle périodique Automne 2001 Date : 1 er novembre 2001 de 18h à 20h Professeurs : Kerly Titus, Hanifa Boucheneb Documentation : Notes + livre du cours Pondération : 30 % Nombre de questions : 3 Total : 20 points Question 1 : (6 pts) Création de processus (appels système d UNIX) 1) Dans le cas d UNIX, la création de processus est réalisée par duplication. a) Citez un avantage et un inconvénient. (1 pt) b) Citez en deux ou trois lignes les avantages des processus légers (threads) par rapport aux processus. (1 pt) a) Facilite la duplication des processus exécutant un même programme. Complique la création des processus exécutant des programmes différents. b) Meilleur partage des ressources Gain en temps et en espace Meilleur réactivité 2) Considérez un fichier nommé COURS. Pour accélérer la recherche du mot INF3600 dans le fichier COURS, le processus de départ crée quatre processus. Chaque processus fils créé effectue la recherche dans une des quatre parties du fichier en appelant la fonction Recherche suivante : bool Recherche (char * Fichier, char * Mot, int Partie) où : - Fichier est le nom du fichier, c'est-à-dire COURS, - Mot est le mot recherché, c'est-à-dire INF3600 et - Partie est la partie 1, 2, 3 ou 4 du fichier. Cette fonction retourne 1 en cas de succès et 0 sinon. Au retour de la fonction Recherche, le processus fils transmet, en utilisant l appel système exit, au processus père le résultat de la recherche (exit(0)

en cas de succès, exit(1) en cas d échec). Lorsque le processus père est informé du succès de l un de ses fils, il tue tous les autres fils. a) Ecrivez un programme C/C++ qui réalise le traitement ci-dessus. (4 pts) Attention : n écrivez pas le code de la fonction Recherche. int main ( ) { int pid[4], status, x; for (int i=0; i<4; i++) { // creation du (i+1) ième fils if ((pid[i] = fork() ) == 0) if( Recherche( COURS, INF3600, i+1 ) exit(0); else exit(1); while ((x=wait(&status))>0) if ( status>>8 ==0) { for(i=0;i<4 ; i++) if(pid[i]!=x) kill (pid[i], SIGKILL); exit(0); ; exit(1); Question 2 : Ordonnancement des processus (6 pts) Considérez un système d exploitation qui ordonnance les processus selon l algorithme du tourniquet. La file des processus prêts contient des pointeurs vers les entrées de la table des processus (les descripteurs des processus). 1) Citez deux problèmes qui peuvent survenir si la file contient des éléments identiques (deux ou plusieurs pointeurs égaux). (2 pts) Il existe, dans la file des processus prêts, un pointeur sur un processus déjà terminé. Il existe, dans la file des processus prêts, un pointeur sur un processus bloqué. 2) Supposez que le système d exploitation est composé de deux unités de contrôle (deux processeurs CPU1 et CPU2) et d une unité d E/S. Chaque processeur exécute l algorithme du tourniquet avec un quantum de trois unités de temps (qt = 3). Tous les processus prêts sont dans une même file d attente. La commutation de contexte est supposée de durée nulle. Considérez trois processus A, B et C décrits dans le tableau suivant : Processus Instant d arrivée Temps d exécution

A 0 4 unités de CPU, 2 unités d E/S, 2 unités de CPU B 2 3 unités de CPU, 4 unités d E/S, 2 unités de CPU C 3.5 5 unités de CPU La première ligne signifie que le processus A arrive dans le système à l instant 0, son exécution nécessite dans l ordre 4 unités de temps CPU, 2 unités de temps d E/S et 2 unités de temps CPU. Au départ le processus A est élu par le processeur CPU1. Si plusieurs événements surviennent en même temps, vous supposerez les priorités suivantes : - Le CPU1 a la priorité d accès à la file des processus prêts par rapport au CPU2. - A la fin d un quantum, le processus non terminé en cours est suspendu uniquement si la file des processus prêts n est pas vide. Le traitement réalisé à la fin d un quantum est plus prioritaire que celui d une fin d E/S qui, à son tour, est plus prioritaire que l arrivée de nouveaux processus dans le système. a) Donnez les diagrammes de Gantt montrant l allocation des deux processeurs, de l unité d E/S et l évolution des états des files d attente (celle des processus prêts et celle des processus en attente de l unité d E/S) (3 pts). CPU1 :(0,A,4) (4,C,7) (7,C,9) (10,B,12) CPU2 : (2,B,5) (6,A,8) File : (3.5,C)(4,vide) E/S : (4,A,6) (6,B,10) File E/S : (5,B) (6,vide) b) Calculez le temps moyen de virement (temps moyen de séjour) (1 pt). TVM = (8+(12-2) + (9-3.5))/3 = 7.8 Question 3 : Synchronisation de processus (8 pts) Considérez un système multicouche composé de trois couches P0, P1 et P2. Les couches sont des processus concurrents qui communiquent au moyen de deux tampons T0 et T1 de même taille N : - P0 et P1 partagent le tampon T0 et - P1 et P2 partagent le tampon T1. Chaque couche se charge d un traitement particulier :

- Le processus P0 se charge de lire du clavier des messages qu il traite avant de les déposer dans le tampon T0. Le traitement d un message par la couche P1 consiste à l encrypter. Il est réalisé par la fonction Encrypter suivante : Message Encrypter (Message); La fonction Message Lire (); permet de lire un message du clavier. - Le processus P1 se charge de transférer directement les messages du tampon T0 vers le tampon T1. - Le processus P2 récupère les messages du tampon T1 pour les envoyer à un destinataire. L envoi d un message est réalisé par la fonction Envoyer : Envoyer (Message ); Clavier P0 T0 P1 T1 P2 Envoyer(m) a) Expliquez comment les processus peuvent utiliser les sémaphores pour contrôler les accès aux tampons partagés (exclusion mutuelle, pas d interblocage) (2 pts). Les sémaphores : Mutex0 et mutex1 pour contrôler les accès aux tampons. Vide1, Vide0, Plein1 et Plein0 pour bloquer un processus si le tampon est vide ou plein. b) Donnez les pseudocodes des trois processus (6 pts). Semaphore mutex1=1, mutex0=1, Vide0=N, Vide1=N, Plein0 = 0, Plein1 = 0; P0 Message m, mc; int ip=0; { m= lire(); mc = Encrypter(m); P(Vide0);

P(mutex0); T0[ip] = mc; V(mutex0); ip = ip+1 mod(n) V(Plein0); P1 int icp=0; { P(Plein0); P(Vide1) P(mutex0); P(mutex1) T1[icp] = T0[icp]; V(mutex1); V(mutex0) icp = icp+1 mod(n) V(Plein1); V(Vide0); P2 Message mc; int ic=0; { P(Plein1) P(mutex1); mc = T1[ic]; V(mutex1); ic = ic+1 mod(n) V(Vide1); Envoyer(mc);