NFP Système d exploitation

Documents pareils
Cours Programmation Système

Introduction aux Systèmes et aux Réseaux

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

Chapitre 4 : Outils de communication centralisés entre processus

Cours 6 : Tubes anonymes et nommés

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

Les processus. Système L3, /39

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

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

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)

Programmation système en C/C++

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP


Cours 1 : La compilation

Introduction au langage C

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

Le prototype de la fonction main()

Java Licence Professionnelle CISII,

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

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

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

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Un ordonnanceur stupide

ACTIVITÉ DE PROGRAMMATION

OS Réseaux et Programmation Système - C5

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

Évaluation et implémentation des langages

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

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

Algorithmique et Programmation, IMA

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

Traduction des Langages : Le Compilateur Micro Java

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Introduction à la Programmation Parallèle: MPI

Les processus 2/54. Qu est-ce qu un processus? 3(6)/54. Se souvenir 1(1)/54. Le système de fichiers (exemple du disque dur)

Outils pour la pratique

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Gestion des processus

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

Programmation système

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Cours de Systèmes d Exploitation

Corrigés des premiers exercices sur les classes

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

Programmation système de commandes en C

Cours de Système : Gestion de Fichiers

Cours A7 : Temps Réel

Programmation Système (en C sous linux) Rémy Malgouyres LIMOS UMR 6158, IUT département info Université Clermont 1, B.P.

Problèmes liés à la concurrence

Initiation. àl algorithmique et à la programmation. en C

Projet gestion d'objets dupliqués

REALISATION d'un. ORDONNANCEUR à ECHEANCES

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

La technologie Java Card TM

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

Simulation d un système de paiement par carte bancaire

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

Compilation (INF 564)

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

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

Premiers Pas en Programmation Objet : les Classes et les Objets

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

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

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

IV- Comment fonctionne un ordinateur?

Playing with ptrace() for fun and profit

Introduction à la programmation concurrente

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

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

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

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

I00 Éléments d architecture

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

TP1. Outils Java Eléments de correction

Système et réseaux (SR1) Gestion des utilisateurs

Algorithmique I. Algorithmique I p.1/??

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

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

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

Conventions d écriture et outils de mise au point

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Programmer en JAVA. par Tama

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

I. Introduction aux fonctions : les fonctions standards

as Architecture des Systèmes d Information

Licence Sciences et Technologies Examen janvier 2010

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Environnements de développement (intégrés)

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Cours de Programmation 2

Serveurs de noms Protocoles HTTP et FTP

Architecture des ordinateurs

DUT Informatique Module Système S4 C Département Informatique 2009 / Travaux Pratiques n o 5 : Sockets Stream

Derrière toi Une machine virtuelle!

INITIATION AU LANGAGE JAVA

Les structures de données. Rajae El Ouazzani

Transcription:

NFP 136 - Système d exploitation Amélie Lambert 2014-2015 Amélie Lambert 2014-2015 1 / 53

Plan du cours 1 Système d exploitation : rôle et services 2 Notions de bases : appels système et interruptions 3 La chaîne de production de programme 4 Les processus 5 Création de processus 6 Ordonnancement du processeur Bibliographie : DELACROIX J. Cours CNAM NFA 003, NSY103 CAZES A. DELACROIX J. Architecture des machines et des Systèmes informatiques Dunod 2003 Amélie Lambert 2014-2015 2 / 53

1. Système d exploitation : rôle et services Amélie Lambert 2014-2015 3 / 53

Les différents niveaux de la machine informatique Une machine informatique est composée de trois couches : Le matériel hardware (la machine physique : processeur, mémoire centrale, périphériques, l ensemble communiquant par un bus) Le logiciel de système d exploitation (ensemble de programmes qui se place à l interface entre le matériel et les logiciels applicatifs) Les logiciels des utilisateurs software (programmes qui permettent à l utilisateur de réaliser des taches sur la machine). Amélie Lambert 2014-2015 4 / 53

Le rôle du système d exploitation Le système d exploitation est un ensemble de programmes qui réalisent l interface entre le matériel de l ordinateur et les utilisateurs. Il a deux objectifs principaux : la construction au dessus du matériel d une machine virtuelle plus facile d emploi et plus conviviale la prise en charge de la gestion de plus en plus complexe des ressources et partage de celle-ci Comme son nom le suggère, le SE a en charge l exploitation de la machine pour en faciliter l accès, le partage et pour l optimiser. Amélie Lambert 2014-2015 5 / 53

Le partage de la machine physique le processeur : qui s exécute? la mémoire centrale : protection SE/ Programmes Utilisateurs protection entre programmes Utilisateurs les périphériques Amélie Lambert 2014-2015 6 / 53

Faciliter la machine physique Amélie Lambert 2014-2015 7 / 53

les fonctions d un système d exploitation Amélie Lambert 2014-2015 8 / 53

2. Notions de bases : appels système et interruptions Amélie Lambert 2014-2015 9 / 53

Appels systèmes et commandes Les fonctionnalités du système d exploitation sont accessibles par le biais des commandes ou des appels système Amélie Lambert 2014-2015 10 / 53

Interpréteur de commandes Un interpréteur de commandes est un programme du système d exploitation. Son rôle est de traiter les commandes tapées au clavier par l utilisateur. TANT QUE l utilisateur ne ferme pas la session FAIRE Émettre un signe d invite Lire la ligne courante Exécuter la commande indiquée sur cette ligne FIN Amélie Lambert 2014-2015 11 / 53

Modes d exécutions Il existe deux modes d exécutions : Le mode utilisateur dans lequel s exécutent tous les programmes utilisateurs. Le mode superviseur dans lequel s exécutent les programmes plus sensibles du système d exploitation, notamment les appels systèmes ou les interruptions. Amélie Lambert 2014-2015 12 / 53

Réalisation d un appel système Les fonctions du système sont exécutées en mode superviseur. Le basculement du mode utilisateur au mode superviseur s effectue par la levée de l exception particulière Chaque fonction du système est connue au niveau du système d exploitation, par un numéro (exemple open, 5). Une table des appels système associe à chaque numéro de fonction, son adresse en mémoire centrale. Amélie Lambert 2014-2015 13 / 53

Réalisation d un appel système : Exemple Amélie Lambert 2014-2015 14 / 53

3. La chaîne de production de programmes Amélie Lambert 2014-2015 15 / 53

La chaîne de production de programmes Cette chaîne désigne l ensemble des étapes nécessaires à la construction d un programme exécutable à partir d un programme dit source : Compilation Édition des liens Chargement Amélie Lambert 2014-2015 16 / 53

Rôle d un ordinateur 1 J ai un problème à résoudre : Calculer le périmètre d un rectangle de longueur a et de largeur b. 2 J écris un algorithme : Perimetre := 2a + 2b 3 Grâce à un langage de programmation, je code la solution pour la faire exécuter par l ordinateur = Programme constitué d instruction : public static double perimetre (double a, double b){ double perimetre; perimetre = 2 a +2 b; return perimetre; } Amélie Lambert 2014-2015 17 / 53

Le codage d un problème public static double perimetre (double a, double b){ double perimetre; perimetre = 2 a +2 b; return perimetre; } Programme en langage de haut niveau : instructions de haut niveau Compilateur Programme à exécuter : instructions machine et valeurs en binaire Amélie Lambert 2014-2015 18 / 53

Le Rôle du compilateur Un compilateur traduit un programme source écrit en langage de haut niveau en un programme objet en langage de bas niveau. Le compilateur est lui-même un programme important et volumineux. Le travail du compilateur se divise en plusieurs phases : analyse lexicale (recherche des mots-clés) analyse syntaxique (vérification de la syntaxe) analyse sémantique (vérification de la sémantique) génération du code objet Amélie Lambert 2014-2015 19 / 53

Analyse lexicale, syntaxique et sémantique Rôle de l analyse lexicale : reconnaître dans la suite de caractères que constitue un programme les objets du langage éliminer le "superflu" (espaces, commentaires) Rôle de l analyse syntaxique : reconnaître si la suite de symboles issue de l analyse lexicale respecte la syntaxe du langage Rôle de l analyse sémantique : trouver le sens et la signification des différentes phrases du langage quels sont les objets manipulés et leurs propriétés? (type, durée de vie, taille, adresse,...) contrôler la cohérence dans l utilisation des objets. (erreur de type, absence de déclarations, déclarations multiples, déclarations inutiles, expressions incohérentes,...) Amélie Lambert 2014-2015 20 / 53

Table des symboles Le compilateur manipule une table des symboles qui contient toutes les informations sur les propriétés des objets du programme La table est construite durant les 3 phases d analyse lexicale, analyse syntaxique et analyse sémantique. Amélie Lambert 2014-2015 21 / 53

Génération du code La génération de code est l étape ultime de la compilation. Elle consiste à produire le code machine équivalent du code en langage haut niveau. Ce code machine est qualifié de relogeable car les adresses dans ce code sont calculées à partir de 0 Amélie Lambert 2014-2015 22 / 53

Édition de liens Le développement d un gros programme Amélie Lambert 2014-2015 23 / 53

Rôle de l éditeur de liens (1/3) Un éditeur de liens est un logiciel qui permet de combiner plusieurs modules objet obtenus par compilation séparée pour construire un seul programme exécutable modules objets utilisateur modules objets prédéfinis dans des bibliothèques (fonctions interfaces des appels systèmes, fonctions mathématiques, fonctions graphiques,...) Amélie Lambert 2014-2015 24 / 53

Rôle de l éditeur de liens (2/3) Un module comprend trois catégories d objets objet interne au module : inaccessible de l extérieur. objet exporté ou public : interne au module mais accessible de l extérieur. objet importé ou externe : n appartenant pas au module, mais utilisé par le module. Le compilateur recense dans chaque module les objets internes, exportés ou importés. Pour chaque objet rencontré, selon sa catégorie : si l objet est interne, il associe une adresse à l objet dans la table des symboles. si l objet est exporté, il lui associe une adresse à l objet dans la table des symboles et publie cette adresse sous forme d un lien utilisable. si l objet est importé, il ne connaît pas l adresse à l objet. Il demande à obtenir cette adresse sous forme d un lien à satisfaire. Amélie Lambert 2014-2015 25 / 53

Rôle de l éditeur de liens (3/3) Amélie Lambert 2014-2015 26 / 53

4. Les processus Amélie Lambert 2014-2015 27 / 53

Notion de processus Définitions d un processus : Un processus est un programme en cours d exécution auquel est associé un environnement processeur (CO, PSW, RSP, registres généraux) et un environnement mémoire appelés contexte du processus. Un processus est l instance dynamique d un programme et incarne le fil d exécution de celui-ci dans un espace d adressage protégé (objets propres : ensemble des instructions et données accessibles) Un programme réentrant est un programme pour lequel il peut exister plusieurs processus en même temps. Amélie Lambert 2014-2015 28 / 53

Du programme au processus Amélie Lambert 2014-2015 29 / 53

Système multiprocessus - États des processus Amélie Lambert 2014-2015 30 / 53

Bloc de contrôle du processus Amélie Lambert 2014-2015 31 / 53

Les processus Opérations sur les processus : Création, Terminaison normale ou erreur, Suspension, réveil. Coopération entre processus : Processus concurrents : indépendants ou coopérants. partage d information (exemple fichier partagé) et synchronisation (division d un programme en plusieurs tâches concurrentes) Communication entre processus : partage de mémoire et messages Amélie Lambert 2014-2015 32 / 53

5. Création de processus Amélie Lambert 2014-2015 33 / 53

Primitive de création de processus (1/6) #include <unistd.h> pid_t fork(void) La primitive fork() permet la création dynamique d un nouveau processus qui s exécute de manière concurrente avec le processus qui l a créé. Tout processus Unix/Linux hormis le processus 0 est crée à l aide de cette primitive. Le processus créateur (le père) par un appel à la primitive fork() crée un processus fils qui est une copie exacte de lui-même (code et données) (Exemple d utilisation : programmation d une application parallèle). Il est également possible de remplacer le code et les données du processus créé par ceux d un autre programme, via les primitives de recouvrement. Amélie Lambert 2014-2015 34 / 53

Primitive de création de processus (2/6) MODE UTILISATEUR PERE (pid :12222) main () { pid_t ret ; int i, j=0; for(i=0; i<8; i++) i = i + j; ret = fork(); } MODE SYSTEME Exécution de l appel système fork(). Si les ressources noyau sont disponibles : 1 allouer une entrée de la table des processus au nouveau processus 2 allouer un pid unique au nouveau processus 3 dupliquer le contexte du processus parent (code, données, pile) 4 retourner le pid du processus crée à son père et 0 au processus fils Rappel : un processus est identifié par un numéro unique appelé pid Amélie Lambert 2014-2015 35 / 53

Primitive de création de processus (3/6) MODE UTILISATEUR MODE SYSTEME PERE (pid :12222) main () { pid_t ret ; int i, j=0; for(i=0; i<8; i++) i = i + j; ret = fork(); // ret = 12223 } FILS (pid :12223) main () { pid_t ret ; int i, j=0; for(i=0; i<8; i++) i = i + j; ret = fork(); // ret = 0 } Lors de l exécution de l appel système fork(), si les ressources noyau sont disponibles, il est retourné : le pid du processus crée au processus père (ici 12223) ; la valeur 0 au processus fils. Amélie Lambert 2014-2015 36 / 53

Primitive de création de processus (4/6) Le mécanisme du copy on write (copie sur écriture) : Lors de sa création, le fils partage avec son père : le segment de code ; le segment de données et la pile sont également partagés et mis en accès lecture seule. Lors d un accès en écriture par l un des deux processus, le segment de données ou la pile sont effectivement dupliqués. Amélie Lambert 2014-2015 37 / 53

Primitive de création de processus (5/6) PERE (pid :12222) main () { pid_t ret ; int i, j=0; for(i=0; i<8; i++) i = i + j; ret = fork(); // ret = 12223 } FILS (pid :12223) main () { pid_t ret ; int i, j=0; for(i=0; i<8; i++) i = i + j; ret = fork(); //ret = 0 } Chaque processus père et fils reprend son exécution après le fork(). Le code et les données étant strictement identiques, il est nécessaire de disposer d un mécanisme pour différencier le comportement des deux processus après le fork() On utilise pour cela le code retour du fork() qui est différent chez le fils (toujours 0) et le père (pid du fils crée) Amélie Lambert 2014-2015 38 / 53

Primitive de création de processus (6/6) PERE (pid :12222) main () { pid_t ret ; int i, j=0; for(i=0; i<8; i++) i = i + j; ret= fork(); if (ret == 0) printf(" je suis le fils ") else { printf ("je suis le père"); printf ("pid de mon fils %d", ret) } } Pid du fils : 12223 getpid : 12222 getppid :shell FILS (pid :12223) main () { pid_t ret ; int i, j=0; for(i=0; i<8; i++) i = i + j; ret= fork(); if (ret == 0) printf(" je suis le fils ") else { printf ("je suis le père"); printf ("pid de mon fils, %d", ret) } } getpid : 12223 getppid : 12222 Le processus fils hérite de tous les attributs de son père sauf son pid. Les exécutions des processus père et fils peuvent s enchevêtrer en fonction de la politique d ordonnancement. Amélie Lambert 2014-2015 39 / 53

Synchronisation père / fils (1/3) #include <stdlib.h> void exit (int valeur); pid_t wait (int status); un appel à la primitive exit() provoque la terminaison du processus effectuant l appel avec un code retour valeur. (Par défaut, le franchissement de la dernière } d un programme C tient lieu d exit()) un processus qui se termine passe dans l état Zombie et reste dans cet état tant que son père n a pas pris en compte sa terminaison. Le processus père "récupère" la terminaison de ses fils par un appel à la primitive wait () Amélie Lambert 2014-2015 40 / 53

Synchronisation père / fils (2/3) PERE (pid :12222) main () { pid_t ret ; int i, j=0; for(i=0; i<8; i++) i = i + j; ret= fork(); if (ret == 0) { printf(" je suis le fils "); exit(); } else { printf ("je suis le père"); printf ("pid de mon fils,%d",ret); wait(); } } FILS (pid :12223) main () { pid_t ret; int i, j=0; for(i=0; i<8; i++) i = i + j; ret= fork(); if (ret== 0) { printf(" je suis le fils "); exit (); } else { printf ("je suis le père"); printf ("pid de mon fils,%d",ret); wait(); } } Amélie Lambert 2014-2015 41 / 53

Synchronisation père / fils (3/3) Lorsqu un processus se termine (exit()), le système démantèle tout son contexte, sauf l entrée de la table des processus le concernant. Le processus père, par un wait(), "récupère" la mort de son fils, cumule les statistiques de celui-ci avec les siennes et détruit l entrée de la table des processus concernant son fils défunt. Le processus fils disparaît complètement. Un processus fils défunt reste zombie jusqu à ce que son père ait pris connaissance de sa mort Un processus fils orphelin, suite au décès de son père (le processus père s est terminé avant son fils) est toujours adopté par le processus 1 (init). Amélie Lambert 2014-2015 42 / 53

Primitive de recouvrement Il s agit d un ensemble de primitives (famille exec() permettant à un processus de charger en mémoire, un nouveau code exécutable (execl, execlp, execle, execv, execvp, execve). main () { pid_t pid ; int i, j=0; for(i=0; i<8; i++) i = i + j; pid= fork(); if (pid == 0) { printf(" je suis le fils "); execl("/home/calcul","calcul","3","4", NULL); // execution du programme calcul avec les // pramètres 3 et 4 } else { printf ("je suis le père"); printf ("pid de mon fils, %d", pid); wait(); } } 1 Création d un processus fils par duplication du code et données du père ; 2 Le processus fils recouvre le code et les données hérités du père par ceux du programme calcul. Le père transmet des données de son environnement vers son fils par les paramètres de l exec(...) 3 Le père attend son fils Amélie Lambert 2014-2015 43 / 53

6. Ordonnancement des processus Amélie Lambert 2014-2015 44 / 53

Système multiprocessus Amélie Lambert 2014-2015 45 / 53

Etats des processus (1/2) Amélie Lambert 2014-2015 46 / 53

Etats des processus (2/2) Élection : allocation du processeur Préemption : réquisition du processeur : ordonnancement non préemptif : un processus élu le demeure sauf s il se bloque de lui-même ordonnancement préemptif : un processus élu peut perdre le processeur s il se bloque de lui-même (état bloqué) ou si le processeur est réquisitionné pour un autre processus (état prêt) Amélie Lambert 2014-2015 47 / 53

Système multiprocessus - Ordonnanceur et répartiteur Amélie Lambert 2014-2015 48 / 53

Politiques d ordonnancement Premier arrivé, premier servi (FIFO) Par priorités constantes : chaque processus reçoit une priorité, le processus de plus forte priorité est élu, algorithme avec ou sans préemption. Par tourniquet (round robin) : Un processus élu s exécute au plus durant un quantum (intervalle de temps) ; à la fin du quantum, préemption et réinsertion en fin de file d attente des processus prêts. Amélie Lambert 2014-2015 49 / 53

Ordonnancement FIFO Amélie Lambert 2014-2015 50 / 53

Ordonnancement par priorités constantes (sans préemption) Amélie Lambert 2014-2015 51 / 53

Ordonnancement par priorités constantes (avec préemption) Amélie Lambert 2014-2015 52 / 53

Ordonnancement par tourniquet (round robin) Amélie Lambert 2014-2015 53 / 53