Projet du cours d ARCHITECTURE Gestion distribué d un parking

Dimension: px
Commencer à balayer dès la page:

Download "Projet du cours d ARCHITECTURE Gestion distribué d un parking"

Transcription

1 Projet du cours d ARCHITECTURE Gestion distribué d un parking 3 GI, INSA de Lyon Janvier Objectifs du projet Ce projet a pour but d apprendre à manipuler une application multitâche où les différentes tâches partagent des données. Pour ceci nous utiliserons des processus et comme outils de synchronisation des sémaphores et la mémoire partagée. Les notions de processus, de sémaphore et de mémoire partagée sont définies dans la première partie ainsi que leur manipulation dans l environnement de travail Linux. Ce projet consiste en la gestion d un parking qui a un nombre limité de place. L objectif est de ne pas faire rentrer plus de voitures qu il n y a de places et de ne pas faire attendre des voitures alors qu il y a des places libres dans le parking. On décompose ce problème en plusieurs étapes : gestion d un parking avec 1 seule entrée et 1 seule sortie, puis on rajoute 1 autre entrée et enfin on suppose que le parking a n entrées et m sorties. Ce projet fera l objet d un compte rendu écrit. 2 Gestion des processus Un processus décrit un chemin d exécution. Pour nombre d applications, un processus principal est le seul requis. Cependant, une application peut créer des processus additionnels pour faciliter le travail ou pour augmenter la vitesse de calcul (si possible). La création de processus additionnels vise à exploiter au maximum le temps de traitement du processeur. Les fichiers suivants sont à inclure : #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <errno.h> #include <string.h> 2.1 Création d un processus Sous Linux, chaque processus est identifié par un identificateur de processus (PID, angl. process identifier) de type pid t. La création d un nouveau processus se fait à l aide de la fonction fork() avec le prototype suivant : pid_t fork(void); 1

2 Après l exécution de la fonction, deux processus contenant le même code sont exécutés par la machine. La distinction entre le deux se fait via les valeurs renvoyées par la fonction fork() : En cas de succès, le PID du fils est renvoyé au processus parent, et 0 est renvoyé au processus fils. En cas d échec -1 est renvoyé dans le contexte du parent, aucun processus fils n est créé, et errno contient le code d erreur (Voir man fork pour plus de détails). L exemple suivant illustre l utilisation : pid_t childpid; /* Création du processus */ childpid = fork (); if (childpid==-1) { fprintf (stderr, "Cannot fork: %s\n", strerror(errno)); if (childpid==0) { /* Code pour le processus enfant ici */... else { /* Code pour le processus parent ici */ Attendre la fin d un processus Dans le cas général, le processus parent doit attendre la fin de ses processus enfants avant de terminer son exécution. Ceci peut être réalisé à l aide de la fonction wait() : pid_t wait(int *status); La fonction wait() suspend l exécution du processus courant jusqu à ce qu un enfant se termine, ou jusqu à ce qu un signal à intercepter arrive. En cas de réussite, le PID du fils qui s est terminé est renvoyé, en cas d échec -1 est renvoyé et errno contient le code d erreur (Voir man 2 wait pour plus de détails). L exemple suivant illustre son utilisation dans le cas ou NUMBER OF CHILDREN processus enfants ont été créés : int status, nodeadchildren=0; pid_t pid; while (nodeadchildren<number_of_children) { 2

3 pid = wait(&status); if (pid>0) { /* Processus enfant a terminé */ ++nodeadchildren; else { /* Retour de wait() à cause d un signal: ignorer */ 3 Les sémaphores Les objets sémaphores du noyau sont utilisés pour compter les ressources. Ils offrent au processus la possibilité d enquêter sur le nombre de ressources disponibles. Si une ressource, ou plus, est disponible, le compte de ressources disponibles est décrémenté en conséquence. Les sémaphores exécutent cette tâche de vérification et de définition automatiquement. Les fichiers suivants sont à inclure : #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> 3.1 Création d un ou de plusieurs sémaphores Un ensemble de sémaphores est créé à l aide de la fonction semget() : int semget (key_t key, int nsems, int semflg); Cette fonction retourne l identificateur de l ensemble de sémaphores associés à la valeur cle key. Cette valeur peut être choisie par l utilisateur, qui doit s assurer que la valeur est unique. L argument nsems signifie le nombre de sémaphores à créer. L argument semflg spécifie les options et les permissions. #define SEMKEY /* à remplacer par une clef personelle */ int semid; semid = semget(semkey, 1, 0700 IPC_CREAT IPC_EXCL); if (semid<0) { fprintf (stderr, "Cannot create semaphore: %s\n", strerror(errno)); 3

4 3.2 Décrémentation d un sémaphore : P Les opérations sur un ou sur plusieurs sémaphores sont exécutées à l aide de la fonction semop() : int semop (int semid, struct sembuf *sops, unsigned nsops); Cette fonction effectue des opérations sur les membres sélectionnés de l ensemble de sémaphores identifié par semid. Chacun des nsops éléments dans le tableau pointé par sops indique une opération à effectuer sur un sémaphore en utilisant une structure struct sembuf définie comme suit : short sem_num; /* Numero du sémaphore (0=premier) */ short sem_op; /* Opération sur le sémaphore */ short sem_flg; /* Options pour l opération */ Si une seule opération est à exécuter, nsops sera donc 1. Le type d opération est signalé par sem op. Si sem op est inférieur à zéro, l opération correspond à une allocation de ressource, souvent appelée P en référence au mot néerlandais passeren (=passer) utilisé par l inventeur Dijsktra : Si la ressource est disponible (la valeur de la sémaphore est supérieure ou égale de la valeur absolue de sem op), la valeur absolue de sem op est soustraite de la valeur du sémaphore. Puis l appel système continue. Sinon le processus s endort jusqu à ce que la valeur du sémaphore devient supérieure ou égale à la valeur absolue de sem op, alors la valeur absolue de sem op est soustraite de la valeur du sémaphore. Puis l appel système continue. L exemple suivant montre la demande de 5 ressources d un sémaphore : struct sembuf op; op.sem_num=0; op.sem_op = -5; op.sem_flg = 0; if (semop(semid, &op, 1)<0) { fprintf (stderr, "Cannot P() on semphore: %s\n",strerror(errno)); 3.3 Incrémentation d un sémaphore : V Pour libérer un sémaphore, c.à.d. incrémenter son compte de ressources, appeler la fonction semop() avec un code d opération sem op positif. Ce même code indique de combien le sémaphore doit être libéré. La fonction est souvent appelée V en référence au mot néerlandais vrijgeven (=libérer) utilisé par l inventeur Dijsktra. Cette opération peut aussi être utilisée pour initialiser la valeur d un sémaphore. 4

5 3.4 Destruction d un sémaphore La destruction d un ou de plusieurs sémaphores ayant l identification semid se fait avec la fonction semctl() : /* Remove the semaphores */ if (semctl(semid, 0, IPC_RMID)<0) { fprintf (stderr, "Cannot remove semaphores: %s\n", strerror(errno)); 4 La mémoire partagée Sous Linux, les processus créés avec fork() ne partagent pas la même mémoire. Une variable globale définie dans le programme existe donc en plusieurs copies, une par processus. L échange de données entre les processusstrerror en utilisant la mémoire de type standard est impossible. C est pour cela que nous utiliserons la mémoire partagée (angl. shared memory ). Cette mémoire est alloué du système d exploitation (fonction shmget()) et ensuite attachée au processus (fonction shmat(). shmget() renvoie l identificateur du segment de mémoire partagée associé à la valeur de l argument clé. Cette valeur clé peut être choisie par l utilisateur, qui doit s assurer que la valeur est unique. Un nouveau segment mémoire, de taille SIZE, est créé. La fonction shmat() attache le segment de mémoire partagée identifié par shmid au segment de données du processus appelant. Après un fork() le fils hérite des segments de mémoire partagée. Les fichiers suivants sont à inclure : #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> L exemple suivant montre l allocation d un tableau de type unsigned int de taille SIZE éléments : #define SHMKEY #define SIZE 1024 int shmid; unsigned int *sharedmemory; /* Create the shared memory */ shmid = shmget (SHMKEY, SIZE*sizeof(unsigned int), 0700 IPC_CREAT IPC_EXCL); if (shmid<0) { fprintf (stderr, "Cannot create shared memory: %s\n", strerror(errno)); 5

6 /* Attach the shared memory */ sharedmemory = shmat (shmid, NULL, 0); if ((int)sharedmemory==-1) { fprintf (stderr, "Cannot attach shared memory: %s\n", strerror(errno)); 4.1 Libérer la mémoire La mémoire partagée est libérée à l aide de la fonction semctl() : /* Remove the shared memory */ if (shmctl(shmid, IPC_RMID, NULL)<0) { fprintf (stderr, "Cannot remove shared memory: %s\n", strerror(errno)); 5 Gestion interactive des ressources Les sémaphores et la mémoire partagée persistent dans la mémoire de la machine après la fin du programme, si leur déstruction n est pas prévue par le programmeur. La commande ipcs (à utiliser dans un terminal) fournit des informations sur l usage des ressources (sémaphore, mémoire partagés) pour lesquelles le processus appelant a accès en lecture. Enfin, ipcrm détruira la ressource spécifiée par son id, comme illustré par l exemple suivant : ipcs Afficher l état de la machine ipcrm sem 1321 Supprimer le sémaphore ayant l id 1321 ipcrm shm 1487 Supprimer la mémoire partagée ayant l id Gestion d un parking Comme nous l avons précisé au début de cet énoncé, on cherche à modéliser la gestion d un parking comportant un nombre de places limitées. 6.1 Exercice 1 - la gestion des places libres D abord nous nous limitons au cas où les entrés et les sorties ne sont pas gérées par le programme. Donc, la seule contrainte a respecter sera la disponibilité d une place dans le parking. Tous les sémaphores créés par le programme sont à supprimer avant la fin de son exécution. 6

7 La modélisation Une voiture sera représentée par un processus, qui, à sa création demande à rentrer dans le parking, y reste un temps aléatoire puis en sort et meurt. Le nombre de places dans le parking devient alors une ressource qu il faut manipuler avec des outils de synchronisation. Les constantes NO PLACES : NO CARS : Les fonctions à écrire Le nombre maximal de places dans le parking Le nombre de voitures qui circulent void carlife(int carid) ; Fonction de départ des processus : arrivée de la voiture dans le parking, puis entreée dans le parking, sortie du parking void enterparking(int carid) ; Une voiture entre dans le parking void leaveparking(int carid) ; Une voiture sort du parking int main (void) ; fonction principale du programme qui crée NO CARS processus Fonctions mises à disposition unsigned sleep (unsigned sec) ; long int random (void) ; void srandom (unsigned seed) ; Met en sommeil un processus pendant sec secondes renvoie un nombre aléatoire entre 0 et RAND MAX. A initialiser avec srandom(). utilise son argument comme graine pour engendrer une nouvelle séquence de nombres pseudoaléatoires qui seront fournis lors des appels à random(). 6.2 Exercice 2 - la gestion des entrées et des sorties On s intéresse ici au cas où le parking a 2 entrées et 2 sorties. Chaque entrée et chaque sortie peut être utilisée par une seule voiture à la fois. L utilisation d une entrée ou d une sortie dure 1 seconde, s il y a une place disponible dans le parking. S il n y a pas de place libre dans le parking, la voiture attendra dans l entrée en le bloquant. Les entrées et les sorties sont donc des ressources additionnelles qu il faut manipuler avec des outils de synchronisation. Les constantes NO ENTRIES : Le nombre d entrées (=2) NO EXITS : Le nombre de sorties (=2) 7

8 6.3 Exercice 3 - La gestion d un tableau de voitures Dans cet exercice nous rajoutons un moyen d accéder aux numéros des voitures dans le parking. Un tableau contenant ces numéros est créé. Après l entrée ou la sortie d une voiture, le tableau est mis à jour. Par conséquent, le tableau doit être accessible par tous les processus. Le contenu du parking est à afficher après chaque entrée et chaque sortie d une voiture. 8

Programmation système

Programmation système Programmation système Christine Solnon Table des matières 1 Les processus 2 1.1 Etats d un processus................................... 2 1.2 Descripteur d un processus (PCB)...........................

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

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

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN

Plus en détail

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

Chapitre 2. Les processus. 2.1 Introduction. 2.2 les différents états d un processus Chapitre 2 Les processus 2.1 Introduction Le processus est un concept clé dans un système d exploitation. Un processus est un programme en cours d exécution. C est-à-dire, un programme à l état actif.

Plus en détail

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

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

Programmation système en C/C++

Programmation système en C/C++ Programmation système en C/C++ Jean-Baptiste Vioix (jb.vioix@free.fr) LE2I - ENESAD http://jb.vioix.free.fr 1-41 Programmation en C/C++ sous Unix Il existe des très nombreux outils de développement sous

Plus en détail

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

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique. École Polytechnique de Montréal Département de Génie Informatique et Génie Logiciel Cours INF2610 Contrôle périodique Automne 2013 Date : 11 octobre 2013 de 18h à 20h Professeur : Boucheneb Hanifa Documentation

Plus en détail

Introduction aux Systèmes et aux Réseaux

Introduction aux Systèmes et aux Réseaux Introduction aux Systèmes et aux Réseaux Cours 5 Processus D après un cours de Julien Forget (univ Lille1) Laure Gonnord http://laure.gonnord.org/pro/teaching/ Laure.Gonnord@univ-lyon1.fr Master CCI -

Plus en détail

Cours 6 : Tubes anonymes et nommés

Cours 6 : Tubes anonymes et nommés Cours 6 : Tubes anonymes et nommés Mécanisme de communications du système de fichiers I-node associé. Type de fichier: S_IFIFO. Accès au travers des primitives read et write. Les tubes sont unidirectionnels

Plus en détail

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

1 Mesure de la performance d un système temps réel : la gigue TP TR ENSPS et MSTER 1 Travaux Pratiques Systèmes temps réel et embarqués ENSPS ISV et Master TP1 - Ordonnancement et communication inter-processus (IPC) Environnement de travail Un ordinateur dual-core

Plus en détail

Programmation système de commandes en C

Programmation système de commandes en C Programmation système de commandes en C Cours de Programmation système Tuyêt Trâm DANG NGOC Université de Cergy-Pontoise 2012 2013 Tuyêt Trâm DANG NGOC Programmation système de commandes

Plus en détail

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

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique Communications entre Processus Communication par tubes. TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique Exemple 1: On a deux processus Père/Fils. Le père

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Programmation impérative

Programmation impérative Programmation impérative Cours 4 : Manipulation des fichiers en C Catalin Dima Organisation des fichiers Qqs caractéristiques des fichiers : Nom (+ extension). Chemin d accès absolu = suite des noms des

Plus en détail

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

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran)  Processus = suite d'actions = suite d'états obtenus = trace Processus 1) Contexte 2) Modèles de Notion de Points de vue Modèle fourni par le SX Opérations sur les 3) Gestion des Représentation des Opérations 4) Ordonnancement des Niveaux d ordonnancement Ordonnancement

Plus en détail

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

Plus en détail

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

3IS - Système d'exploitation linux - Programmation système 3IS - Système d'exploitation linux - Programmation système 2010 David Picard Contributions de : Arnaud Revel, Mickaël Maillard picard@ensea.fr Environnement Les programmes peuvent être exécutés dans des

Plus en détail

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

Exécutif temps réel Pierre-Yves Duval (cppm) Exécutif temps réel Pierre-Yves Duval (cppm) Ecole d informatique temps réel - La Londes les Maures 7-11 Octobre 2002 Plan Exécutif Tâches Evénements et synchronisation Partage de ressources Communications

Plus en détail

REALISATION d'un. ORDONNANCEUR à ECHEANCES

REALISATION d'un. ORDONNANCEUR à ECHEANCES REALISATION d'un ORDONNANCEUR à ECHEANCES I- PRÉSENTATION... 3 II. DESCRIPTION DU NOYAU ORIGINEL... 4 II.1- ARCHITECTURE... 4 II.2 - SERVICES... 4 III. IMPLÉMENTATION DE L'ORDONNANCEUR À ÉCHÉANCES... 6

Plus en détail

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Introduction à la programmation concurrente

Introduction à la programmation concurrente Introduction à la programmation concurrente Moniteurs Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud This work is licensed under

Plus en détail

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr 4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr Le problème Insuffisance des solutions de base (verrous) Les solutions de plus haut niveau Les Sémaphores Les Moniteurs

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Le système de gestion des fichiers, les entrées/sorties.

Le système de gestion des fichiers, les entrées/sorties. Le système de gestion des fichiers, les entrées/sorties. Luigi Santocanale Laboratoire d Informatique Fondamentale, Centre de Mathématiques et Informatique, 39, rue Joliot-Curie - F-13453 Marseille 19

Plus en détail

Les processus. Système L3, 2014-2015 1/39

Les processus. Système L3, 2014-2015 1/39 Les processus Système L3, 2014-2015 1/39 Les processus Processus = Instance d un programme en cours d exécution plusieurs exécutions de programmes plusieurs exécutions d un même programme plusieurs exécutions

Plus en détail

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

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Programmation système I Les entrées/sorties

Programmation système I Les entrées/sorties Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les

Plus en détail

Problèmes liés à la concurrence

Problèmes liés à la concurrence ENS Cachan Problématique Difficile de gérer la concurrence : Pas toujours facile d avoir des fonctions réentrantes. Risque de race condition : ex : x :=x+1 x :=x+1 On voudrait des blocs d instructions

Plus en détail

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

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

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

TD2/TME2 : Ordonnanceur et Threads (POSIX et fair) UE PC2R page 1/8 TD2/TME2 : Ordonnanceur et Threads (POSIX et fair) Exercice 1 (Modélisation) Chemin de Fer Cet exercice est dédié à l étude d un problème de circulation de trains : Voie! out1 in1 Voie!

Plus en détail

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

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

Plus en détail

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7 Cahier des charges driver WIFI pour chipset Ralink RT2571W sur hardware ARM7 RevA 13/03/2006 Création du document Sylvain Huet RevB 16/03/2006 Fusion des fonctions ARP et IP. SH Modification des milestones

Plus en détail

Unix : Programmation Système

Unix : Programmation Système Département Informatique Année Universitaire 2004/2005 1 Compilation et programmation...6 1.1 Préparation du fichier source...6 1.1.1 L'éditeur vi (mode console)...6 1.1.2 L'éditeur nedit ou xedit (sous

Plus en détail

Le traitement du temps

Le traitement du temps Programmation Système Mesure Horloges Sommeil Mise en forme Fabrice Harrouet École Nationale d Ingénieurs de Brest harrouet@enib.fr http://www.enib.fr/~harrouet/ enib, F.H... 1/30 Intérêt Cadencer les

Plus en détail

OS Réseaux et Programmation Système - C5

OS Réseaux et Programmation Système - C5 OS Réseaux et Programmation Système - C5 Rabie Ben Atitallah rabie.benatitallah@univ-valenciennes.fr RPC - XDR Rappel RPC: Remote Procedure Call Besoin d un environnement de haut niveau pour le développement

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

Chapitre 2. Classes et objets

Chapitre 2. Classes et objets Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons

Plus en détail

Les processus légers : threads. Système L3, 2014-2015 1/31

Les processus légers : threads. Système L3, 2014-2015 1/31 Les processus légers : threads Système L3, 2014-2015 1/31 Les threads Les threads sont des processus légers exécutés à l intérieur d un processus L exécution des threads est concurrente Il existe toujours

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

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

Métriques de performance pour les algorithmes et programmes parallèles Métriques de performance pour les algorithmes et programmes parallèles 11 18 nov. 2002 Cette section est basée tout d abord sur la référence suivante (manuel suggéré mais non obligatoire) : R. Miller and

Plus en détail

Les structures. Chapitre 3

Les structures. Chapitre 3 Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

Gestion des processus

Gestion des processus 65 La Gestion des Processus 1 Définitions, exemples 2. Politiques d'allocation du processeur 3. Synchronisation des processus 66 Programme : Un programme est une suite figée d'instructions, un ensemble

Plus en détail

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables

Plus en détail

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

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

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

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

Travaux Dirigés n 1 : chaînes de caractères

Travaux Dirigés n 1 : chaînes de caractères UE LE315 Travaux Dirigés n 1 : chaînes de caractères Exercice 1 Ecrire une fonction int nombre_caract(char *chaîne) qui retourne la taille d une chaîne de caractères. Exercice 2 Ecrire la fonction void

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

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

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,

Plus en détail

Les arbres binaires de recherche

Les arbres binaires de recherche Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

1 Position du problème

1 Position du problème Licence Science et Technologies - INF245 Examen session 1 - mai 2012 Durée : 2 heures Documents non autorisés Le barème est donné à titre indicatif 1 Position du problème Le Club Universitaire de Vélo

Plus en détail

GESTION DES FICHIERS C/UNIX

GESTION DES FICHIERS C/UNIX Licence IG Page 1 sur 6 GESTION DES FICHIERS C/UNIX Introduction Deux modes d appel - Par la bibliothèque standard C (appel de haut niveau) - Par appels système (bas niveau) Nécessite les includes suivant

Plus en détail

Systèmes d exploitation Gestion de processus

Systèmes d exploitation Gestion de processus Systèmes d exploitation Gestion de processus SITE : http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation - Mírian Halfeld-Ferrari p. 1/5 Les processus, à quoi ça sert? À faire plusieurs

Plus en détail

Claude Delannoy. 3 e édition C++

Claude Delannoy. 3 e édition C++ Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.

Plus en détail

Cours de Système : Gestion de Fichiers

Cours de Système : Gestion de Fichiers Cours de Système : Gestion de Fichiers Bertrand Le cun et Emmanuel Hyon bertrand.le cun{at}u-paris10.fr et Emmanuel.Hyon{at}u-paris10.fr Université Paris Ouest Nanterre 25 octobre 2011 B.L.C. & E.H. (UPO)

Plus en détail

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

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers. I Présentation : Dans le chapitre 1, nous avons vu comment utiliser les appels-systèmes de bas niveau pour créer et accéder à des fichiers sur le disque. Nous avons notamment mis en évidence leur dépouillement

Plus en détail

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

LEs processus coopèrent souvent pour traiter un même problème. Ces Chapitre 5 Communication interprocessus LEs processus coopèrent souvent pour traiter un même problème. Ces processus s exécutent en parallèle sur un même ordinateur (monoprocesseur ou multiprocesseurs)

Plus en détail

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

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

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

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 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 des objets d'une classe Utilisation d'une classe Droit

Plus en détail

gestion des processus La gestion des processus

gestion des processus La gestion des processus 1 La Pseudo parallélisme 2 Plusieurs programmes en mémoire Le processeur exécute les instructions tantôt pour l'un tantôt pour l'autre P1 P2 programme de supervision Vu de l'utilisateur => programmes en

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

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)

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) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Communication Interprocessus

Communication Interprocessus Communication Interprocessus Introduction Segments de données et fichiers communs Les signaux Les tubes de communication d UNIX Tubes anonymes Tubes nommés Les tubes de communication de Windows Tubes anonymes

Plus en détail

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai. Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai. 1 Introduction On considère une grille de 20 lignes 20 colonnes. Une case de la grille peut être vide, ou contenir une et une

Plus en détail

Simulation d un système de paiement par carte bancaire

Simulation d un système de paiement par carte bancaire Simulation d un système de paiement par carte bancaire Mini projet IN301/IN3ST01-2009-2010 Sujet rédigé par Jean Cousty et Laurent Najman, très librement inspiré d un projet de Jérome Gueydan pour l ENSTA

Plus en détail

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

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

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

TP3 : Manipulation et implantation de systèmes de fichiers 1 École Normale Supérieure Systèmes et réseaux Année 2012-2013 TP3 : Manipulation et implantation de systèmes de fichiers 1 1 Répertoire de travail courant Le but de l exercice est d écrire une commande

Plus en détail

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

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; }; #include #include struct cell int clef; struct cell suiv; ; / longueur. pc->suiv est l abréviation de (pc).suiv. pour cette fonction comme pour les suivantes, on donne, lorsqu il existe

Plus en détail

Threads. Threads. USTL http://www.lifl.fr/ routier 1

Threads. Threads. USTL http://www.lifl.fr/ routier 1 Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Compression de Données - Algorithme de Huffman Document de Conception

Compression de Données - Algorithme de Huffman Document de Conception ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs

Plus en détail

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

DAns un système multi-utilisateurs à temps partagé, plusieurs processus Chapitre 8 Ordonnancement des processus Dns un système multi-utilisateurs à temps partagé, plusieurs processus peuvent être présents en mémoire centrale en attente d exécution. Si plusieurs processus sont

Plus en détail

Playing with ptrace() for fun and profit

Playing with ptrace() for fun and profit sous GNU/Linux nicolas.bareil@eads.net EADS Corporate Research Center - DCR/STI/C SSI Lab SSTIC 2006 Il était une fois... Sous UNIX, ptrace() est le seul moyen de debuggage. User-space, Interface rigide

Plus en détail

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

Exercices INF5171 : série #3 (Automne 2012) Exercices INF5171 : série #3 (Automne 2012) 1. Un moniteur pour gérer des ressources Le moniteur MPD 1 présente une première version d'un moniteur, exprimé en pseudo-mpd, pour gérer des ressources le nombre

Plus en détail

PHP 4 PARTIE : BASE DE DONNEES

PHP 4 PARTIE : BASE DE DONNEES PHP 4 PARTIE : BASE DE DONNEES 1. Introduction 2. Présentation de MySQL 3. Principe 4. Connexion 5. Interrogation 6. Extraction des données 7. Fonctions de services 8. Traitement des erreurs 9. Travaux

Plus en détail

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

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

Les fichiers. Chapitre 4

Les fichiers. Chapitre 4 Chapitre 4 Les fichiers Jusqu à maintenant tous les programmes que nous avons conçus travaillaient sur des données qui étaient perdues après chaque session de travail. On peut cependant, c est bien naturel,

Plus en détail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

Plus en détail

Cours de C. Allocation dynamique. Sébastien Paumier

Cours de C. Allocation dynamique. Sébastien Paumier Cours de C Allocation dynamique Sébastien Paumier paumier@univ-mlv.fr Illustrations provenant du site http://tux.crystalxp.net/ 1 Les pointeurs pointeur=adresse mémoire+type type* nom; nom pointe sur une

Plus en détail

PROJET ALGORITHMIQUE ET PROGRAMMATION II

PROJET ALGORITHMIQUE ET PROGRAMMATION II PROJET 1 ALGORITHMIQUE ET PROGRAMMATION II CONTENU DU RAPPORT A RENDRE : o Fiche signalétique du binôme o Listing des différents fichiers sources o CD sources o Il sera tenu compte de la présentation du

Plus en détail

1.6- Génération de nombres aléatoires

1.6- Génération de nombres aléatoires 1.6- Génération de nombres aléatoires 1- Le générateur aléatoire disponible en C++ 2 Création d'un générateur aléatoire uniforme sur un intervalle 3- Génération de valeurs aléatoires selon une loi normale

Plus en détail

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

<Insert Picture Here> Solaris pour la base de donnés Oracle Solaris pour la base de donnés Oracle Alain Chéreau Oracle Solution Center Agenda Compilateurs Mémoire pour la SGA Parallélisme RAC Flash Cache Compilateurs

Plus en détail

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Analyse de sécurité de logiciels système par typage statique

Analyse de sécurité de logiciels système par typage statique Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction

Plus en détail

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

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données EARTH et Threaded-C: Éléments clés du manuel de références de Threaded-C Bref historique de EARTH et Threaded-C Ancêtres de l architecture EARTH: Slide 1 Machine à flux de données statique de J.B. Dennis

Plus en détail

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

IFT2245 - Systèmes d exploitation - TP n 1-20% IFT2245 - Systèmes d exploitation - TP n 1-20% DIRO - Université de Montréal Nicolas Rous et Dorian Gomez Disponible : 14/02/2013 - Remise : 28/03/2013 au début de la démo LISEZ TOUT LE DOCUMENT AVANT

Plus en détail

Dynamic Host Configuration Protocol

Dynamic Host Configuration Protocol Dynamic Host Configuration Protocol 1 2 problèmes de gestion avec IP La Gestion des adresses IP Les adresses IP doivent être unique Nécessité d une liste d ordinateurs avec leurs adresses IP respectives

Plus en détail

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

On appelle variable condition une var qui peut être testée et Un concept plus général: g Variables condition On appelle variable condition une var qui peut être testée et endort le thread qui la teste si la condition est fausse le réveille quand la condition devient

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail