diapositives - MIAGE de Nantes

publicité
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
Téléchargement