Vous êtes sur la page 1sur 211

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
Outils
Gestion Gestion
Ordonnanceur de
E/S mémoire Niveau Niveau Niveau
compil.
Noyau 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
Utilisateurs
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

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 Programme de démarrage


(entier) après connexion
(un shell généralement)
Identifiant de groupe
(entier)

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 : Les droits d'un fichier sont


Lecture (read) r représentés par une chaîne de
10 caractères :
Ecriture (write) w
x
- rxw rw- r--
Exécution (execute)

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

Droits Valeur
--- 0

--x 1

-w- 2

-wr 3

r-- 4

r-x 5

rw- 6

rwx 7

Exemples :
-rw------- :
drw-r—-r-- :
drwxr-x--- :
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 chemin
cd /home
cd textes
cd ../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 Olivier etudiant 168 Dec 2 15:09 chant.txt
-rw-r--r-- 1 Olivier etudiant 81 Nov 30 14:19 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 -type


-user -group
-size -atime
-mtime -ctime
-perm -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 0 : entrée standard (STDIN)


commande 1 : sortie standard (STDOUT)
2 : sortie des erreurs (STDERR)
2
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):


1 tube 1
0 0
commande1 commande2
2 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

ls -l
Le Shell
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=audrey.queudet@univ-nantes.fr
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
Enchaînement de plusieurs conditions
if [ condition ]
then if [ condition1 ]
actions then
fi action1
elif [ condition2 ]
then
action2
Le bloc if/then/else elif [ condition 3 ]
then
if [ condition ] action3
then else
action1 action4
else fi
action2
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) konsole (533) lpd (408)

/bin/bash (534) /bin/bash (535) /bin/bash (536)

ls -al (602) ps (634)


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 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 Olivier
olivier 321 319 0 10:30:34 ttyp1 0:02 csh
olivier 324 321 0 10:32:12 ttyp1 0:00 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 : Exécution


programme A
Exécution
programme B
wait()
fork()
processus 1
(parent)

processus 2
execlp(B)
(enfant) 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

actif bloqué

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
actif bloqué
préemption
élection réveil
prêt

ORDONNANCEUR PROCESSEUR

processus élu
file d’attente
file d’attente des
des processus bloqués
processus prêts

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 Processus Processus Processus


utilisateur utilisateur utilisateur utilisateur

Noyau du SE Noyau du SE Noyau du SE

Machine Machine Machine

Communications intra-système 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

utilise Ressource#1
process#1 attend process#2

attend utilise
Ressource#2

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 Ressource#2
process#1 process#4

utilise 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 : 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()
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 0 compteur

P8 P5 P3 P8 P5
liste d'attente des processus liste d'attente des processus
bloqués sur le sémaphore 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 compteur 1 compteur

P5 P5
liste d'attente des processus liste d'attente des processus
bloqués sur le sémaphore 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

process#1
signal
Ctrl-C
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#3

     

process#4 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 + Mécanismes
de mémoire virtuelle 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
process#2

espace d'adressage
du noyau 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

Mémoire Disque
adresses principale
virtuelles CPU

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 : Adresse virtuelle


Numéro de page déplacement
un numéro de page
un déplacement dans la page Mécanisme de Identité
translation

Une adresse physique est définie par :


Numéro de cadre déplacement
un numéro de cadre 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 :


n
c e atio nce ion
Numéro de cadre n
se dif
ic e ct
le numéro de cadre de la page physique é o f é r ot e
Pr M Ré Pr
00 0x000E1000

un bit de présence 01

02

un bit de modification (M) 03


TPV
04

05
un bit de référence (R)
06

07
un bit de protection

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)
- 3 pages de code
Exemple de partage de code entre processus - 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 Adr. linéaire
Unité de Adr. physique
segmentation pagination

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 Un process A
divisée en demande un
pages de 4Ko bloc de 5Ko

5Ko utilisés par


le processus A
3Ko inutilisés
tant que 5Ko
2 pages de non libérés par A
4 Ko sont
allouées

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
B libère C demande plus
alloués
sa mémoire de mémoire qu'il
par A, B et C
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 9 défauts de page


avec 3 cadres de pages

Algorithme FIFO 10 défauts de page !


avec 4 cadres de pages

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 BSS données non initialisées
de l'utilisateur
DATA données initialisées

TEXT instructions

espace d'adressage Noyau OS


du noyau

+
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 r-xp 00000000 08:05 1212502 /sbin/init
0805e000-0805f000 rw-p 00015000 08:05 1212502 /sbin/init
0805f000-0818b000 rw-p 0805f000 00:00 0 [heap]
b7e7a000-b7e7b000 rw-p b7e7a000 00:00 0
b7e7b000-b7fc4000 r-xp 00000000 08:05 169844 /lib/tls/i686/cmov/libc-2.7.so
b7fc4000-b7fc5000 r--p 00149000 08:05 169844 /lib/tls/i686/cmov/libc-2.7.so
b7fc5000-b7fc7000 rw-p 0014a000 08:05 169844 /lib/tls/i686/cmov/libc-2.7.so
b7fc7000-b7fca000 rw-p b7fc7000 00:00 0
b7fd7000-b7fd9000 rw-p b7fd7000 00:00 0
b7fd9000-b7fda000 r-xp b7fd9000 00:00 0 [vdso]
b7fda000-b7ff4000 r-xp 00000000 08:05 1114565 /lib/ld-2.7.so
b7ff4000-b7ff6000 rw-p 00019000 08:05 1114565 /lib/ld-2.7.so
bfd18000-bfd2d000 rw-p bffeb000 00:00 0 [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

Espace Programme
utilisateur utilisateur

Partie du système d'exploitation


indépendante du matériel
Espace
noyau
Pilote Pilote Pilote
vidéo d'imprimante de son

Contrôleur Contrôleur Contrôleur


Matériel vidéo d'imprimante 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

Piste Cylindre
195
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 (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

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

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

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

18

Requêtes : 1, 36, 16, 34, 9, 12


2
Ordre de service : 12, 16, 34, 36, 9, 1

27

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

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

Vous aimerez peut-être aussi