Systèmes d'exploitation Audrey Queudet Université de Nantes 2010 Projet DVD-MIAGE 1 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Plan du cours Introduction aux systèmes d'exploitation Présentation générale d'UNIX Programmation shell Processus et parallélisme Ordonnancement Communication et synchronisation Gestion de la mémoire Gestion de E/S 2 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Plan du cours Introduction aux systèmes d'exploitation Présentation générale d'UNIX Programmation shell Processus et parallélisme Ordonnancement Communication et synchronisation Gestion de la mémoire Gestion de E/S 3 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Introduction aux systèmes d'exploitation Rappels : structure matérielle d'un ordinateur 1. l'écran 2. la carte mère 3. le processeur 4. la mémoire vive (RAM) 5. les cartes d'extensions 6. l'alimentation 7. le(s) lecteur(s) optique(s) 8. le(s) disque(s) dur(s) 9. le clavier 10. la souris 4 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Introduction aux systèmes d'exploitation Rôle d'un système d'exploitation (1) Applications SE Matériel 5 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Introduction aux systèmes d'exploitation Rôle d'un système d'exploitation (2) SYSTEME D'EXPLOITATION 6 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Introduction aux systèmes d'exploitation Rôle d'un système d'exploitation (3) Logiciel destiné à faciliter et simplifier l'utilisation d'un ordinateur Interface entre l'utilisateur et le matériel (= abstraction des spécificités d'accès complexes du matériel) Le SE gère les ressources matérielles Le SE réalise 4 grands types de tâches : La gestion des processus La gestion de la mémoire La gestion du système de fichiers La gestion des périphériques d'E/S 7 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Introduction aux systèmes d'exploitation Les concepts de base Processus : programme en cours d'exécution auquel est associé du code, des données et des ressources Mémoire : organe d’un ordinateur permettant d’enregistrer, de stocker et de restituer des données Système de fichiers : structure de données permettant de stocker les informations et de les organiser dans des fichiers sur des mémoires secondaires (disque dur, disquette, CD-ROM, clé USB, disques SSD, etc.) Périphériques d'E/S : composants de matériel informatique assurant les communications entre l'unité centrale de l'ordinateur et le monde extérieur, en particulier l'utilisateur (clavier, souris, scanner, webcam, imprimante, modem, etc.) 8 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Introduction aux systèmes d'exploitation Complexité d'un système d'exploitation Nombre d'utilisateurs de l'ordinateur : Mono-utilisateur Multi-utilisateur Nombre de processus à exécuter : Monotâche Multitâche Partage des ressources (CPU, mémoire, réseau, périphériques, etc.) entre processus et entre utilisateurs 9 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Introduction aux systèmes d'exploitation Principaux systèmes d'exploitation aujourd'hui Microsoft Windows 1.0 - 3.x - 95 - 98 - Me - NT - 2000 - XP - 2003 - Vista - 2008 GNU/Linux Debian - Fedora - Gentoo - Mandriva - Red Hat - Slackware SuSE - Ubuntu Mac OS Système 5 - 6 - 7 - 8 - 9 Mac OS X -.0 -.1 -.2 -.3 -.4 -.5- .6 - Server BSD FreeBSD - NetBSD - OpenBSD - DragonFly BSD - PC-BSD Autres AmigaOS - BeOS - DOS - Inferno - LynxOS - Haiku - OS/2 - QNX - Solaris - UNIX MVS - OS/360 - OS/390 - OS/400 - Plan 9 - ReactOS - VMS - ZETA - FreeDOS 10 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Introduction aux systèmes d'exploitation Aperçu historique des systèmes d'exploitation (1) Microsoft Windows 11 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Introduction aux systèmes d'exploitation Aperçu historique des systèmes d'exploitation (2) GNU/Linux, Mac OS, BSD UNIX 12 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Plan du cours Introduction aux systèmes d'exploitation Présentation générale d'UNIX Programmation shell Processus et parallélisme Ordonnancement Communication et synchronisation Gestion de la mémoire Gestion de E/S 13 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX Les origines UNIX est né au sein des laboratoires BELL (Filiale d'AT&T) Développé à partir de 1969 par Ken Thompson et Dennis Ritchie Dès 1973, UNIX est réécrit à 90% en langage C En 1975, les sources d'Unix sont diffusées dans les universités Développement de 2 branches : BSD développé à l'Université de Berkeley (Californie) System V vendu par AT&T à Sun Microsystems, IBM, DEC et HP UNIX® est une marque déposée depuis 1994 14 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX Caractéristiques principales Multitâche Multi-utilisateur Portable Interactif Système à mémoire virtuelle Un riche panel d'outils (plusieurs centaines) 15 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX Outils disponibles Editeurs de texte Développement logiciel Communication Documentation Bureautique 16 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX Structure générale Langages de commandes (shell) Outils d’édition Gestion E/S Ordonnanceur Gestion mémoire Outils de compil. Niveau Noyau Niveau Niveau Exécutif SE Gestion du temps Outils de debuggage 17 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX Le système de fichiers UNIX Sous UNIX, tout élément est représenté sous forme de fichier 4 types de fichiers : Ordinaire : données, programme Répertoire : contient d'autres données ou répertoires Lien symbolique : pointe vers un autre fichier Spécial : permet l'accès à un périphérique Chaque fichier est caractérisé par son nom, sa taille, ses droits d'accès, son propriétaire, ses dates de création, de modification... Structure arborescente de fichiers 18 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX L'arborescence UNIX racine Liste des périphériques Commandes système Accès aux périphériques Utilitaires Fichiers temporaires Bibliothèques système 19 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Utilisateurs Présentation générale d'UNIX Accès aux fichiers Chemin absolu : /home/queudet/programmes/progC/p1.c /home/queudet/textes/lettre.txt Chemin relatif au répertoire d'accueil (/home/queudet sur l'exemple) : ~/progc/p1.c ~/textes/lettres.txt Chemin relatif au répertoire courant (programmes sur l'exemple) : progc/p1.c ../textes/lettres.txt Permet de remonter d'un niveau dans l'arbre 20 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX Utilisateurs et groupes Le fichier /etc/passwd contient toutes les informations relatives aux utilisateurs (logins, mots de passe, ...). Chacune de ses lignes possède le format spécial suivant : nom_du_compte : mot_de_passe : no_UID : no_GID : commentaire : répertoire_home : prog Identifiant utilisateur (entier) Identifiant de groupe (entier) Programme de démarrage après connexion (un shell généralement) Exemples : root:12dGe12ge35qF:0:0:root:/users/root:/bin/bash pascal:12dGeg5AqFdhr2:500:100:Pascal:/users/pascal:/bin/tcsh 21 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX Les droits d'accès 3 catégories d'utilisateurs : 4 types de fichier : Propriétaire (user) u Ordinaire - Groupe (group) g Répertoire (directory) d Autres (others) o Lien symbolique (link) l Spécial c ou b 3 types de droits : Lecture (read) r Ecriture (write) w Exécution (execute) x Les droits d'un fichier sont représentés par une chaîne de 10 caractères : - rxw rw- r-- 22 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX Les droits d'accès en octal Exemples : -rw------- : drw-r—-r-- : drwxr-x--- : Droits Valeur --- 0 --x 1 -w- 2 -wr 3 r-- 4 r-x 5 rw- 6 rwx 7 23 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX Les commandes de base UNIX A) Documentation en ligne B) Navigation dans l'arborescence C) Visualisation de fichiers D) Manipulation de fichiers E) Gestion des droits d'accès F) Processus G) Identification des utilisateurs H) Recherche de fichiers ou de chaînes de caractères I) Utilitaires classiques : éditeurs, compilateurs J) Redirections et tubes 24 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX A) Documentation en ligne (1) L'accès à la documentation en ligne se fait via la commande man Une page de manuel contient, entre autres, les rubriques suivantes : TITLE NAME SYNOPSIS DESCRIPTION OPTIONS USAGE EXAMPLES SEE ALSO 25 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX A) Documentation en ligne (2) Visualisation d'une page du manuel : man [-s section] commande Sections : Recherche des pages qui se rapportent à un mot clé : man -k mot_cle 26 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX B) Navigation dans l'arborescence Affichage du chemin absolu du répertoire courant : pwd Changement de répertoire : cd cd cd cd chemin /home textes ../programmes Création d'un répertoire : mkdir rep_a_creer mkdir /home/queudet/enseignements Suppression d'un répertoire vide : rmdir rep_a_supprimer rmdir enseignements 27 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX C) Visualisation de fichiers (1) Listage du contenu des répertoires et des informations sur les fichiers : ls [-options] Options : - d - l - i - a - x - t - u - r - R - F Exemple : ls -l textes total 2 -rw-rw-r-- 1 -rw-r--r-- 1 Olivier Olivier etudiant 168 etudiant 81 Dec Nov 2 30 15:09 14:19 chant.txt lettre.txt 28 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX C) Visualisation de fichiers (2) Affichage d'un ou plusieurs fichiers de type texte : cat textes/lettre.txt Listage des n premières lignes d'une liste de fichiers de type texte : head -3 textes/chant.txt Listage des n dernières lignes d'une liste de fichiers de type texte : tail -2 textes/chant.txt Affichage page par page d'un fichier de type texte : more programmes/progC/description_p1.txt 29 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX D) Manipulation de fichiers Copie d'un fichier vers un autre fichier : cp chemin_source chemin_destination cp programmes/progc/p1.c programmes/archive/prg1.c Changement du nom ou déplacement d'un fichier : mv chemin_source chemin_destination mv programmes/progc/p1.c programmes/progc/programme1.c mv programmes/progc/*.c programmes Supression d'un ou plusieurs fichiers : rm chemin rm programmes/progc/p1.c rm programmes/progc/*.c 30 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX E) Gestion des droits d'accès Changement des droits d'accès d'un fichier spécifié : chmod [-R] u|g|o +|- r|w|x chemin chmod [-R] valeur_en_octal chemin Exemple : chmod go+rx programmes/progc chmod o-w textes/*.txt chmod 765 textes/lettre.txt Changement du groupe d'appartenance d'un fichier ou d'un répertoire : chggrp [-R] groupe chemin chggrp prof /home/Olivier 31 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX F) Processus Liste des processus satisfaisant un critère donné (spécifié en option) : ps [-options] Exemple : ps -u dupont ps -r ps -elf Destruction d'un processus : kill -9 no_processus kill -9 521 Lancement en arrière-plan d'un processus : nom_processus & prog1 & 32 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX G) Identification des utilisateurs Liste des utilisateurs connectés : who Affichage du login sous lequel l'utilisateur est connecté : whoami Olivier Affichage du no et du nom de l'utilisateur, du no et nom de ses groupes : id uid=501(Olivier) gid=502(etudiant) groups=502(etudiant), 503(amis) 33 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX H) Recherche de fichiers ou de ch. de caractères (1) Affichage des lignes d'un ou plusieurs fichiers contenant une ch. de car. : grep [-options] expression fichier grep "Cher Monsieur" textes/*.txt textes/lettre.txt:Cher Monsieur, grep "c.*e" textes/*.txt textes/lettre.txt:Ravi d'avoir fait votre connaissance. grep -l sucre /home/Clara/recettes/confitures/* abricots.txt poires.txt Comptage du nombre de lignes, de mots et/ou de caractère d'un fichier : wc [-options] fichier wc textes/lettre.txt 7 10 81 textes/lettres.txt wc -l textes/lettre.txt 7 textes/lettre.txt 34 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX H) Recherche de fichiers ou de ch. de caractères (2) Affichage des fichiers répondant à un critère spécifié en option : find repertoire [-options] -print Options : -name -user -size -mtime -perm -type -group -atime -ctime -links Exemples : find programmes -name "*.c" ./programmes/progc/p1.c ./programmes/progc/p2.c find . -type d -name "*s" -print ./programmes/ ./textes/ 35 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX I) Utilitaires classiques : éditeurs, compilateurs Editeur de texte en standard sous Unix : vi Autres éditeurs : emacs gedit xedit Compilateurs : cc gcc g++ f77 pc 36 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX J) Redirections et tubes (1) Redirections des entrées-sorties : 0 1 commande 2 0 : entrée standard (STDIN) 1 : sortie standard (STDOUT) 2 : sortie des erreurs (STDERR) Redirection de l'entrée standard : commande < chemin grep "tmp" < test Redirection de la sortie standard : commande > chemin ls > test 37 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX J) Redirections et tubes (2) Redirection de la sortie d'erreur : commande 2> chemin ls -l 2> /dev/null Redirection de la sortie d'erreur vers la sortie standard : commande 2>&1 chemin cat fichier > copie 2>&1 Redirection de la sortie d'une commande vers l'entrée d'une autre (tube): 0 1 commande1 2 tube 0 1 commande2 2 commande1 | commande2 grep "Monsieur" *.txt | wc -l 38 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Présentation générale d'UNIX Interprétation des commandes Affichage d'un prompt Attente de la frappe d’une ligne et analyse de la ligne Exécution de la ou les commande(s) 101110010 1100011101 1110010110 1111000101 110001011 Le Shell ls -l cat f mv fi wc -l cp te grep 39 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Plan du cours Introduction aux systèmes d'exploitation Présentation générale d'UNIX Programmation shell Processus et parallélisme Ordonnancement Communication et synchronisation Gestion de la mémoire Gestion de E/S 40 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Le Shell UNIX (1) Interface en ligne de commande UNIX (=IHM dans laquelle la communication entre l'utilisateur et l'ordinateur s'effectue en mode texte) Le shell est utilisable en conjonction avec un terminal Lors du login, l'utilisateur est connecté avec un shell défini lors de la création de son compte. Possibilité de le modifier via la commande chsh 2 modes d'utilisation : Simple interpréteur de commandes (mode interactif) Langage de programmation interprété (scripts) 41 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Le Shell UNIX (2) Le shell affiche une invite en début de ligne, appelée prompt ('$' ou '#' ou '%'), pour indiquer à l'utilisateur qu'il attend l'entrée d'une commande 42 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Pourquoi utiliser un shell : avantages ? Dans de nombreux contextes, on ne dispose pas d'interface graphique Travail en ligne de commande souvent plus efficace qu'à travers une interface graphique Automatisation de tâches répétitives Meilleure compréhension du système UNIX (fichiers de configuration...) 43 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Pourquoi ne pas utiliser un shell : inconvénients ? Documentation difficile d'accès pour le débutant Syntaxe cohérente mais parfois obscure (concision vs. clarté) Messages d'erreurs parfois difficilement exploitables Relative lenteur 44 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Les différents shells Shell de Stephen R. Bourne : Bourne shell : sh Bourne-Again shell : bash Shell de David Korn : Korn shell : ksh C shell : csh Tenex C shell (version moderne du csh) : tcsh Shell de Kenneth Almquist prenant peu de place sur le disque : Almquist shell : ash Debian Almquist shell : dash Z Shell (zsh), intégrant les fcts les plus pratiques de bash, ksh et tcsh 45 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Scripts shell en bash : les concepts de base Caractères spéciaux Variables variables d'environnement variables de l'utilisateur Opérateurs Structures de contrôle exécution conditionnelle choix multiple boucle for boucles while et until Expressions régulières 46 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Caractères spéciaux (ou métacaractères) Caractère Description * Métacaractère qui remplace n'importe quelle chaîne de caractères (même vide) ? Métacaractère qui remplace un caractère quelconque ; Permet de séparer plusieurs commandes écrites sur une même ligne ( ) Regroupe des commandes & Permet le lancement d'un processus en arrière plan | Permet la communication par tube entre deux commandes # Introduit un commentaire. Tout ce qui suit dans une ligne est ignoré par le shell \ Déspécialise le caractère qui suit '...' Définit une chaîne de caractères qui ne sera pas évaluée par le shell "..." Définit une chaîne de caractères dont les variables seront évaluées par le shell `...` Définit une chaîne de caractères qui sera interprétée comme une commande et remplacée par la chaîne qui serait renvoyée à l'exécution de la dite commande 47 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Variables d'environnement (1) Variable Description PWD Stocke le chemin et le nom du répertoire courant HOSTNAME Nom du serveur HISTSIZE Taille de l'historique des dernières commandes passées au shell LANGUAGE Suffixe de la langue du système PS1 Chaîne apparaissant à l'invite du Shell USER Nom de l'utilisateur DISPLAY Adresse du terminal d'affichage SHELL Chemin et nom du programme Shell HOME Chemin du répertoire de connexion PATH Liste des répertoires où chercher les exécutables des commandes externes 48 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Variables d'environnement (2) Les variables d'environnement sont manipulées via les commandes : printenv : affiche la liste des variables d'environnement export VARIABLE=VALEUR : donne une valeur à une variable echo $VARIABLE : affiche la valeur de la variable Exemples : printenv PWD=/home/Olivier LANG=fr SHELL=/bin/bash printenv LANG fr 49 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Variables de l'utilisateur L'utilisateur peut déclarer facilement de nouvelles variables par l'affectation directe d'une valeur (numérique, chaîne de caractères) : ma_variable=valeur Exemples : [email protected] moi=audrey vous=L2 phrase1="Bonjour $vous, moi c\'est $moi" phrase2='Bonjour $vous, moi c\'est $moi' echo $phrase1 Bonjour L2, moi c'est audrey echo $phrase2 Bonjour $vous, moi c\'est $moi rep=`pwd` echo $rep /home/queudet/data 50 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Opérateurs sur les fichiers Opérateur Description -e filename Vrai si filename existe -d filename Vrai si filename est un répertoire -f filename Vrai si filename est un fichier ordinaire -L filename Vrai si filename est un lien symbolique -r filename Vrai si filename est lisible (r) -w filename Vrai si filename est modifiable (w) -x filename Vrai si filename est exécutable (x) file1 -nt file2 Vrai si file1 plus récent que file2 file1 -ot file2 Vrai si file1 plus ancien que file2 51 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Opérateurs sur les chaînes Opérateur Description -z chaîne Vrai si la chaîne est vide -n chaîne Vrai si la chaîne est non vide chaîne1 = chaîne2 Vrai si les deuxchaînes sont égales Chaîne1 != chaîne2 Vrai si les deuxchaînes sont différentes 52 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Opérateurs arithmétiques Opérateur Description + addition - soustraction * multiplication / division ** % puissance modulo Expressions arithmétiques : $(( ... )) n=1 echo $(( 5*n+1 )) 53 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Opérateurs de comparaison numérique Opérateur Description num1 -eq num2 égalité num1 -ne num2 inégalité num1 -lt num2 inférieur (<) num1 -le num2 inférieur ou égal (≤) num1 -gt num2 supérieur (>) num1 -ge num2 supérieur ou égal (≥) 54 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Opérateurs booléens Opérateur Description -a ET logique -o OU logique ! NON logique 55 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Structures de contrôle : exécution conditionnelle L'instruction if permet d'exécuter des instructions si une condition est vraie Le bloc if/then if [ condition ] then actions fi Le bloc if/then/else if [ condition ] then action1 else action2 fi Enchaînement de plusieurs conditions if [ condition1 ] then action1 elif [ condition2 ] then action2 elif [ condition 3 ] then action3 else action4 fi 56 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Structures de contrôle : choix multiple L'instruction case permet de choisir une suite d'instructions suivant la valeur d'une expression case "$x" in case1) actions1 ;; case2) actions2 ;; ... caseN) actionsN ;; esac 57 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Structures de contrôle : boucle for L'instruction for permet une exécution répétitive d'une suite d'instructions Schéma classique for VAR in LISTE do actions done Schéma alternatif for ((initialisation de VAR; contrôle de VAR; modification de VAR)) do actions done 58 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Structures de contrôle : boucles while et until L'instruction while permet une exécution répétitive d'une suite d'instructions tant qu'une condition est vraie while [ condition ] do actions done Condition de continuation de la boucle L'instruction until permet une exécution répétitive d'une suite d'instructions jusqu'à ce qu'une condition soit vraie until [ condition ] do actions done Condition d'arrêt de la boucle 59 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Expressions régulières : définition Une expression régulière est un patron qui recouvre un ensemble de chaînes de caractères Les expressions régulières sont puissantes pour extraire des lignes particulières d'un fichier ou d'un résultat Beaucoup de commandes UNIX emploient des expressions régulières Bash a des fonctionnalités intégrées pour cibler des patrons et peut reconnaître des classes de caractères et des intervalles. 60 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Expressions régulières : les opérateurs Opérateur Description . Correspond a tout caractère ? L'élément précédent est optionnel et sera présent au plus une fois * L'élément précédent sera présent zéro fois ou plus + L'élément précédent sera présent une fois ou plus {N} L'élément précédent sera présent exactement N fois {N,} L'élément précédent sera présent N ou plus de fois {N,M} L'élément précédent sera présent au moins N fois, mais pas plus de M fois - Représente l'intervalle s'il n'est pas le premier ou le dernier dans une liste ^ Correspond à une chaîne vide au début de la ligne; Représente aussi les caractères ne se trouvant pas dans l'intervalle d'une liste $ Correspond à la chaîne vide à la fin d'une ligne \b Correspond à la chaîne vide au début ou à la fin d'un mot 61 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Ecriture de scripts bash Un script bash est un simple fichier texte exécutable (droit x) dont la première ligne doit obligatoirement être #!/bin/bash Dans un éditeur de texte, écrivons le script suivant : #!/bin/bash # # Shell-script affichant "bonjour" sur la sortie standard # message='bonjour' echo $message Enregistrons ce script sous le nom bonjour.sh 62 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Exécution de scripts bash Dans un terminal, en ligne de commande, rendons le script exécutable : chmod u+x bonjour.sh Exécutons le script (plusieurs solutions) : bonjour.sh ou . bonjour.sh ou sh bonjour.sh ou exec bonjour.sh 63 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Programmation shell Paramètres de scripts bash Il est possible d'exécuter un script en lui passant un certain nombre de paramètres (ou arguments), comme pour n'importe quelle autre commande : mon_script.sh arg1 arg2 ... argN En bash, les arguments de la ligne de commande sont stockées dans des variables spéciales : Variable Description $# Nombre d'arguments $* Liste des arguments $0 Nom de la commande $1 Valeur du premier paramètre $i Valeur du ième paramètre si i compris entre 1 et 9 $9 Valeur du neuvième paramètre 64 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Plan du cours Introduction aux systèmes d'exploitation Présentation générale d'UNIX Programmation shell Processus et parallélisme Ordonnancement Communication et synchronisation Gestion de la mémoire Gestion de E/S 65 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Processus et parallélisme Processus et threads : définition (1) Un processus est un programme en cours d'exécution Programme (= instructions machine) : entité statique Processus (= réalisation d'actions) : entité dynamique A un processus sont associés plusieurs éléments : son code ses données les ressources qui lui sont attribuées un ou plusieurs threads d'exécution 66 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Processus et parallélisme Processus et threads : définition (2) Un thread est un flot d'exécution dans le code du processus doté : d'un compteur programme (suivi des instructions à exécuter) de registres systèmes (variables de travail en cours) d'une pile (historique de l'exécution) Plusieurs processus permettent à un ordinateur d'effectuer plusieurs tâches à la fois. Ils se partagent les ressources physiques. Plusieurs threads permettent à un processus de décomposer le travail à exécuter en parallèle. Ils se partagent les ressources physiques et virtuelles. 67 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Processus et parallélisme Utilisation des threads Amélioration de l'interactivité d'un programme (ex : traitement de texte) Mise en forme Enregistrement sur disque Interactivité avec l'utilisateur HD 68 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Processus et parallélisme Caractéristiques d'un processus UNIX Un processus possède de nombreuses caractéristiques : le programme qu'il exécute (CMD) un numéro d'identification que lui affecte le système (PID) un créateur (PPID) l'utilisateur pour lequel il fonctionne (UID) le terminal ou la fenêtre du processus (TTY) une consommation CPU (CPU) une consommation mémoire (MEM) une durée de traitement (TIME) une heure de lancement (STIME) un facteur de priorité (C)... 69 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Processus et parallélisme Types de processus UNIX Processus utilisateur vs. Processus système (démons) Un processus est créé par un autre processus Exemple d'arborescence de processus : Ancêtre de tous les processus init (1) konsole (530) konsole (531) konsole (532) /bin/bash (534) /bin/bash (535) /bin/bash (536) ls -al (602) ps (634) konsole (533) lpd (408) 70 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Processus et parallélisme Commandes UNIX de gestion des processus (1) Liste des processus satisfaisant un critère donné (spécifié en option) : ps [-options] Exemples : ps -ef UID root ... jean olivier olivier PID 1 PPID 0 C STIME 0 Dec 6 TTY ? TIME 1:02 COMMAND init 319 300 321 319 324 321 0 10:30:30 0 10:30:34 0 10:32:12 ? ttyp1 ttyp1 0:02 0:02 0:00 /usr/dt/bin/dtsession csh ps -ef ps -efu Olivier olivier 321 319 olivier 324 321 0 10:30:34 0 10:32:12 ttyp1 ttyp1 0:02 0:00 csh ps -efu 71 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Processus et parallélisme Commandes UNIX de gestion des processus (2) Changement de la priorité d'un processus : nice -valeur commande nice -5 gcc programme.c Destruction d'un processus : kill -9 no_processus kill -9 521 Lancement en arrière-plan d'un processus : nom_processus& prog1& Affichage des processus en background : jobs 72 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Processus et parallélisme Manipulation de processus en langage C (1) Principes généraux : processus 1 (parent) processus 2 (enfant) Exécution programme A Exécution programme B wait() fork() execlp(B) exit() 73 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Processus et parallélisme Manipulation de processus en langage C (2) Primitives de gestion de processus : int fork (); int execlp (char *comm, char *arg0, ..., NULL); void exit (int status); int wait (int *ptr_status); pid_t waitpid(pid_t pid, int *status, int opts) int sleep (int seconds); int getpid (); int getppid (); 74 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Processus et parallélisme Etats d'un processus blocage bloqué actif préemption élection réveil prêt actif : le processus s’exécute sur le processeur prêt : le processus est prêt à s’exécuter mais n’a pas le processeur bloqué : il manque au processus une ressource (en plus du processeur) pour qu’il puisse s’exécuter 75 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Processus et parallélisme Allocation du processeur aux processus Comment contrôler l'ordre de passage des processus sur le processeur ? Comment contrôler la répartition du temps d'exécution entre les processus ? P3 L'ordonnanceur P1 CPU P2 L'ordonnanceur est un composant (procédure) du système d'exploitation 76 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Plan du cours Introduction aux systèmes d'exploitation Présentation générale d'UNIX Programmation shell Processus et parallélisme Ordonnancement Communication et synchronisation Gestion de la mémoire Gestion de E/S 77 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement : quels objectifs ? (1) L'ordonnancement consiste à choisir le processus à exécuter à un instant t et à déterminer le temps durant lequel le processeur lui sera alloué L'objectif de l'ordonnanceur est d'optimiser certains aspects des performances du système. Compromis entre : Temps de traitement moyen du système Utilisation efficace du processeur Temps de réponse moyen/max du système Satisfaction des conditions d'échéance pour les processus Bonne utilisation des autres ressources du système 78 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement : quels objectifs ? (2) Systèmes de traitement par lots optimiser le nombre de processus à l'heure réduire le délai entre la soumission et l'achèvement faire en sorte que le processeur soit occupé en permanence Systèmes interactifs répondre rapidement aux requêtes répondre aux attentes des utilisateurs Systèmes temps réel respecter les délais eviter de perdre des données eviter la dégradation de la qualité au niveau des résultats produits 79 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement des processus blocage bloqué actif préemption élection ORDONNANCEUR file d’attente des processus bloqués réveil prêt PROCESSEUR file d’attente des processus prêts processus élu ORDONNANCEUR : alloue le processeur aux différents processus selon un algorithme d'ordonnancement donné 80 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Critères d’ordonnancement Utilisation du processeur Débit (ou capacité de traitement) Temps de traitement Temps d'attente Temps de réponse Prévisibilité Equité Priorités 81 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Typologie des algorithmes d’ordonnancement Monoprocesseur / multiprocesseur En-ligne / Hors-ligne Préemptif / Non préemptif Oisif / Non oisif Centralisé / Réparti 82 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement non préemptif Ordonnancement selon l’ordre d’arrivée : premier arrivé, premier servi First Come First Serve (FCFS) Ordonnancement selon la durée de calcul : travail le plus court d’abord Shortest Job First (SJF) 83 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement préemptif Ordonnancement selon la durée de calcul restante : temps restant le plus court d'abord Shortest Remaining Time (SRT) P1 CPU Ordonnancement sans notion de priorité : temps-partagé avec politique du tourniquet P3 P2 Round-Robin (RR) Ordonnancement à priorités (statiques ou dynamiques) : la tâche la plus prioritaire obtient le processeur 84 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement First Come First Served (FCFS) Principe : Les processus sont ordonnancés selon leur ordre d'arrivée Exemple (P1, P2, P3 et P4 arrivent dans cet ordre à t = 0) : 85 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement First Come First Served (FCFS) Intérêts : Algorithme facile à comprendre Faible complexité d'implémentation (une seule liste chaînée) Inconvénients : Pas de prise en compte de l’importance relative des processus Temps d'attente du processeur généralement important 86 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement Shortest Job First (SJF) Principe : Le processus dont le temps d'exécution est le plus court est ordonnancé en priorité Exemple (P1, P2, P3 et P4 arrivent à t = 0) : 87 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement Shortest Job First (SJF) Intérêts : SJF réduit le temps d'attente des processus Utilisation limitée à des environnements et à des applications spécifiques Inconvénients : Pas de prise en compte de l’importance relative des processus Algorithme optimal uniquement dans le cas où tous les processus sont disponibles simultanément 88 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement Shortest Remaining Time (SRT) Principe : Le processus dont le temps d'exécution restant est le plus court parmi ceux qui restent à exécuter, est ordonnancé en premier Exemple (P3 et P4 arrivent à t = 0; P2 à t = 20; P1 à t = 50) : 89 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement Shortest Remaining Time (SRT) Intérêts : SRT minimise le temps d'attente moyen des processus les plus courts Utilisation limitée à des environnements et à des applications spécifiques Inconvénients : Pas de prise en compte de l’importance relative des processus Non équité de service : SRT pénalise les processus longs Possibilité de famine pour les processus longs 90 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement temps-partagé (Round-Robin) Principe : allocation du processeur par tranche (quantum) de temps Exemple (q=20, n=4) : Chaque tâche obtient le processeur au bout de (n-1)*q unités de temps au plus 91 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement temps-partagé (Round-Robin) Intérêts : Equité de l’attribution du processeur entre toutes les tâches Mise en œuvre simple Inconvénients : Pas de prise en compte de l’importance relative des tâches Difficulté du choix de la tranche de temps Si q est trop grand, Round-Robin devient équivalent à FIFO Si q est trop petit, il y a augmentation du nombre de changements de contexte ! 92 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement à priorités statiques Principe : allocation du processeur selon des priorités statiques (numéros affectés aux processus pour toute la vie de l'application) Exemple ( priorités(P1, P2, P3, P4)=(3,2,0,1) ) : Dans certains systèmes, l'échelle des priorités est inversée (0 est alors la priorité la plus faible) 93 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement à priorités statiques Intérêts : Prise en compte de l'importance relative des processus Mise en œuvre simple Inconvénients : Problèmes de blocages durant des périodes de temps illimitées Problèmes de famines des processus de moindres priorités 94 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement sous Linux (1) Noyau Linux 2.6 3 algorithmes d'ordonnancement différents : un pour les processus conventionnels SCHED_NORM deux pour les processus temps réel SCHED_FIFO SCHED_RR 2 échelles de niveaux de priorités : une pour les processus conventionnels une pour les processus temps réel 95 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement sous Linux (2) Chaque processus conventionnel possède : Une priorité statique (PS) valeur entière comprise entre 101 et 139 Un quantum de base (QB) déterminé à partir de sa priorité statique Si PS < 120, QB = (140 – PS) * 20 Si PS ≥ 120, QB = (140 – PS) * 5 Une priorité dynamique (PD) déterminée à partir de sa priorité statique et de son caractère interactif PD = max(100, min(PS - bonus + 5, 139)) Recalculée toutes les 20ms 96 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement sous Linux (3) Détermination du bonus : Temps de sommeil moyen Bonus Entre 0 et 100ms 0 Entre 100 et 200ms 1 Entre 200 et 300ms 2 Entre 300 et 400ms 3 Entre 400 et 500ms 4 Entre 500 et 600ms 5 Entre 600 et 700ms 6 Entre 700 et 800ms 7 Entre 800 et 900ms 8 Entre 900 et 1000ms 9 1 seconde 10 97 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Ordonnancement Ordonnancement sous Linux (4) L'ordonnanceur ordonne les processus en fonction de leur priorité statique L'ordonnanceur choisit les processus en fonction de leur priorité dynamique La sélection des processus s'effectue en temps constant : O(1) Les processus peuvent être préemptés Cas multiprocesseur : une file de processus par processeur Pour aller plus loin... /usr/src/linux­2.6.x/kernel/sched.c 98 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Plan du cours Introduction aux systèmes d'exploitation Présentation générale d'UNIX Programmation shell Processus et parallélisme Ordonnancement Communication et synchronisation Gestion de la mémoire Gestion de E/S 99 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Contexte (1) Processus concurrents vs. Processus distants Processus utilisateur Processus utilisateur Noyau du SE Machine Communications intra-système Processus utilisateur Processus utilisateur Noyau du SE Noyau du SE Machine Machine Communications inter-système 100 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Contexte (2) Plusieurs processus → accès concurrents aux ressources Une ressource désigne toute entité dont a besoin un processus pour s'exécuter : ressource matérielle (processeur, périphérique, etc.) ressource logicielle (variable) 3 phases pour l'exploitation d'une ressource par un processus : sollicitation de la ressource utilisation de la ressource libération de la ressource 101 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Contexte (3) Une ressource est dite critique lorsque des accès concurrents à cette ressource peuvent mener à un état incohérent On parle aussi de situation de compétition (race condition) pour décrire une situation dont l'issue dépend de l'ordre dans lequel les opérations sont effectuées Une section critique est une section de programme manipulant une ressource critique Un mécanisme d'exclusion mutuelle sert à assurer l'atomicité des sections critiques relatives à une ressource critique 102 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Accès aux ressources critiques (1) Cas d'incohérence de données : problème de la synchronisation relative de l'exécution des processus process#1 process#2 lire (N, Account) lire (N, Account) N :=N + 100 écrire (N, Account) N :=N + 100 écrire (N, Account) Process#2 ne doit pas accéder à N tant que process#1 l'utilise ! 103 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Accès aux ressources critiques (2) Solution par exclusion mutuelle : Variable Compte : entier Procédure Credit (somme_à_créditer : entier) Début Début_section_critique() Compte = Compte + somme_à_créditer Fin_section_critique() Ecrire (« Opération de crédit effectuée ») Fin Procédure Débit (somme_à_débiter: entier) Début Début_section_critique() Compte = Compte - somme_à_débiter Fin_section_critique() Ecrire(« Opération de débit effectuée ») Fin 104 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Accès aux ressources critiques (3) Cas d'interblocage : ensemble de processus attendant chacun une ressource déjà possédée par un processus de l'ensemble process#1 utilise attend Ressource#1 Ressource#2 attend process#2 utilise L'attente est infinie 105 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Accès aux ressources critiques (4) Cas de coalition et famine : ensemble de processus monopolisant des ressources au détriment d'autres processus. process#3 process#2 attend utilise Ressource#1 process#1 utilise Ressource#2 process#4 attend L'attente est indéfinie 106 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Paradigmes de concurrence Problème des producteurs/consommateurs Problème des lecteurs/rédacteurs Problème des philosophes 107 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Problème des producteurs/consommateurs (1) Un ensemble de processus, divisés en deux catégories, partagent une zone mémoire Les premiers (producteurs) remplissent la mémoire partagée avec des éléments Les seconds (consommateurs) utilisent ces éléments et les retirent de la mémoire Exemple : la file d'impression 108 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Problème des producteurs/consommateurs (2) Structure du système producteurs/consommateurs : 109 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Problème des lecteurs/rédacteurs (1) Un ensemble de processus, divisés en deux catégories, partagent une zone mémoire Certains processus (les lecteurs) font des accès en lecture seule à cette zone D'autres processus (les rédacteurs) modifient le contenu de cette zone Les rédacteurs sont parfois appelés écrivains 110 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Problème des lecteurs/rédacteurs (2) Principe : Lorsqu'un rédacteur accède à la mémoire partagée, aucun autre processus (lecteur ou rédacteur) ne doit y avoir accès Les lecteurs peuvent être plusieurs à utiliser la zone en même temps La mémoire partagée doit être protégée par exclusion mutuelle Les lecteurs n'ont besoin de cette exclusion mutuelle que dans le cas où aucun autre lecteur n'utilise la mémoire Utilisation d'un compteur 111 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Problème des philosophes (1) 5 philosophes passent leur vie à manger et à penser Pour manger, ils ont besoin de 2 fourchettes mais il n'y a que 5 fourchettes 112 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Problème des philosophes (2) Principe : Chaque philosophe a 3 états : « Je pense », « J'ai faim », « Je mange » par lesquels il passe toujours dans cet ordre Lorsqu'il a faim, un philosophe ne peut manger que si ses 2 voisins ne mangent pas, sinon il attend Lorsqu'il termine de manger, le philosophe réveille ses voisins et se remet à penser 113 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Résolution des problématiques Comment gérer les accès concurrents aux ressources ? Introduction de nouveaux mécanismes - de communication - de synchronisation 114 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Communications inter-processus Inter-Process Communication (IPC) : méthodes permettant à plusieurs processus de communiquer entre eux 3 catégories de mécanismes : outils permettant aux processus de s'échanger des données les fichiers la mémoire partagée outils permettant de synchroniser des processus les sémaphores les signaux outils permettant d'échanger des données et de synchroniser des processus les tubes les files d'attente de messages 115 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Communication par fichier (1) Les fichiers constituent la manière primitive de communication : process#2 process#1 ------------------------------- process#3 Approche coûteuse (accès au système de fichier du disque) Afin d'éviter les accès concurrents en lecture / écriture, on procède à des verrouillages 116 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Communication par fichier (2) Verrouillage de tout le fichier : flock() LOCK_SH LOCK_EX : verrouillage en mode partagé : verrouillage en mode exclusif Verrouillage d'une partie du fichier : lockf() F_TEST F_LOCK : teste si une zone est verrouillée : verrouille une zone fcntl() 117 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Communication par mémoire partagée (1) Un segment de mémoire peut être simultanément attaché à l'espace virtuel de plusieurs processus, ou plusieurs fois à des adresses différentes d'un même processus process#1 process#2 Espace d'adressage du processus Segment de mémoire partagée 118 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Communication par mémoire partagée (2) Primitives C de gestion d'un segment de mémoire partagée : shmget() : création ou accès à un segment de mémoire existant shmat() : attachement à l'espace d'adressage d'un processus shmdt() : détachement du segment de mémoire partagée de l'espace d'adressage d'un processus shmctl() : contrôle du segment (permissions d'accès, swapping, etc.) IPC_STAT IPC_SET SHM_LOCK SHM_UNLOCK ... 119 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Synchronisation par sémaphore (1) Les sémaphores sont utilisés dans le contrôle d'accès à une ressource Un sémaphore est une structure de données contenant un compteur (valeur entière non négative) gérant une file d'attente de processus attendant qu'advienne une condition particulière propre au sémaphore compteur Sémaphore Sem liste d'attente des processus bloqués sur le sémaphore 120 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Synchronisation par sémaphore (2) Types de synchronisation possibles : Exclusion mutuelle Section critique process#1 process#2 Barrière de synchronisation process#1 process#2 121 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Synchronisation par sémaphore (3) 1ère opération : test de prise du sémaphore (« Puis-je ?) Sem.P() : si (Sem.compteur>0) alors Sem.compteur = Sem.compteur-1 sinon insère_ce_processus(Sem.file) finsi P3 Sem.P() 0 compteur P8 P5 liste d'attente des processus bloqués sur le sémaphore 0 compteur P3 P8 P5 liste d'attente des processus bloqués sur le sémaphore 122 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Synchronisation par sémaphore (4) 2ème opération : libération du sémaphore (« Vas-y ! ») Sem.V() : Sem.compteur = Sem.compteur+1 si (Sem.compteur > 0) alors extrait_un_processus(Sem.file) finsi P3 Sem.V() 0 1 compteur compteur P5 P5 liste d'attente des processus bloqués sur le sémaphore liste d'attente des processus bloqués sur le sémaphore 123 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Synchronisation par sémaphore (5) Types de sémaphores : Sémaphore binaire : implémentation de l'exclusion mutuelle le compteur ne peut admettre que les valeurs 0 ou 1 le compteur doit être initialisé à 1 Sémaphore compteur : implémentation de la barrière de synchronisation Le compteur doit être initialisé à 0 124 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Synchronisation par sémaphore (6) Primitives C de gestion des sémaphores UNIX (IPC System V) : semget() création d'un tableau de sémaphores semop() test de prise d'un sémaphore (sem.P()) libération d'un sémaphore (sem.V()) semctl() initialisation d'un sémaphore suppression d'un sémaphore 125 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Synchronisation par signaux (1) Les signaux permettent d'avertir simplement un processus de l'arrivée d'un événement signal Ctrl-C process#1 Noyau du SE Les signaux sont limités au rôle de notification d'événement 126 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Synchronisation par signaux (2) A chaque signal est associé un comportement par défaut : abort : génération d'un fichier core et arrêt du processus exit : terminaison du processus sans génération d'un fichier core ignore : le signal est ignoré stop : suspension du processus continue : reprendre l'exécution si le processus a été suspendu Il existe environ 32 signaux prédéfinis identifiés par un nom et un numéro 127 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Synchronisation par signaux (3) Numéro Nom Comportement par défaut 1 SIGUP envoyé lors de la déconnexion 2 SIGINT interruption clavier 3 SIGQUIT quitter depuis le clavier 6 SIGABRT terminaison anormale 8 SIGFPE erreur opération en virgule flottante 9 SIGKILL destruction inconditionnelle du processus 10 SIGUSR1 à disposition de l'utilisateur 11 SIGSEGV référence mémoire invalide 12 SIGUSR2 à disposition de l'utilisateur 13 SIGPIPE erreur dans un tube (écriture sans lecteur) 14 SIGALARM signal d'horloge 15 SIGTERM terminaison normale d'un processus 18 SIGCONT reprise d'exécution, si stoppé 19 SIGSTOP stoppe l'exécution d'un processus 128 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Synchronisation par signaux (4) 2 façons d'envoyer un signal à un processus : Un caractère de contrôle : CRTL-C envoie SIGINT (interruption) CRTL-Z envoie SIGSTOP (suspension) CRTL-\ envoie SIGQUIT (fin) En ligne de commande : kill [-no_signal] no_processus kill -9 4014 kill [-nom_signal] no_processus kill -SIGUSR1 2584 129 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Synchronisation par signaux (5) Modification du comportement par défaut d'un signal : trap 'instruction1; instruction2;...' nom_signal trap 'echo fini;exit 1' SIGUSR1 Primitives C de gestion des signaux : kill() : envoie un signal vers un processus sigaction() : spécifie une action associée à un signal 130 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Echanges et synchro. par tubes (1) Un tube est un flux de données permettant l'échange unidirectionnel de données entre deux processus s'exécutant sur une même machine process#1 process#2 Les processus souhaitant communiquer doivent être de la même famille (ex. père/fils) Les tubes peuvent être considérés comme des fichiers ouverts (sans l'inconvénient des accès coûteux au système de fichier du disque) 131 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Echanges et synchro. par tubes (2) Utilisation simple en langage shell (opérateur '|') ls | more Primitives C pour la gestion des tubes : pipe() : création d'un tube (renvoie une paire de descripteurs du fichier) write() : écriture dans un tube read() : lecture du contenu d'un tube close() : suppression d'un tube 132 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Echanges et synchro. par files de messages (1) Les files de messages permettent une communication indirecte entre processus (mécanisme de « boîte aux lettres ») process#1 process#2 process#4 process#3 process#5 133 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Echanges et synchro. par files de messages (2) Deux aspects sont à gérer : la communication identification unique du destinataire et de l'expéditeur du message description exacte des données description de l'adressage la synchronisation envoi bloquant ou non réception bloquante ou non priorité des messages Un message ne peut être lu qu'une seule fois 134 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Echanges et synchro. par files de messages (3) Primitives C de gestion des files de messages (type IPC System V) : msgget() création d'une nouvelle file de messages accès à une file de messages existante msgsend() envoi d'un message dans une file msgctl() contrôle d'une file (suppression, permissions, etc.) 135 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Echanges et synchro. par files de messages (4) Primitives C de gestion des files de messages (type POSIX) : mq_open() création d'une nouvelle file de messages accès à une file de messages existante mq_close() fermeture d'une file de messages (sans la détruire) mq_unlink() destruction d'une file de messages mq_send() / mq_timedsend() envoi d'un message dans une file mq_receive() / mq_timedreceive() récupération d'un message dans une file mq_getattr() gestion des attributs d'une file de messages 136 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Communication et synchronisation Conclusion sur les mécanismes IPC Mécanismes divers et variés répondant plus ou moins bien aux problèmes de communication inter-processus Charge au développeur de choisir quels mécanismes utiliser en fonction : des besoins de l'application du coût de développement Complexité du développement vs. performance du programme 137 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Plan du cours Introduction aux systèmes d'exploitation Présentation générale d'UNIX Programmation shell Processus et parallélisme Ordonnancement Communication et synchronisation Gestion de la mémoire Gestion de E/S 138 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire Les concepts de base (1) On appelle « Mémoire » tout composant électronique capable de stocker temporairement des données Caractéristiques principales d'une mémoire : la capacité le temps d'accès le temps de cycle le débit la non volatilité Mémoire idéale (dans l'absolu) ? 139 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire Les concepts de base (2) 3 types de mémoires : Mémoire morte (appelée également mémoire non volatile) mémoire ROM (Read-Only Memory) mémoire ne s'effaçant pas en absence de courant électrique mémoire conservant les données nécessaires au démarrage de l'ordinateur temps d'accès de l'ordre de 150ns Mémoire vive (appelée également mémoire volatile) mémoire RAM (Random Access Module) données ne perdurant pas en l'absence de courant électrique 2 types de mémoire RAM : DRAM et SRAM temps d'accès pour la DRAM de l'ordre de 50ns temps d'accès pour la SRAM de l'ordre de 10ns Mémoire flash compromis entre la mémoire RAM et la mémoire ROM non volatilité de la mémoire morte accès en lecture/écriture de la mémoire vive 140 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire Les concepts de base (3) 2 niveaux de gestion de la mémoire : Niveau matériel les registres du processeur la mémoire cache Niveau système d'exploitation la mémoire principale (appelée également mémoire centrale ou interne) la mémoire secondaire (appelée également mémoire de masse ou physique) Rôle du gestionnaire de mémoire du SE 141 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire Le gestionnaire de mémoire du SE Objectifs du gestionnaire de mémoire du système d'exploitation : Partager la mémoire (système multi-tâche) Allouer des blocs de mémoire aux différents processus Protéger les espaces mémoire utilisés Optimiser la quantité de mémoire disponible Mécanisme de mémoire virtuelle + Mécanismes de découpage de la mémoire 142 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La mémoire virtuelle (1) La mémoire virtuelle est une technique permettant d'exécuter des programmes dont la taille excède la taille de la mémoire réelle La mémoire virtuelle permet : d'augmenter le nombre de processus présents simultanément en mémoire centrale de mettre en place des mécanismes de protection mémoire de partager la mémoire entre processus Mécanisme mis au point dans les années 60 143 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La mémoire virtuelle (2) Une partie de l'espace d'adressage d'un processus peut être enlevé temporairement de la mémoire centrale au profit d'un autre (swapping) process#1 espace d'adressage de l'utilisateur espace d'adressage du noyau process#2 OS 144 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La mémoire virtuelle (3) Illustration du mécanisme de va-et-vient (swapping) 145 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La mémoire virtuelle (4) Au lancement d'un processus, son espace d'adressage est majoritairement stocké en mémoire secondaire Au fur et à mesure de l'exécution du processus, des parties de son espace d'adressage sont chargées en mémoire principale 146 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La mémoire virtuelle (5) Les adresses virtuelles doivent être traduites en adresses physiques Cette traduction est assurée par un circuit matériel spécifique pour la gestion de la mémoire : la MMU (Memory Management Unit) adresses physiques Bus du système MMU adresses virtuelles CPU Mémoire principale Disque 147 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire Les mécanismes de découpage de la mémoire La mémoire principale peut être découpée de 3 façons : Mémoire par pagination elle consiste à diviser la mémoire en blocs, et les programmes en pages de longueur fixe. par segmentation les programmes sont découpés en parcelles ayant des longueurs variables appelées segments. par segmentation paginée certaines parties de la mémoire sont segmentées, d'autres paginées 148 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La pagination (1) La mémoire virtuelle et la mémoire physique sont structurées en unités d'allocation L'espace d'adressage virtuel est découpé en pages L'espace d'adressage physique est découpé en cadres Taille d'une page = taille d'un cadre La taille d'une page est fixe (de 2Ko à 16Ko) Toutes les pages sont de la même taille Il peut y avoir plus de pages que de cadres (c'est là tout l'intérêt) 149 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La pagination (2) Exemple : 150 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La pagination (3) Une adresse virtuelle est définie par : un numéro de page un déplacement dans la page Adresse virtuelle Numéro de page déplacement Mécanisme de translation Identité Une adresse physique est définie par : Numéro de cadre un numéro de cadre déplacement Adresse physique un déplacement dans le cadre Un mécanisme de traduction assure la conversion des adresses virtuelles en adresses physiques, en consultant une table des pages, pour connaître le numéro du cadre qui contient la page recherchée 151 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La pagination (4) La table des pages virtuelles (TPV) est composée de plusieurs champs : Numéro de cadre de la page physique le numéro de cadre 00 un bit de présence n e atio nce ion c n ic e ct se dif é r ot e f é o Pr M Ré Pr 0x000E1000 01 02 un bit de modification (M) 03 TPV 04 un bit de référence (R) 05 06 un bit de protection 07 152 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La pagination (5) Exemple de partage de code entre processus - 3 pages de code - 2 pages de données 153 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La pagination (6) Verrouillage de pages Les processus privilégiés (root) peuvent spécifier des zones de leur espace virtuel non « swappables » Applications Processus temps réel Applications multimédia Traitement de données confidentielles 154 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La segmentation (1) Un segment mémoire est un espace d'adressage indépendant défini par 2 valeurs : une adresse où il commence (aussi appelée base ou adresse de base) une taille ou un décalage (aussi appelé limite ou offset) L'adresse virtuelle d'une donnée est donc exprimée sous la forme : adr_virtuelle = base : limite Cette adresse virtuelle est traduite en adresse physique par le biais d'une table des segments 155 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La segmentation (2) Il existe différents types de segments : les segments de données statiques les segments de données globales les segments de code les segments d'états de tâche 156 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La segmentation (3) Exemple de partage de segments entre processus : 157 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire Pagination vs. segmentation Pagination : sert à obtenir un grand espace d'adressage linéaire sans avoir à acheter de la mémoire physique Segmentation : permet la séparation des programmes et des données dans des espaces d'adressage logiquement indépendants facilite le partage et la protection 158 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La segmentation paginée Chaque segment est composé d'un ensemble de pages Une adresse virtuelle est définie par : un numéro de segment un numéro de page un déplacement dans la page La traduction des adresses virtuelles en adresses physiques est réalisée grâce à une table des segments et une table des pages Adr. virtuelle Unité de segmentation Adr. linéaire Unité de pagination Adr. physique 159 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire Problèmes communément rencontrés La fragmentation mémoire Les défauts de pages 160 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La fragmentation (1) Une mémoire fragmentée est une mémoire dans laquelle plusieurs blocs de mémoire non contigus sont libres La fragmentation interne dans les systèmes paginés entre chaque partition de taille fixe, un peu de mémoire est perdue La fragmentation externe dans les systèmes segmentés des espaces entre les segments existent suite au retrait de programmes Il existe des méthodes de compaction mais généralement coûteuses 161 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La fragmentation (2) Illustration de la fragmentation interne : Mémoire divisée en pages de 4Ko Un process A demande un bloc de 5Ko 2 pages de 4 Ko sont allouées 5Ko utilisés par le processus A 3Ko inutilisés tant que 5Ko non libérés par A 162 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La fragmentation (3) Illustration de la fragmentation externe : Blocs de mémoire contiguës contigus alloués par A, B et C B libère sa mémoire C demande plus de mémoire qu'il n'y en a de contiguë donc celle-ci reste inutilisée 163 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire Les défauts de pages Si une page virtuelle n'est pas présente en mémoire physique, il se produit un défaut de page Le système d'exploitation doit alors recharger la page manquante depuis le disque en plaçant éventuellement une autre page physique en mémoire secondaire Si la mémoire physique est pleine : il faut retirer de la mémoire physique une page (remplacement) choisir une page « victime » si elle a été modifiée, la réécrire sur le disque modifier les indicateurs de présence dans la TPV Puis, dans tous les cas : charger la page référencée en mémoire physique (placement) modifier les indicateurs de présence dans la TPV 164 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire Les algorithmes de remplacement de page Objectif : choisir la page à retirer de manière à minimiser le nombre de défauts de page Algorithmes existants : algorithme de remplacement aléatoire algorithme de Belady (optimal) algorithme FIFO algorithme FINUFO algorithme LRU algorithme NRU 165 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire L'algorithme de Belady Principe : choisir la page qui sera référencée le plus tard possible dans le futur Stratégie théorique et impossible à mettre en oeuvre dans la réalité Algorithme optimal Algorithme servant de base de référence pour les autres stratégies Pages demandées 3 cadres de mémoire physique temps 166 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire L'algorithme FIFO Principe : choisir la page la plus ancienne en mémoire Stratégie qui ne tient pas compte de l'utilisation de chaque page Algorithme rarement utilisé car il génère beaucoup de défauts de page Pages demandées 3 cadres de mémoire physique temps 167 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire L'algorithme FINUFO Principe : algorithme FIFO + examen du bit de référence bit de référence à 0 : choix de la page bit de référence à 1 : on donne une seconde chance à la page Les pages en mémoire sont mémorisées dans une liste circulaire en forme d'horloge F B J D K A G H I C E L 168 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire L'algorithme FINUFO Exemple : Pages demandées 3 cadres de mémoire physique temps 169 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire L'algorithme LRU Principe : choisir la page la moins récemment utilisée Stratégie plus complexe à implémenter Algorithme coûteux mais efficace Pages demandées 3 cadres de mémoire physique temps 170 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire L'algorithme NRU Principe : examiner les bits de référence (R) et de modification (M) (R,M)=(0,0) (R,M)=(0,1) (R,M)=(1,0) (R,M)=(1,1) Algorithme utilisé dans Mac OS 171 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire L'anomalie de Belady L'augmentation du nombre de cadres peut se traduire par un incrément du nombre de défauts de page Algorithme FIFO avec 3 cadres de pages 9 défauts de page Algorithme FIFO avec 4 cadres de pages 10 défauts de page ! L'algorithme LRU ne rencontre pas ce problème 172 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La mémoire sous Linux (1) Le format des fichiers exécutables est divisé en régions (ou zones) : Type du fichier (les 2 premiers octets) Zone de code (.text) Zone des données (.data) Zone des données non initialisées (.bss) Zone de la pile Chaque région est constitué d'un ensemble de pages de 4Ko Le gestionnaire de mémoire est un système de segmentation paginée 173 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La mémoire sous Linux (2) L'espace d'adressage mémoire d'un processus est organisé comme suit : pile pile tas espace d'adressage de l'utilisateur espace d'adressage du noyau BSS données non initialisées DATA données initialisées TEXT instructions Noyau OS + 174 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La mémoire sous Linux (3) Cartographie mémoire d'un processus affichage du fichier maps cat /proc/pid_process/maps cat /proc/1/maps 08048000-0805e000 0805e000-0805f000 0805f000-0818b000 b7e7a000-b7e7b000 b7e7b000-b7fc4000 b7fc4000-b7fc5000 b7fc5000-b7fc7000 b7fc7000-b7fca000 b7fd7000-b7fd9000 b7fd9000-b7fda000 b7fda000-b7ff4000 b7ff4000-b7ff6000 bfd18000-bfd2d000 r-xp rw-p rw-p rw-p r-xp r--p rw-p rw-p rw-p r-xp r-xp rw-p rw-p 00000000 00015000 0805f000 b7e7a000 00000000 00149000 0014a000 b7fc7000 b7fd7000 b7fd9000 00000000 00019000 bffeb000 08:05 08:05 00:00 00:00 08:05 08:05 08:05 00:00 00:00 00:00 08:05 08:05 00:00 1212502 1212502 0 0 169844 169844 169844 0 0 0 1114565 1114565 0 /sbin/init /sbin/init [heap] /lib/tls/i686/cmov/libc-2.7.so /lib/tls/i686/cmov/libc-2.7.so /lib/tls/i686/cmov/libc-2.7.so [vdso] /lib/ld-2.7.so /lib/ld-2.7.so [stack] 175 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La mémoire sous Linux (4) Informations sur l'état de la mémoire utilisée par le processus affichage du fichier statm Exemple : cat /proc/pid_process/statm cat /proc/self/statm 734 148 126 7 0 61 0 176 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La mémoire sous Linux (5) Etat actuel d'un processus (affichage du fichier status) : cat /proc/pid_process/status cat /proc/6252/status Name: bash State: S (sleeping) Tgid: 6252 Pid: 6252 PPid: 6248 [...] VmPeak: 5956 kB VmSize: 5956 kB VmLck: 0 kB VmHWM: 3196 kB VmRSS: 3196 kB VmData: 1840 kB VmStk: 84 kB VmExe: 668 kB VmLib: 1784 kB VmPTE: 12 kB Threads: 1 177 [...] Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La mémoire sous Linux (6) Statistiques sur l'usage global de la mémoire virtuelle du système : appel système vmstat Exemple : vmstat nb_secondes nb_fois vmstat 5 10 procs ---------memory---------- --swap-- --io--- --system- ---cpu---r b swpd free buff cache si so bi bo in cs us sy id . . . 1 0 13344 1444 1308 19692 0 168 129 42 1505 713 20 11 69 1 0 13856 1640 1308 18524 64 516 379 129 4341 646 24 34 42 3 0 13856 1084 1308 18316 56 64 14 0 320 1022 84 9 8 178 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion de la mémoire La mémoire sous Linux (7) Autres appels système relatifs à la gestion de mémoire : brk(adr) modifie la taille d'un segment de données mmap(adr, lg, prot, flags, df, offset) mappe un fichier en mémoire munmap(adr, lg) supprime le mappage d'un fichier 179 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Plan du cours Introduction aux systèmes d'exploitation Présentation générale d'UNIX Programmation shell Processus et parallélisme Ordonnancement Communication et synchronisation Gestion de la mémoire Gestion de E/S 180 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Enjeux liés à la gestion des E/S (1) La gestion des E/S par le système d'exploitation est un véritable défi lié aux différences multidimensionnelles des périphériques : rapidité du périphérique volume des informations service proposé direction du flux d'informations protocole de communication 181 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Enjeux liés à la gestion des E/S (2) Débits de données de certains périphériques courants (2003) : Périphérique Débit de données Clavier 10 octets/s Souris 100 octets/s Modem 56K 7 ko/s Imprimante laser 100 ko/s Scanner 400 ko/s USB 1.5 Mo/s CD-Rom 40x 6 Mo/s Ecran XGA 60 Mo/s Disque IDE 5 Mo/s Disque SCSI Ultra 2 80 Mo/s 182 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Enjeux liés à la gestion des E/S (3) Le système d'exploitation doit : offrir de bonnes abstractions aux programmes gouverner leur utilisation par les processus coordonner efficacement les périphériques Soucis d'uniformisation de l'interface offerte par le SE pour les E/S 183 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Les périphériques d'E/S (1) Un périphérique d'E/S est un matériel informatique assurant une communication entre l'unité centrale de l'ordinateur et le monde extérieur On distingue 3 types de périphériques : les périphériques d'entrée les périphériques de sortie les périphériques d'entrée/sortie Les périphériques peuvent être internes ou externes 184 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Exemples de périphériques d'entrée Dispositifs de pointage Dispositifs d'acquisition 185 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Exemples de périphériques de sortie 186 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Exemples de périphériques d'entrée/sortie 187 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Les périphériques d'E/S (2) Les périphériques d'E/S se répartissent en 2 catégories : les périphériques par blocs stockent des informations dans des blocs de taille fixe chaque bloc possède une adresse propre exemples : disques, bandes magnétiques, etc. les périphériques par caractères acceptent et fournissent un flot de caractères ne sont pas adressables exemples : imprimantes, interfaces réseaux, souris, etc. 188 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Les périphériques d'E/S (3) Les périphériques d'E/S sont généralement constitué : d'un composant mécanique ex : un moniteur d'un composant électronique ex : une carte graphique contrôleurs de périphérique Les 2 composants peuvent être intégrés 189 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Les périphériques d'E/S (4) Chaque périphérique d'E/S connecté à un ordinateur doit disposer d'un programme spécifique pour le contrôler : le pilote de périphérique Interface entre le matériel et le système d'exploitation (traducteurs) Rôles d'un pilote d'E/S : traitement des requêtes émanant du logiciel envoi des commandes au contrôleur de périphérique vérification de leur bon acheminement 190 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Les périphériques d'E/S (5) Les pilotes d'E/S doivent : être indépendants par rapport au matériel posséder une désignation universelle gérer les erreurs non résolues par le contrôleur Les pilotes d'E/S assure la communication avec les périphériques selon l'un des 4 protocoles élémentaires suivants : l'attente active la scrutation les interruptions l'accès direct à la mémoire (DMA) 191 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Architecture de contrôle des E/S Programme utilisateur Espace utilisateur Partie du système d'exploitation indépendante du matériel Espace noyau Matériel Pilote vidéo Pilote d'imprimante Pilote de son Contrôleur vidéo Contrôleur d'imprimante Contrôleur de son Périphériques 192 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Les disques Grande variété de types de disques : les disques optiques CD-ROM CD enregistrables DVD DVD enregistrables les disques magnétiques disquettes disques durs 193 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Les disques optiques Principe des disques optiques (rappels) : Alternance de creux et de méplats disposés en une spirale continue Sillon en spirale Secteur 194 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Les disques magnétiques (1) Principe des disques magnétiques (rappels) : Piste Segment Secteur Secteur Tête Bras Cylindre 195 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Piste Gestion des E/S Les disques magnétiques (2) Quelques chiffres : Paramètres Disquette IBM Disque dur WD Nb de cylindres 40 10.601 Pistes par cylindre 2 12 Secteurs par piste 9 281 Secteurs par disque 720 35.742.000 Octets par secteurs 512 512 Capacité du disque 360 ko 18,3 Go 196 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Cas du disque dur (1) Facteurs clés des performances d'un disque dur : temps de positionnement S temps de rotation R temps de transfert T Temps d'accès total A : A = S + R + T 197 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Cas du disque dur (2) Objectif : réduire au maximum le temps d'accès moyen au disque Comportement du pilote de périphérique : reçoit les requêtes émanant du logiciel choisit la prochaine requête à traiter vérifie la validité des paramètres de la requête détermine les opérations que le contrôleur doit exécuter traduit les requêtes d'E/S en termes concrets 198 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Algorithmes d'ordonnancement du bras du disque (1) Principaux algorithmes existants : FIFO SSTF SCAN et C-SCAN LOOK et C-LOOK F-SCAN N-step SCAN 199 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Algorithmes d'ordonnancement du bras du disque (2) FIFO : First In First Out 0 1 9 11 12 16 34 36 10 35 20 Requêtes : 1, 36, 16, 34, 9, 12 Ordre de service : 1, 36, 16, 34, 9, 12 18 25 3 Nb total de cylindres parcourus : 111 200 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Algorithmes d'ordonnancement du bras du disque (3) SSTF : Shortest Seek Time First 0 1 9 11 12 16 34 36 1 3 Requêtes : 1, 36, 16, 34, 9, 12 7 Ordre de service : 12, 9, 16, 1, 34, 36 15 33 2 Nb total de cylindres parcourus : 61 201 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Algorithmes d'ordonnancement du bras du disque (4) SCAN : algorithme de l'ascenseur 0 1 9 11 12 16 34 36 49 1 4 18 Requêtes : 1, 36, 16, 34, 9, 12 2 Ordre de service : 12, 16, 34, 36, 9, 1 13 40 8 Nb total de cylindres parcourus : 86 202 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Algorithmes d'ordonnancement du bras du disque (5) C-SCAN : Circular SCAN 0 1 9 11 12 16 34 36 49 1 4 18 Requêtes : 1, 36, 16, 34, 9, 12 2 Ordre de service : 12, 16, 34, 36, 1, 9 13 49 1 8 Nb total de cylindres parcourus : 96 203 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Algorithmes d'ordonnancement du bras du disque (6) LOOK : SCAN avec changement de direction lorsqu'il n'y a plus de requêtes en avant de la tête 0 1 9 11 12 16 34 36 1 4 18 Requêtes : 1, 36, 16, 34, 9, 12 2 Ordre de service : 12, 16, 34, 36, 9, 1 27 8 Nb total de cylindres parcourus : 60 204 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Algorithmes d'ordonnancement du bras du disque (7) C-LOOK : Circular LOOK 0 1 9 11 12 16 34 36 1 4 18 Requêtes : 1, 36, 16, 34, 9, 12 2 Ordre de service : 12, 16, 34, 36, 1, 9 35 8 Nb total de cylindres parcourus : 68 205 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Algorithmes d'ordonnancement du bras du disque (8) F-SCAN 2 sous-files de requêtes de longueur illimitée lorsqu'une sous-file est en cours de traitement, les nouvelles requêtes sont stockées dans l'autre sous-file lorsque toutes les requêtes de la sous-file courante ont été traitées, l'algorithme bascule sur l'autre sous-file dans chaque sous-file les requêtes sont servies selon l'algorithme SCAN 206 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Algorithmes d'ordonnancement du bras du disque (9) N-step SCAN plusieurs sous-files de requêtes de taille maximale égale à N traite uniquement le N premières requêtes d'une sous-file lorsqu'une sous-file est en cours de traitement, les nouvelles requêtes sont placées das la prochaine sous-file non remplie dans chaque sous-file les requêtes sont servies selon l'algorithme SCAN les sous-files sont traitées entre elles dans l'ordre FIFO 207 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Algorithmes d'ordonnancement du bras du disque (10) Comment choisir le « bon » algorithme ? SSTF est d'un usage courant du fait de sa simplicité SCAN et C-SCAN sont d'autant plus intéressants que le nombre de requêtes est élevé (charge disque importante) SSTF et LOOK sont tous deux des compromis intéressants en tant qu'algorithmes par défaut La performance dépend du nombre et du type des requêtes Les disques durs modernes assurent souvent eux-mêmes l'ordonnancement 208 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S En résumé... Le système d'exploitation fournit (à travers les pilotes de périphériques) une abstraction du matériel d'E/S L'interface fournie doit être simple et identique (si possible) pour tous les périphériques Sous Linux, tous les périphériques sont vus comme des fichiers spéciaux dans l'arborescence : /dev/cdrom : accès au CD-ROM /dev/fd0 : accès au lecteur de disquette /dev/hda : accès au premier disque dur /dev/sda : accès à une clé usb /dev/mouse : accès à la souris 209 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Gestion des E/S Pilotage logiciel des E/S Primitives C de gestion des périphériques : open() : ouvre l'accès à un périphérique close() : ferme de l'accès à un périphérique startio() : vérifie si un périphérique est actif interrupt() : routine exécutée lorsque le périphérique envoie une interruption ioctl() : met en oeuvre toute fonction spéciale pouvant être appliquée au périphérique 210 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009 Références A. Tanenbaum, Systèmes d'exploitation, 2ème édition, Pearson Education, 2003. M. Divay, UNIX, Linux et les systèmes d'exploitation, 2ème édition, Dunod, 2004. J. Archer Harris, Systèmes d'exploitation, EdiScience, 2002. A. Silberschatz, P.-B. Galvin, Operating System Concepts, 4ème édition, Addison-Wesley, 1994. C.-J. Theaker, G.-R. Brookes, Introduction aux systèmes d'exploitation : Théorie et pratique, Eyrolles, 1987. W. Stallings, Operating systems, Maxwell Macmillan International Editions, 1992. J. Beauquier, B. Bérard, Systèmes d'exploitation : Concepts et algorithmes, EdiScience, 1994. 211 Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009