Upload
others
View
15
Download
3
Embed Size (px)
Citation preview
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
1
Systèmes d'exploitation
Audrey Queudet
Université de Nantes
2010
Projet DVD-MIAGE
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
2
Plan du cours
Introduction aux systèmes d'exploitation
Présentation générale d'UNIX
Programmation shell
Processus et parallélisme
Communication et synchronisation
Ordonnancement
Gestion de la mémoire
Gestion de E/S
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
3
Plan du cours
Introduction aux systèmes d'exploitation
Présentation générale d'UNIX
Programmation shell
Processus et parallélisme
Communication et synchronisation
Ordonnancement
Gestion de la mémoire
Gestion de E/S
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
4
Rappels : structure matérielle d'un ordinateur
Introduction aux systèmes d'exploitation
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
5
Rôle d'un système d'exploitation (1)
Introduction aux systèmes d'exploitation
SE
Applications
Matériel
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
6
Introduction aux systèmes d'exploitation
SYSTEME D'EXPLOITATION
Rôle d'un système d'exploitation (2)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
7
Introduction aux systèmes d'exploitation
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)
Rôle d'un système d'exploitation (3)
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
8
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 particulierl'utilisateur (clavier, souris, scanner, webcam, imprimante, modem, etc.)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
9
Introduction aux systèmes d'exploitation
Nombre d'utilisateurs de l'ordinateur : Mono-utilisateur Multi-utilisateur
Nombre de processus à exécuter :
Monotâche Multitâche
Complexité d'un système d'exploitation
Partage des ressources (CPU, mémoire, réseau, périphériques, etc.) entre processus et entre utilisateurs
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
10
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
11
Introduction aux systèmes d'exploitation
Aperçu historique des systèmes d'exploitation (1)
Microsoft Windows
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
12
Introduction aux systèmes d'exploitation
Aperçu historique des systèmes d'exploitation (2)
GNU/Linux, Mac OS, BSD
UNIX
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
13
Plan du cours
Introduction aux systèmes d'exploitation
Présentation générale d'UNIX
Programmation shell
Processus et parallélisme
Communication et synchronisation
Ordonnancement
Gestion de la mémoire
Gestion de E/S
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
14
UNIX est né au sein des laboratoires BELL (Filiale d'AT&T)
Les origines
Présentation générale d'UNIX
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
15
Multitâche
Caractéristiques principales
Présentation générale d'UNIX
Multi-utilisateur
Portable
Interactif
Un riche panel d'outils (plusieurs centaines)
Système à mémoire virtuelle
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
16
Editeurs de texte
Outils disponibles
Présentation générale d'UNIX
Développement logiciel
Communication
Documentation
Bureautique
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
17
Structure générale
GestionE/S
Gestionmémoire
Outils d’édition
Outils de
compil.
Outils de debuggage
Ordonnanceur
Gestiondu temps
NiveauNoyau
NiveauExécutif
NiveauSE
Présentation générale d'UNIX
Langages de commandes (shell)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
18
Le système de fichiers UNIX
Présentation générale d'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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
19
L'arborescence UNIX
Présentation générale d'UNIX
L'arborescence UNIXracine
Commandes système
Liste des périphériques
Utilisateurs
Utilitaires
Fichiers temporaires
Bibliothèquessystème
Accès aux périphériques
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
20
Accès aux fichiers
Présentation générale d'UNIX
Chemin absolu :
Chemin relatif au répertoire courant (programmes sur l'exemple) :
/home/queudet/programmes/progC/p1.c/home/queudet/textes/lettre.txt
progc/p1.c../textes/lettres.txt
Chemin relatif au répertoire d'accueil (/home/queudet sur l'exemple) :
~/progc/p1.c~/textes/lettres.txt
Permet de remonter d'un niveau dans l'arbre
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
21
Utilisateurs et groupes
Présentation générale d'UNIX
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émarrageaprè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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
22
Lecture (read) r
Ecriture (write) w
Exécution (execute) x
Les droits d'accès
Présentation générale d'UNIX
3 types de droits :
Propriétaire (user) u
Groupe (group) g
Autres (others) o
3 catégories d'utilisateurs : 4 types de fichier :
Ordinaire -
Répertoire (directory) d
Lien symbolique (link) l
Spécial c ou b
Les droits d'un fichier sont représentés par une chaîne de10 caractères :
- rxw rw- r--
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
23
Les droits d'accès en octal
Présentation générale d'UNIX
Exemples :
Droits Valeur
--- 0
--x 1
-w- 2
-wr 3
r-- 4
r-x 5
rw- 6
rwx 7
-rw------- : drw-r—-r-- : drwxr-x--- :
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
24
Les commandes de base UNIX
Présentation générale d'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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
25
A) Documentation en ligne (1)
Présentation générale d'UNIX
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
26
A) Documentation en ligne (2)
Présentation générale d'UNIX
Visualisation d'une page du manuel :
Recherche des pages qui se rapportent à un mot clé :
man [-s section] commande
man -k mot_cle
Sections :
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
27
B) Navigation dans l'arborescence
Présentation générale d'UNIX
Affichage du chemin absolu du répertoire courant :
pwd
Suppression d'un répertoire vide :
rmdir rep_a_supprimerrmdir enseignements
Changement de répertoire :
cd chemincd /homecd textescd ../programmes
Création d'un répertoire :
mkdir rep_a_creermkdir /home/queudet/enseignements
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
28
C) Visualisation de fichiers (1)
Présentation générale d'UNIX
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 textestotal 2-rw-rw-r-- 1 Olivier etudiant 168 Dec 2 15:09 chant.txt-rw-r--r-- 1 Olivier etudiant 81 Nov 30 14:19 lettre.txt
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
29
C) Visualisation de fichiers (2)
Présentation générale d'UNIX
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
30
D) Manipulation de fichiers
Présentation générale d'UNIX
Copie d'un fichier vers un autre fichier :
cp chemin_source chemin_destinationcp programmes/progc/p1.c programmes/archive/prg1.c
Changement du nom ou déplacement d'un fichier :
mv chemin_source chemin_destinationmv programmes/progc/p1.c programmes/progc/programme1.cmv programmes/progc/*.c programmes
Supression d'un ou plusieurs fichiers :
rm cheminrm programmes/progc/p1.crm programmes/progc/*.c
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
31
E) Gestion des droits d'accès
Présentation générale d'UNIX
Changement des droits d'accès d'un fichier spécifié :
chmod [-R] u|g|o +|- r|w|x cheminchmod [-R] valeur_en_octal chemin
Exemple :
chmod go+rx programmes/progcchmod o-w textes/*.txtchmod 765 textes/lettre.txt
Changement du groupe d'appartenance d'un fichier ou d'un répertoire :
chggrp [-R] groupe cheminchggrp prof /home/Olivier
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
32
F) Processus
Présentation générale d'UNIX
Liste des processus satisfaisant un critère donné (spécifié en option) :
ps [-options]
Exemple :
ps -u dupontps -rps -elf
Destruction d'un processus :
kill -9 no_processuskill -9 521
Lancement en arrière-plan d'un processus :
nom_processus &prog1 &
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
33
G) Identification des utilisateurs
Présentation générale d'UNIX
Liste des utilisateurs connectés :
who
Affichage du login sous lequel l'utilisateur est connecté :
whoamiOlivier
Affichage du no et du nom de l'utilisateur, du no et nom de ses groupes :
iduid=501(Olivier) gid=502(etudiant) groups=502(etudiant), 503(amis)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
34
H) Recherche de fichiers ou de ch. de caractères (1)
Présentation générale d'UNIX
Affichage des lignes d'un ou plusieurs fichiers contenant une ch. de car. :
grep [-options] expression fichiergrep "Cher Monsieur" textes/*.txttextes/lettre.txt:Cher Monsieur,
grep "c.*e" textes/*.txttextes/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] fichierwc textes/lettre.txt
7 10 81 textes/lettres.txtwc -l textes/lettre.txt
7 textes/lettre.txt
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
35
H) Recherche de fichiers ou de ch. de caractères (2)
Présentation générale d'UNIX
Affichage des fichiers répondant à un critère spécifié en option :
find repertoire [-options] -print
Exemples :
find programmes -name "*.c"./programmes/progc/p1.c./programmes/progc/p2.cfind . -type d -name "*s" -print./programmes/./textes/
Options : -name -type -user -group-size -atime-mtime -ctime-perm -links
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
36
I) Utilitaires classiques : éditeurs, compilateurs
Présentation générale d'UNIX
Editeur de texte en standard sous Unix :
vi
Compilateurs :
ccgccg++f77pc
Autres éditeurs :
emacsgeditxedit
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
37
J) Redirections et tubes (1)
Présentation générale d'UNIX
Redirections des entrées-sorties :
Redirection de l'entrée standard :
commande < chemingrep "tmp" < test
commande0 1
2
0 : entrée standard (STDIN)1 : sortie standard (STDOUT)2 : sortie des erreurs (STDERR)
Redirection de la sortie standard :
commande > cheminls > test
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
38
J) Redirections et tubes (2)
Présentation générale d'UNIX
Redirection de la sortie d'erreur :
commande 2> cheminls -l 2> /dev/null
Redirection de la sortie d'une commande vers l'entrée d'une autre (tube):
commande1 | commande2grep "Monsieur" *.txt | wc -l
Redirection de la sortie d'erreur vers la sortie standard :
commande 2>&1 chemincat fichier > copie 2>&1
commande10
1
2
commande20
1
2
tube
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
39
Interprétation des commandes
Présentation générale d'UNIX
Affichage d'un prompt
Attente de la frappe d’une ligne et analyse de la ligne
Exécution de la ou les commande(s)
101110010110001110111100101101111000101110001011
ls -lcat fmv fiwc -lcp tegrep
Le Shell
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
40
Plan du cours
Introduction aux systèmes d'exploitation
Présentation générale d'UNIX
Programmation shell
Processus et parallélisme
Communication et synchronisation
Ordonnancement
Gestion de la mémoire
Gestion de E/S
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
41
Le Shell UNIX (1)
Programmation shell
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
2 modes d'utilisation : Simple interpréteur de commandes (mode interactif) Langage de programmation interprété (scripts)
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
42
Le Shell UNIX (2)
Programmation shell
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
43
Pourquoi utiliser un shell : avantages ?
Programmation shell
Travail en ligne de commande souvent plus efficace qu'à travers uneinterface graphique
Dans de nombreux contextes, on ne dispose pas d'interface graphique
Automatisation de tâches répétitives
Meilleure compréhension du système UNIX (fichiers de configuration...)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
44
Pourquoi ne pas utiliser un shell : inconvénients ?
Programmation shell
Syntaxe cohérente mais parfois obscure (concision vs. clarté)
Documentation difficile d'accès pour le débutant
Messages d'erreurs parfois difficilement exploitables
Relative lenteur
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
45
Les différents shells
Programmation shell
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
46
Scripts shell en bash : les concepts de base
Programmation shell
Caractères spéciaux
Variables
variables d'environnement variables de l'utilisateur
Structures de contrôle
exécution conditionnelle choix multiple boucle for boucles while et until
Opérateurs
Expressions régulières
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
47
Caractères spéciaux (ou métacaractères)
Programmation shell
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
48
Variables d'environnement (1)
Programmation shell
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
49
Variables d'environnement (2)
Programmation shell
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 :
printenvPWD=/home/OlivierLANG=frSHELL=/bin/bash
printenv LANGfr
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
50
Variables de l'utilisateur
Programmation shell
L'utilisateur peut déclarer facilement de nouvelles variables par l'affectation directe d'une valeur (numérique, chaîne de caractères) :
Exemples :
[email protected]=audreyvous=L2phrase1="Bonjour $vous, moi c\'est $moi"phrase2='Bonjour $vous, moi c\'est $moi'echo $phrase1Bonjour L2, moi c'est audreyecho $phrase2Bonjour $vous, moi c\'est $moi
rep=`pwd`echo $rep/home/queudet/data
ma_variable=valeur
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
51
Opérateurs sur les fichiers
Programmation shell
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
52
Opérateurs sur les chaînes
Programmation shell
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 deux chaînes sont égales
Chaîne1 != chaîne2 Vrai si les deux chaînes sont différentes
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
53
Opérateurs arithmétiques
Programmation shell
Opérateur Description
+ addition
- soustraction
* multiplication
/ division
** puissance
% modulo
Expressions arithmétiques :
$(( ... ))
n=1echo $(( 5*n+1 ))
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
54
Opérateurs de comparaison numérique
Programmation shell
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 (≥)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
55
Opérateurs booléens
Programmation shell
Opérateur Description
-a ET logique
-o OU logique
! NON logique
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
56
Structures de contrôle : exécution conditionnelle
Programmation shell
L'instruction if permet d'exécuter des instructions si une condition est vraie
if [ condition ]then
actionsfi
Le bloc if/then
if [ condition ]then
action1else
action2fi
Le bloc if/then/else
if [ condition1 ]then
action1elif [ condition2 ]then
action2elif [ condition 3 ]then
action3else
action4fi
Enchaînement de plusieurs conditions
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
57
Structures de contrôle : choix multiple
Programmation shell
L'instruction case permet de choisir une suite d'instructions suivant lavaleur d'une expression
case "$x" incase1)
actions1;;
case2)actions2;;
...caseN)
actionsN;;
esac
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
58
Structures de contrôle : boucle for
Programmation shell
L'instruction for permet une exécution répétitive d'une suite d'instructions
for VAR in LISTEdo
actionsdone
Schéma classique
for ((initialisation de VAR; contrôle de VAR; modification de VAR))do
actionsdone
Schéma alternatif
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
59
Structures de contrôle : boucles while et until
Programmation shell
L'instruction while permet une exécution répétitive d'une suite d'instructions tant qu'une condition est vraie
while [ condition ]do
actionsdone
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
actionsdone
Condition de continuation de la boucle
Condition d'arrêt de la boucle
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
60
Expressions régulières : définition
Programmation shell
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.
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
61
Expressions régulières : les opérateurs
Programmation shell
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èresne 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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
62
Ecriture de scripts bash
Programmation shell
Un script bash est un simple fichier texte exécutable (droit x) dont la première ligne doit obligatoirement être #!/bin/bash
#!/bin/bash## Shell-script affichant "bonjour" sur la sortie standard#message='bonjour'echo $message
Dans un éditeur de texte, écrivons le script suivant :
Enregistrons ce script sous le nom bonjour.sh
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
63
Exécution de scripts bash
Programmation shell
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
. bonjour.sh
sh bonjour.sh
exec bonjour.sh
ou
ou
ou
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
64
Paramètres de scripts bash
Programmation shell
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 desvariables 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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
65
Plan du cours
Introduction aux systèmes d'exploitation
Présentation générale d'UNIX
Programmation shell
Processus et parallélisme
Communication et synchronisation
Ordonnancement
Gestion de la mémoire
Gestion de E/S
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
66
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
Processus et parallélisme
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
67
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.
Processus et parallélisme
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
68
Utilisation des threads
Amélioration de l'interactivité d'un programme (ex : traitement de texte)
HD
Enregistrement sur disque Interactivité avec l'utilisateur
Mise en forme
Processus et parallélisme
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
69
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)...
Processus et parallélisme
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
70
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
/bin/bash (536)/bin/bash (534) /bin/bash (535)
konsole (532)konsole (530) konsole (531)
ps (634)ls -al (602)
konsole (533) lpd (408)
init (1)
Processus et parallélisme
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
71
Commandes UNIX de gestion des processus (1)
Liste des processus satisfaisant un critère donné (spécifié en option) :
ps [-options]
Exemples :
ps -efUID PID PPID C STIME TTY TIME COMMAND root 1 0 0 Dec 6 ? 1:02 init ... jean 319 300 0 10:30:30 ? 0:02 /usr/dt/bin/dtsession olivier 321 319 0 10:30:34 ttyp1 0:02 csh olivier 324 321 0 10:32:12 ttyp1 0:00 ps -ef
ps -efu Olivierolivier 321 319 0 10:30:34 ttyp1 0:02 csh olivier 324 321 0 10:32:12 ttyp1 0:00 ps -efu
Processus et parallélisme
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
72
Commandes UNIX de gestion des processus (2)
Destruction d'un processus :
kill -9 no_processuskill -9 521
Lancement en arrière-plan d'un processus :
nom_processus&prog1&
Changement de la priorité d'un processus :
nice -valeur commandenice -5 gcc programme.c
Affichage des processus en background :
jobs
Processus et parallélisme
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
73
Manipulation de processus en langage C (1)
Principes généraux :
processus 1(parent)
processus 2(enfant)
execlp(B)
fork()wait()
exit()
Exécution programme A
Exécution programme B
Processus et parallélisme
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
74
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 ();
Processus et parallélisme
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
75
Etats d'un processus
actif : le processus s’exécute sur le processeur
bloqué : il manque au processus une ressource (en plus du processeur)
pour qu’il puisse s’exécuter
prêt : le processus est prêt à s’exécuter mais n’a pas le processeur
actif bloqué
prêt
réveil
préemption
élection
blocage
Processus et parallélisme
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
76
Allocation du processeur aux processus
Comment contrôler l'ordre de passage des processus sur le processeur ?
P1
P2
P3
CPUL'ordonnanceur
L'ordonnanceur est un composant (procédure) du système d'exploitation
Comment contrôler la répartition du temps d'exécution entre les processus ?
Processus et parallélisme
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
77
Plan du cours
Introduction aux systèmes d'exploitation
Présentation générale d'UNIX
Programmation shell
Processus et parallélisme
Communication et synchronisation
Ordonnancement
Gestion de la mémoire
Gestion de E/S
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
78
Ordonnancement : quels objectifs ? (1)
Ordonnancement
L'ordonnancement consiste à choisir le processus à exécuter à uninstant 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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
79
Ordonnancement : quels objectifs ? (2)
Ordonnancement
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
80
Ordonnancement des processus
Ordonnancement
ORDONNANCEUR : alloue le processeur aux différents processus selon un algorithme d'ordonnancement donné
PROCESSEUR
file d’attente desprocessus prêts
file d’attente des processus bloqués
processus élu
ORDONNANCEUR
actif bloqué
prêtréveil
préemptionélection
blocage
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
81
Critères d’ordonnancement
Utilisation du processeur
Ordonnancement
Débit (ou capacité de traitement)
Temps de traitement
Temps de réponse
Prévisibilité
Equité
Priorités
Temps d'attente
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
82
Typologie des algorithmes d’ordonnancement
Monoprocesseur / multiprocesseur
En-ligne / Hors-ligne
Préemptif / Non préemptif
Centralisé / Réparti
Oisif / Non oisif
Ordonnancement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
83
Ordonnancement non préemptif
Ordonnancement selon l’ordre d’arrivée :
Ordonnancement selon la durée de calcul :
premier arrivé, premier servi
First Come First Serve (FCFS)
travail le plus court d’abord
Shortest Job First (SJF)
Ordonnancement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
84
Ordonnancement préemptif
Ordonnancement sans notion de priorité :
Ordonnancement à priorités (statiques ou dynamiques) :
temps-partagé avec politique du tourniquet
Round-Robin (RR)
la tâche la plus prioritaire obtient le processeur
P3P2
P1
CPU
Ordonnancement
Ordonnancement selon la durée de calcul restante :
temps restant le plus court d'abord
Shortest Remaining Time (SRT)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
85
Ordonnancement First Come First Served (FCFS)
Principe : Les processus sont ordonnancés selon leur ordre d'arrivée
Exemple (P1, P
2, P
3 et P
4 arrivent dans cet ordre à t = 0) :
Ordonnancement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
86
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
Ordonnancement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
87
Ordonnancement Shortest Job First (SJF)
Principe : Le processus dont le temps d'exécution est le plus court est ordonnancé en priorité
Exemple (P1, P
2, P
3 et P
4 arrivent à t = 0) :
Ordonnancement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
88
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
Ordonnancement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
89
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 P
4 arrivent à t = 0; P
2 à t = 20; P
1 à t = 50) :
Ordonnancement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
90
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
Ordonnancement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
91
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
Ordonnancement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
92
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 !
Ordonnancement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
93
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, P
2, P
3, P
4)=(3,2,0,1) ) :
Dans certains systèmes, l'échelle des priorités est inversée (0 est alors la priorité la plus faible)
Ordonnancement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
94
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
Ordonnancement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
95
Ordonnancement sous Linux (1)
3 algorithmes d'ordonnancement différents :
un pour les processus conventionnels
SCHED_NORM
deux pour les processus temps réel
SCHED_FIFO
SCHED_RR
Ordonnancement
2 échelles de niveaux de priorités :
une pour les processus conventionnels
une pour les processus temps réel
Noyau Linux 2.6
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
96
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
Ordonnancement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
97
Ordonnancement sous Linux (3)
Détermination du bonus :
Ordonnancement
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
98
Ordonnancement sous Linux (4)
La sélection des processus s'effectue en temps constant : O(1)
Ordonnancement
Cas multiprocesseur : une file de processus par processeur
Les processus peuvent être préemptés
/usr/src/linux2.6.x/kernel/sched.c
Pour aller plus loin...
L'ordonnanceur ordonne les processus en fonction de leur priorité statique
L'ordonnanceur choisit les processus en fonction de leur priorité dynamique
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
99
Plan du cours
Introduction aux systèmes d'exploitation
Présentation générale d'UNIX
Programmation shell
Processus et parallélisme
Communication et synchronisation
Ordonnancement
Gestion de la mémoire
Gestion de E/S
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
100
Contexte (1)
Communication et synchronisation
Processus concurrents vs. Processus distants
Noyau du SE
Processusutilisateur
Machine
Noyau du SE
Processusutilisateur
Machine
Noyau du SE
Processusutilisateur
Machine
Processusutilisateur
Communications intra-système Communications inter-système
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
101
Contexte (2)
Communication et synchronisation
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
102
Contexte (3)
Communication et synchronisation
Une ressource est dite critique lorsque des accès concurrents à cetteressource 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 sonteffectué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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
103
Accès aux ressources critiques (1)
Communication et synchronisation
Cas d'incohérence de données : problème de la synchronisation relativede l'exécution des processus
process#1
lire (N, Account)
N :=N + 100écrire (N, Account)
process#2
lire (N, Account)N :=N + 100écrire (N, Account)
Process#2 ne doit pas accéder à N tant que process#1 l'utilise !
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
104
Accès aux ressources critiques (2)
Communication et synchronisation
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
105
Accès aux ressources critiques (3)
Communication et synchronisation
Cas d'interblocage : ensemble de processus attendant chacun une ressource déjà possédée par un processus de l'ensemble
process#1 process#2Ressource#1
Ressource#2
utilise
utilise
attend
attend
L'attente est infinie
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
106
Accès aux ressources critiques (4)
Communication et synchronisation
Cas de coalition et famine : ensemble de processus monopolisant des ressources au détriment d'autres processus.
process#3
Ressource#1 Ressource#2
utiliseattend
L'attente est indéfinie
process#1
process#2
process#4
attendutilise
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
107
Paradigmes de concurrence
Communication et synchronisation
Problème des producteurs/consommateurs
Problème des lecteurs/rédacteurs
Problème des philosophes
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
108
Problème des producteurs/consommateurs (1)
Communication et synchronisation
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
Exemple : la file d'impression
Les seconds (consommateurs) utilisent ces éléments et les retirent de la mémoire
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
109
Problème des producteurs/consommateurs (2)
Communication et synchronisation
Structure du système producteurs/consommateurs :
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
110
Problème des lecteurs/rédacteurs (1)
Communication et synchronisation
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
Les rédacteurs sont parfois appelés écrivains
D'autres processus (les rédacteurs) modifient le contenu de cette zone
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
111
Problème des lecteurs/rédacteurs (2)
Communication et synchronisation
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
Les lecteurs n'ont besoin de cette exclusion mutuelle que dans le casoù aucun autre lecteur n'utilise la mémoire
La mémoire partagée doit être protégée par exclusion mutuelle
Principe :
Utilisation d'un compteur
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
112
Problème des philosophes (1)
Communication et synchronisation
5 philosophes passent leur vie à manger et à penser
Pour manger, ils ont besoin de 2 fourchettes mais il n'y a que 5 fourchettes
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
113
Problème des philosophes (2)
Communication et synchronisation
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
Principe :
Lorsqu'il termine de manger, le philosophe réveille ses voisins et se remetà penser
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
114
Résolution des problématiques
Communication et synchronisation
Comment gérer les accès concurrents aux ressources ?
Introduction de nouveaux mécanismes
- de communication
- de synchronisation
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
115
Communications inter-processus
Communication et synchronisation
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
116
Communication par fichier (1)
Communication et synchronisation
Les fichiers constituent la manière primitive de communication :
Afin d'éviter les accès concurrents en lecture / écriture, on procède àdes verrouillages
-----------------------------------
process#1
process#2
process#3
Approche coûteuse (accès au système de fichier du disque)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
117
Communication par fichier (2)
Communication et synchronisation
Verrouillage de tout le fichier :
flock() LOCK_SH : verrouillage en mode partagé LOCK_EX : verrouillage en mode exclusif
Verrouillage d'une partie du fichier :
lockf() F_TEST : teste si une zone est verrouillée F_LOCK : verrouille une zone
fcntl()
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
118
Communication par mémoire partagée (1)
Communication et synchronisation
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
Segment de
mémoire partagée
Espace d'adressage du processus
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
119
Communication par mémoire partagée (2)
Communication et synchronisation
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 ...
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
120
Synchronisation par sémaphore (1)
Communication et synchronisation
Les sémaphores sont utilisés dans le contrôle d'accès à une ressource
compteur
liste d'attente des processus bloqués sur le sémaphore
SémaphoreSem
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
121
Synchronisation par sémaphore (2)
Communication et synchronisation
Types de synchronisation possibles :
Exclusion mutuelle
process#1 process#2
Barrière de synchronisation
process#1 process#2Section critique
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
122
Synchronisation par sémaphore (3)
Communication et synchronisation
1ère opération : test de prise du sémaphore (« Puis-je ?)
Sem.P() : si (Sem.compteur>0) alors Sem.compteur = Sem.compteur-1sinon insère_ce_processus(Sem.file)
finsi
0 compteur
liste d'attente des processus bloqués sur le sémaphore
0 compteur
liste d'attente des processus bloqués sur le sémaphore
P5P8 P5P8P3
Sem.P()
P3
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
123
Synchronisation par sémaphore (4)
Communication et synchronisation
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
0 compteur
liste d'attente des processus bloqués sur le sémaphore
1 compteur
liste d'attente des processus bloqués sur le sémaphore
P5
Sem.V()
P3
P5
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
124
Synchronisation par sémaphore (5)
Communication et synchronisation
Types de sémaphores :
Sémaphore compteur : implémentation de la barrière de synchronisation
Le compteur doit être initialisé à 0
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
125
Synchronisation par sémaphore (6)
Communication et synchronisation
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
126
Synchronisation par signaux (1)
Communication et synchronisation
Les signaux permettent d'avertir simplement un processus de l'arrivéed'un événement
process#1
Ctrl-CNoyau du SE
signal
Les signaux sont limités au rôle de notification d'événement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
127
Synchronisation par signaux (2)
Communication et synchronisation
A chaque signal est associé un comportement par défaut :
Il existe environ 32 signaux prédéfinis identifiés par un nom et un numéro
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
128
Synchronisation par signaux (3)
Communication et synchronisation
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
129
Synchronisation par signaux (4)
Communication et synchronisation
2 façons d'envoyer un signal à un processus :
Un caractère de contrôle :
En ligne de commande :
CRTL-C envoie SIGINT (interruption)
CRTL-Z envoie SIGSTOP (suspension)
CRTL-\ envoie SIGQUIT (fin)
kill [-no_signal] no_processuskill -9 4014
kill [-nom_signal] no_processuskill -SIGUSR1 2584
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
130
Synchronisation par signaux (5)
Communication et synchronisation
Primitives C de gestion des signaux :
kill() : envoie un signal vers un processus
sigaction() : spécifie une action associée à un signal
Modification du comportement par défaut d'un signal :
trap 'instruction1; instruction2;...' nom_signaltrap 'echo fini;exit 1' SIGUSR1
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
131
Echanges et synchro. par tubes (1)
Communication et synchronisation
Un tube est un flux de données permettant l'échange unidirectionnelde 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)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
132
Echanges et synchro. par tubes (2)
Communication et synchronisation
Primitives C pour la gestion des tubes :
Utilisation simple en langage shell (opérateur '|')
ls | more
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
133
Echanges et synchro. par files de messages (1)
Communication et synchronisation
Les files de messages permettent une communication indirecte entre processus (mécanisme de « boîte aux lettres »)
process#1 process#3process#2
process#5process#4
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
134
Echanges et synchro. par files de messages (2)
Communication et synchronisation
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
135
Echanges et synchro. par files de messages (3)
Communication et synchronisation
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.)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
136
Echanges et synchro. par files de messages (4)
Communication et synchronisation
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
137
Conclusion sur les mécanismes IPC
Communication et synchronisation
Mécanismes divers et variés répondant plus ou moins bien aux problèmesde 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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
138
Plan du cours
Introduction aux systèmes d'exploitation
Présentation générale d'UNIX
Programmation shell
Processus et parallélisme
Communication et synchronisation
Ordonnancement
Gestion de la mémoire
Gestion de E/S
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
139
Gestion de la mémoire
Les concepts de base (1)
On appelle « Mémoire » tout composant électronique capable de stockertemporairement 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) ?
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
140
Gestion de la mémoire
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
Les concepts de base (2)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
141
Gestion de la mémoire
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)
Les concepts de base (3)
Rôle du gestionnaire de mémoire du SE
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
142
Le gestionnaire de mémoire du SE
Gestion de la mémoire
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écanismes de découpage de la mémoire
Mécanismede mémoire virtuelle
+
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
143
La mémoire virtuelle (1)
Gestion de la mémoire
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
144
La mémoire virtuelle (2)
Gestion de la mémoire
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)
OS
process#1
process#2
espace d'adressagede l'utilisateur
espace d'adressagedu noyau
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
145
La mémoire virtuelle (3)
Gestion de la mémoire
Illustration du mécanisme de va-et-vient (swapping)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
146
La mémoire virtuelle (4)
Gestion de la mémoire
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 espaced'adressage sont chargées en mémoire principale
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
147
La mémoire virtuelle (5)
Gestion de la mémoire
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)
Mémoireprincipale
Disque
MMU
CPU
Bus du systèmeadresses physiquesadresses physiques
adressesvirtuelles
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
148
Les mécanismes de découpage de la mémoire
Gestion de la mémoire
La mémoire principale peut être découpée de 3 façons :
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
Mémoire
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
149
La pagination (1)
Gestion de la mémoire
L'espace d'adressage virtuel est découpé en pages
L'espace d'adressage physique est découpé en cadres
La mémoire virtuelle et la mémoire physique sont structurées en unitésd'allocation
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)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
150
La pagination (2)
Gestion de la mémoire
Exemple :
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
151
La pagination (3)
Gestion de la mémoire
Une adresse virtuelle est définie par :
un numéro de page
un déplacement dans la page
Une adresse physique est définie par :
un numéro de cadre
un déplacement dans le cadre
Un mécanisme de traduction assure la conversion des adresses virtuellesen adresses physiques, en consultant une table des pages, pour connaîtrele numéro du cadre qui contient la page recherchée
Mécanisme detranslation
Identité
Adresse virtuelle
Adresse physique
Numéro de page
Numéro de cadre déplacement
déplacement
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
152
La pagination (4)
Gestion de la mémoire
La table des pages virtuelles (TPV) est composée de plusieurs champs :
un bit de présence
un bit de référence (R)
un bit de protection
un bit de modification (M)
le numéro de cadre Prése
nce
Modificatio
n
Référence
Protecti
onNuméro de cadre
de la page physique
TPV
0x000E100000
01
02
03
04
05
0000
06
07
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
153
La pagination (5)
Gestion de la mémoire
Exemple de partage de code entre processus - 3 pages de code- 2 pages de données
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
154
La pagination (6)
Gestion de la mémoire
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
Traitement de données confidentielles
Applications multimédia
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
155
La segmentation (1)
Gestion de la mémoire
Un segment mémoire est un espace d'adressage indépendant défini par2 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'unetable des segments
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
156
La segmentation (2)
Gestion de la mémoire
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
157
La segmentation (3)
Gestion de la mémoire
Exemple de partage de segments entre processus :
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
158
Pagination vs. segmentation
Gestion de la mémoire
Pagination :
Segmentation :
sert à obtenir un grand espace d'adressage linéaire sans avoir à acheterde la mémoire physique
permet la séparation des programmes et des données dans des espacesd'adressage logiquement indépendants
facilite le partage et la protection
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
159
La segmentation paginée
Gestion de la mémoire
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éegrâce à une table des segments et une table des pages
Unité de segmentation
Unité de pagination
Adr. virtuelle Adr. linéaire Adr. physique
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
160
Problèmes communément rencontrés
Gestion de la mémoire
Les défauts de pages
La fragmentation mémoire
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
161
La fragmentation (1)
Gestion de la mémoire
La fragmentation interne dans les systèmes paginés
La fragmentation externe dans les systèmes segmentés
entre chaque partition de taille fixe, un peu de mémoire est perdue
des espaces entre les segments existent suite au retrait de programmes
Une mémoire fragmentée est une mémoire dans laquelle plusieurs blocsde mémoire non contigus sont libres
Il existe des méthodes de compaction mais généralement coûteuses
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
162
La fragmentation (2)
Gestion de la mémoire
Illustration de la fragmentation interne :
Mémoire divisée en pages de 4Ko
Un process Ademande un bloc de 5Ko
2 pages de4 Ko sontallouées
5Ko utilisés parle processus A
3Ko inutiliséstant que 5Ko non libérés par A
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
163
La fragmentation (3)
Gestion de la mémoire
Illustration de la fragmentation externe :
Blocs demémoire contiguës alloués par A, B et C
B libère sa mémoire
Blocs demémoire contigus alloués par A, B et C
C demande plus de mémoire qu'il n'y en a de contiguë donc celle-ci reste inutilisée
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
164
Les défauts de pages
Gestion de la mémoire
Si une page virtuelle n'est pas présente en mémoire physique, il se produitun défaut de page
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
Le système d'exploitation doit alors recharger la page manquante depuisle disque en plaçant éventuellement une autre page physique en mémoire secondaire
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
165
Les algorithmes de remplacement de page
Gestion de la mémoire
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
166
L'algorithme de Belady
Gestion de la mémoire
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
temps
Pagesdemandées
3 cadres demémoire physique
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
167
L'algorithme FIFO
Gestion de la mémoire
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
3 cadres demémoire physique
temps
Pagesdemandées
3 cadres demémoire physique
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
168
L'algorithme FINUFO
Gestion de la mémoire
Principe : algorithme FIFO + examen du bit de référence
Les pages en mémoire sont mémorisées dans une liste circulaire en forme d'horloge
bit de référence à 0 : choix de la page
bit de référence à 1 : on donne une seconde chance à la page
FBJDKAGHICEL
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
169
L'algorithme FINUFO
Gestion de la mémoire
Exemple :
3 cadres demémoire physique
temps
Pagesdemandées
3 cadres demémoire physique
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
170
L'algorithme LRU
Gestion de la mémoire
Principe : choisir la page la moins récemment utilisée
Stratégie plus complexe à implémenter
Algorithme coûteux mais efficace
temps
Pagesdemandées
3 cadres demémoire physique
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
171
L'algorithme NRU
Gestion de la mémoire
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
172
L'anomalie de Belady
Gestion de la mémoire
L'augmentation du nombre de cadres peut se traduire par un incrément du nombre de défauts de page
L'algorithme LRU ne rencontre pas ce problème
Algorithme FIFOavec 3 cadres de pages
Algorithme FIFO avec 4 cadres de pages
9 défauts de page
10 défauts de page !
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
173
La mémoire sous Linux (1)
Gestion de la mémoire
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
174
La mémoire sous Linux (2)
Gestion de la mémoire
L'espace d'adressage mémoire d'un processus est organisé comme suit :
BSS
Noyau OS
TEXT
DATA
pile
données non initialisées
données initialisées
instructions
+
-pile
tas
espace d'adressagede l'utilisateur
espace d'adressagedu noyau
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
175
La mémoire sous Linux (3)
Gestion de la mémoire
Cartographie mémoire d'un processus
affichage du fichier maps
cat /proc/pid_process/maps
cat /proc/1/maps08048000-0805e000 r-xp 00000000 08:05 1212502 /sbin/init0805e000-0805f000 rw-p 00015000 08:05 1212502 /sbin/init0805f000-0818b000 rw-p 0805f000 00:00 0 [heap]b7e7a000-b7e7b000 rw-p b7e7a000 00:00 0b7e7b000-b7fc4000 r-xp 00000000 08:05 169844 /lib/tls/i686/cmov/libc-2.7.sob7fc4000-b7fc5000 r--p 00149000 08:05 169844 /lib/tls/i686/cmov/libc-2.7.sob7fc5000-b7fc7000 rw-p 0014a000 08:05 169844 /lib/tls/i686/cmov/libc-2.7.sob7fc7000-b7fca000 rw-p b7fc7000 00:00 0b7fd7000-b7fd9000 rw-p b7fd7000 00:00 0b7fd9000-b7fda000 r-xp b7fd9000 00:00 0 [vdso]b7fda000-b7ff4000 r-xp 00000000 08:05 1114565 /lib/ld-2.7.sob7ff4000-b7ff6000 rw-p 00019000 08:05 1114565 /lib/ld-2.7.sobfd18000-bfd2d000 rw-p bffeb000 00:00 0 [stack]
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
176
La mémoire sous Linux (4)
Gestion de la mémoire
Informations sur l'état de la mémoire utilisée par le processus
affichage du fichier statm
cat /proc/pid_process/statm
cat /proc/self/statm734 148 126 7 0 61 0
Exemple :
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
177
La mémoire sous Linux (5)
Gestion de la mémoire
Etat actuel d'un processus (affichage du fichier status) :
cat /proc/pid_process/status
cat /proc/6252/statusName: bashState: S (sleeping)Tgid: 6252Pid: 6252PPid: 6248[...]VmPeak: 5956 kBVmSize: 5956 kBVmLck: 0 kBVmHWM: 3196 kBVmRSS: 3196 kBVmData: 1840 kBVmStk: 84 kBVmExe: 668 kBVmLib: 1784 kBVmPTE: 12 kBThreads: 1[...]
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
178
La mémoire sous Linux (6)
Gestion de la mémoire
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 691 0 13856 1640 1308 18524 64 516 379 129 4341 646 24 34 423 0 13856 1084 1308 18316 56 64 14 0 320 1022 84 9 8
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
179
La mémoire sous Linux (7)
Gestion de la mémoire
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
180
Plan du cours
Introduction aux systèmes d'exploitation
Présentation générale d'UNIX
Programmation shell
Processus et parallélisme
Communication et synchronisation
Ordonnancement
Gestion de la mémoire
Gestion de E/S
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
181
Gestion des E/S
Enjeux liés à la gestion des E/S (1)
rapidité du périphérique
volume des informations
service proposé
direction du flux d'informations
protocole de communication
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 :
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
182
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
183
Gestion des E/S
Enjeux liés à la gestion des E/S (3)
offrir de bonnes abstractions aux programmes
gouverner leur utilisation par les processus
coordonner efficacement les périphériques
Le système d'exploitation doit :
Soucis d'uniformisation de l'interface offerte par le SE pour les E/S
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
184
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 unecommunication 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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
185
Gestion des E/S
Exemples de périphériques d'entrée
Dispositifs de pointage
Dispositifs d'acquisition
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
186
Gestion des E/S
Exemples de périphériques de sortie
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
187
Gestion des E/S
Exemples de périphériques d'entrée/sortie
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
188
Gestion des E/S
Les périphériques d'E/S (2)
les périphériques par blocs
les périphériques par caractères
Les périphériques d'E/S se répartissent en 2 catégories :
stockent des informations dans des blocs de taille fixe
acceptent et fournissent un flot de caractères
chaque bloc possède une adresse propre
ne sont pas adressables
exemples : disques, bandes magnétiques, etc.
exemples : imprimantes, interfaces réseaux, souris, etc.
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
189
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
d'un composant électronique
ex : un moniteur
ex : une carte graphique
Les 2 composants peuvent être intégrés
contrôleurs de périphérique
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
190
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'unprogramme spécifique pour le contrôler : le pilote de périphérique
Rôles d'un pilote d'E/S :
envoi des commandes au contrôleur de périphérique
vérification de leur bon acheminement
traitement des requêtes émanant du logiciel
Interface entre le matériel et le système d'exploitation (traducteurs)
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
191
Gestion des E/S
Les périphériques d'E/S (5)
l'attente active
la scrutation
les interruptions
l'accès direct à la mémoire (DMA)
Les pilotes d'E/S assure la communication avec les périphériques selonl'un des 4 protocoles élémentaires suivants :
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
192
Gestion des E/S
Architecture de contrôle des E/S
Contrôleur vidéo
Contrôleurd'imprimante
Contrôleurde son
Pilotevidéo
Piloted'imprimante
Pilotede son
Partie du système d'exploitation indépendante du matériel
Programmeutilisateur
Périphériques
Matériel
Espacenoyau
Espaceutilisateur
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
193
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
194
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
195
Gestion des E/S
Les disques magnétiques (1)
Principe des disques magnétiques (rappels) :
Piste
Segment
Secteur
Piste
Secteur Tête
Bras
Cylindre
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
196
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
197
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
198
Gestion des E/S
Cas du disque dur (2)
Objectif : réduire au maximum le temps d'accès moyen au disque
reçoit les requêtes émanant du logiciel
détermine les opérations que le contrôleur doit exécuter
traduit les requêtes d'E/S en termes concrets
choisit la prochaine requête à traiter
Comportement du pilote de périphérique :
vérifie la validité des paramètres de la requête
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
199
Gestion des E/S
Algorithmes d'ordonnancement du bras du disque (1)
Principaux algorithmes existants :
FIFO
LOOK et C-LOOK
SSTF
SCAN et C-SCAN
F-SCAN
N-step SCAN
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
200
Gestion des E/S
Algorithmes d'ordonnancement du bras du disque (2)
FIFO : First In First Out
Requêtes : 1, 36, 16, 34, 9, 12
0 9 11 12 16 34 36
10
35
20
18
25
3
1
Ordre de service : 1, 36, 16, 34, 9, 12
Nb total de cylindres parcourus : 111
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
201
Gestion des E/S
Algorithmes d'ordonnancement du bras du disque (3)
SSTF : Shortest Seek Time First
0 9 11 12 16 34 361
1
3
7
15
33
2
Requêtes : 1, 36, 16, 34, 9, 12
Ordre de service : 12, 9, 16, 1, 34, 36
Nb total de cylindres parcourus : 61
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
202
Gestion des E/S
Algorithmes d'ordonnancement du bras du disque (4)
SCAN : algorithme de l'ascenseur
0 9 11 12 16 34 361 49
1
4
18
2
13
40
8
Nb total de cylindres parcourus : 86
Requêtes : 1, 36, 16, 34, 9, 12
Ordre de service : 12, 16, 34, 36, 9, 1
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
203
Gestion des E/S
Algorithmes d'ordonnancement du bras du disque (5)
C-SCAN : Circular SCAN
0 9 11 12 16 34 361 49
1
4
18
2
13
49
1
Nb total de cylindres parcourus : 96
Requêtes : 1, 36, 16, 34, 9, 12
Ordre de service : 12, 16, 34, 36, 1, 9
8
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
204
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 9 11 12 16 34 361
1
4
18
2
27
8
Nb total de cylindres parcourus : 60
Requêtes : 1, 36, 16, 34, 9, 12
Ordre de service : 12, 16, 34, 36, 9, 1
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
205
Gestion des E/S
Algorithmes d'ordonnancement du bras du disque (7)
C-LOOK : Circular LOOK
0 9 11 12 16 34 361
1
4
18
2
35
8
Nb total de cylindres parcourus : 68
Requêtes : 1, 36, 16, 34, 9, 12
Ordre de service : 12, 16, 34, 36, 1, 9
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
206
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
207
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
les sous-files sont traitées entre elles dans l'ordre FIFO
dans chaque sous-file les requêtes sont servies selon l'algorithme SCAN
lorsqu'une sous-file est en cours de traitement, les nouvelles requêtessont placées das la prochaine sous-file non remplie
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
208
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 tantqu'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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
209
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éciauxdans 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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
210
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
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
211
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.