Samar TAWBI
samartawbi@yahoo.com
1
Chapitre 1.
Le système d’exploitation :Notions
2
Système d’exploitation (SE)
Définition
applications
APPLICATIONS (jeux, outils bureautiques, …)
4
Vue abstraite des composants d’un SI
Kernel (noyau)
5
Le noyau
Différents types de services assurés
6
Les principaux SE (1/2)
Solaris/Linux
Bâtis sur le noyau Unix
le meilleur compromis : fiable, efficace, souple, portable, évolutif
reste (très) difficile d'accès pour un novice, voire pour un informaticien
Distributions de Linux
Red Hat
Fedora
S.u.S.e
MacOS
désormais peu répandu car submergé par Windows
ergonomie géniale, fiable, stable
a développé ses propres standards (y compris pour le hardware)…et a
perdu la concurrence contre Windows (il lui reste quelques niches, telles
que la photo numérique)
7
Les principaux SE (2/2)
Windows
le plus diffusé, très orienté utilisateur (configuration
automatique toujours disponible), large gamme d’utilitaires
(certains étant désormais des standards), prise en main très
simple
peu fiable même si des progrès depuis Win2000/XP, sécurité
inexistante (virus, intrusions très fréquentes)
peu ouvert, impose la plupart des choix technologiques et
"enferme" les utilisateurs dans ces choix
stratégie industrielle douteuse sur le plan de l'éthique
8
Historique des SE
9
1ère génération
Mode d'exploitation
l'utilisateur écrit un programme en langage machine
il réserve la machine pour une durée déterminée
il rentre son programme en mémoire "à la main"
il l'exécute
si exécution non conforme à ses attentes alors
exécution pas à pas et modification éventuelle
nouvel essai jusqu'à satisfaction ou temps de réservation
atteint
10
2ème génération : Traitement par lots
Amélioration du matériel
11
Comment ça fonctionne?
les premiers SE (mi-50)
L’usager soumet une tâche (job) à un opérateur
Programme suivi par données
12
Cartes perforées
14
3ème génération : Multiprogrammation
Les opérations E/S sont extrêmement lentes (comparées
aux autres instructions)
ex. une boucle de programme pourrait durer 10 microsecondes,
une opération disque 10 millisecondes
C’est la différence entre 1 heure et un mois et demi!
Même avec peu d’E/S, un programme passe la majorité de son
temps à attendre
15
Comment ça fonctionne?
Multiprogrammation
plusieurs activités progressent en parallèle
– une activité garde le CPU jusqu'à la prochaine
demande d'E/S
– traitement des fins d'E/S du processeur grâce aux
interruptions
16
Exigences pour multiprogrammation
Interruptions
afin de pouvoir exécuter d’autres jobs lorsqu’un job
attend après E/S
Protection de la mémoire: isole les jobs
Gestion du matériel
plusieurs jobs prêts à être exécutées demandent des
ressources:
UC, mémoire, unités E/S
Langage pour gérer l’exécution des travaux: interface
entre usager et OS
jadis JCL (Job Control Language), maintenant shell,
command prompt ou semblables
17
Plusieurs programmes en mémoire
pour la multiprogrammation
18
Avantages et Inconvénients
Avantages
bonne gestion des ressources (CPU, mémoire, périphériques)
temps de réponse correct pour les travaux courts
Inconvénients
complexité du matériel et du système d'exploitation
partage et protection des ressources
19
4ème génération: Temps partagé
Temps partagé
Le traitement par lots multiprogrammé ne supporte pas l’interaction
avec les usagers
excellente utilisation des ressources
mode d'exploitation
travail à partir d'un terminal interactif
solution
allocation du processeur aux usagers à tour de rôle et pour un
"quantum" de temps limité
la fin du quantum est signalée par une interruption d'horloge
20
Clients / Serveur
Terminaux
‘stupides’
Ordinateur principal
(mainframe)
21
Chaque terminal a sa propre partition de mémoire
22
Temps partagé
23
Aujourd’hui
Terminaux
‘intelligents’ (PC)
Ordinateur principal
(mainframe)
24
Retour aux concepts de Temps partagé
Plusieurs PC (clients) peuvent être desservis par un
ordinateur plus puissant (serveur)
pour des services qui sont trop complexes pour eux
(clients/serveurs, bases de données, telecom)
25
Les systèmes Linux …
26
LINUX : le logiciel libre
L’idée d’un SE libre est née en 1984 (Free Software
Fondation)
27
Philosophie des systèmes Linux
Système multi-utilisateur
Plusieurs utilisateurs simultanément
Chaque utilisateur à sa disposition l’ensemble des ressources du
système
Mécanisme d’identification
Système portable
Écrit en langage C (99%)
28
Ouverture/Fermeture d’une session
Travailler sous Linux implique une connexion au système
Login:
Identification de l’utilisateur: login + mot-de-passe
droits accordés par le super-utilisateur (root (administrateur))
Logout:
NE PAS ETEINDRE une machine “sauvagement”
commande “logout” dans la console
29
Initiation au shell
Une fois connecté, le système nous connaît, ouvre une
session à notre nom et nous positionne dans le répertoire
d’accueil
Respecter la casse
et les espaces!!
31
Initiation au shell
Exemples:
date
whoami
affiche le nom de l’utilisateur connecté
echo
affiche un message (echo "bonjour !")
ls
liste le contenu
d’un répertoire
man <cde>
manuel en ligne
32
Les fichiers
« structure » contenant des informations ou bien un
programme
Noms de fichier
Un nom de fichier est unique dans un répertoire donné
Il est possible d’avoir des noms de fichiers identiques dans des
répertoires différents
Jusqu’à 256 caractères
Eviter les caractères : - * ? < > ! / \ <espace>
Différences entre minuscules et majuscules (Toto != tOTo)
33
Droits d’accès des fichiers (1)
Chaque fichier est caractérisé par des droits d’accès
34
Droits d’accès des fichiers (2)
Les droits d’accès sont de 4 types
Lecture (r) : affichage du fichier
Écriture (w) : modification et copie d’un fichier
Exécution (x) : exécution d’un fichier
Aucun (-) : Protection totale
35
Droits d’accès des fichiers (3)
Exemple de type de fichier : d rwxr-xr-x
36
Droits d’accès : modifiables par le propriétaire du
fichier
37
Arborescence
Organisation hiérarchique des fichiers
Imbrication de répertoires
Organisation standardisée partielle (sic)
/ : racine
/bin : binaires et programmes exécutables
/dev : fichiers spéciaux relatifs aux périphériques
/etc : fichiers de configuration et d’administration
/lib : bibliothèques des langages de programmation
/lost+found : fichiers perdus sur erreur système
/mnt : réservé au montage temporaire des disques
/usr : sous-préfectoraux pour le spool, courrier, programmes locaux,
exécutables des commandes utilisateurs,…
/tmp : répertoire de travail temporaire
/home : sous répertoires des utilisateurs
/var fichiers et répertoires exploités par l’administrateur
38
Arborescence
/
39
Arborescence
Référence absolue ou relative à un fichier
Absolue : chemin exact depuis la racine (toujours le même)
/home/info/belloir/ise/sujettd1.txt
Relative : chemin depuis le répertoire courant (variable)
(depuis belloir) ise/sujettd1.txt ou ~/ise/sujettd1.txt
40
Arborescence
/
cd /home
home
ise se
cd ..
cours td
cd .
41
Commandes relatives aux fichiers
Donne le répertoire courant : pwd
42
Commandes relatives aux fichiers
Création d’un fichier
Avec un éditeur de texte
Redirection de sortie avec >
43
Commandes relatives aux fichiers
Destruction d’un fichier
rm nomfic
Attention aux caractères de substitution !!! (*)
-i demande confirmation
-r détruit un répertoire
44
Commandes relatives aux fichiers
Affichage du contenu d’un fichier
cat nomfic
Intégralement affiché à l’écran
more nomfic
Affichage page par page (avancement par <esp> ou
<enter>)
file nomfic
S’assure qu’un fichier est lisible
45
Les processus
Processus = objet dynamique
qui représente un programme en cours d’exécution et son
contexte
[lewandow:~] ps
PID TT STAT TIME COMMAND
3899 p1 S 0:00.08 -zsh
numéro de 4743 p1 S+ 0:00.14 emacs
processus 4180 std S 0:00.04 -zsh commande
exécutée
état du
terminal processus: R actif
T bloqué
associé S endormi
Z tué 46
Les processus
Options de ps:
-a liste tous les processus actifs
-u format d’affichage long
-x inclut les processus sans terminal
Tuer un processus:
kill -9 <PID>
47
Chapitre 2.
Gestion de la mémoire centrale
48
Gestion de mémoire: objectifs
Optimisation de l ’utilisation de la mémoire
principale = RAM
49
Mémoire/Adresses physiques et logiques
Mémoire physique:
la mémoire principale RAM de la machine
50
Traduction
adresses logiques adr.physiques
Dans les premiers systèmes, un programme était toujours chargé dans
la même zone de mémoire
Aujourd’hui, ceci est fait par le MMU au fur et à mesure que le progr.
est exécuté
51
Traduction
adresses logiques adr.physiques
Un mécanisme de translation d’adresse est alors nécessaire
Transformer les adresses symboliques en adresses réelles
52
Traduction
adresses logiques adr.physiques
Registre de base =
la plus basse adresse mémoire utilisée
Registre
de base
54
Affectation contiguë de mémoire
55
Affectation contiguë de mémoire
SE
progr. 1
progr. 2
disponible
progr. 3
57
Partitions fixes
Mémoire principale
subdivisée en régions
distinctes: partitions
58
Algorithme de placement pour
partitions fixes
Partitions de tailles
inégales: utilisation de
plusieurs files
assigner chaque processus à
la partition de la plus petite
taille pouvant le contenir
1 file par taille de partition
tente de minimiser la
fragmentation interne
Problème: certaines files
seront vides s’il n’y a pas de
processus de cette taille
(fr. externe)
59
Algorithme de placement pour
partitions fixes
Partitions de tailles
inégales: utilisation d’une
seule file
le niveau de
multiprogrammation
augmente au profit de la
fragmentation interne
60
Partitions fixes
Simple, mais...
61
Partitions dynamiques
62
Partitions dynamiques: exemple
63
Partitions dynamiques: exemple
Inconvenients:
temps de transfert programmes
besoin de rétablir tous les liens entre adresses de différents
programmes
65
Algorithmes de Placement
66
Allocation non contiguë
Afin de réduire la fragmentation
diviser un programme en morceaux et permettre l`allocation
séparée de chaque morceau
les morceaux sont beaucoup plus petits que le programme
entier et donc permettent une utilisation plus efficace de la
mémoire
les petits trous peuvent être utilisés plus facilement
67
Les segments sont des parties logiques du
programme
A
JUMP(D, 100) B
Progr.
Princ. LOAD(C,250) Données
C
D
Données Sous- LOAD(B,50)
progr.
4 segments: A, B, C, D
68
Les segments comme unités d’alloc mémoire
0 3
2
3 1
Étant donné que les segments sont plus petits que les programmes entiers, cette
technique implique moins de fragmentation (qui est externe dans ce cas)
69
Mécanisme pour la segmentation
Un tableau contient l’adresse de début de
tous les segments dans un processus
1
Adr de 3
segment courant Adr de 2
Adr de 1 2
Adr de 0
Tableau de descripteurs
de segments mémoire physique
70
Détails
L’adresse logique consiste d ’une paire:
<No de segm, décalage>
où décalage est l ’adresse dans le segment
71
Traduction d`adresses dans la segmentation
erreur!
Aussi, si d > longueur: 72
Le mécanisme en détail (implanté dans le
matériel)
Dans le programme
Adresse finale
73
Partage de segments:
le segment 0 est partagé
P.ex: Programme Word utilisé pour éditer
différents documents
74
Segmentation et protection
Chaque descripteur de segment peut contenir des infos de
protection:
longueur du segment
privilèges de l’usager sur le segment: lecture, écriture, exécution
Si au moment du calcul de l’adresse on trouve que l’usager n’a
pas droit d’accèsinterruption
ces infos peuvent donc varier d ’usager à usager, par rapport au
même segment!
PAGINATION
76
Segmentation contre pagination
77
Pagination simple
La mémoire est partitionnée en petits morceaux de même
taille: les pages physiques ou ‘cadres’ ou ‘frames’
Conséquences:
un processus peut être éparpillé n’importe où dans la mémoire
physique.
la fragmentation externe est éliminée
78
Exemple de chargement de processus
80
Tableaux de pages
81
Tableaux de pages
Une table de pages est indexée par le numéro de la page (logique) afin
d’obtenir le numéro du cadre
84
Traduction d’adresse (logique-
physique) pour la pagination
85
Trad. d’adresses: segmentation et pagination
Tant dans le cas de la segmentation, que dans le cas
de la pagination, nous ajoutons le décalage à
l’adresse du segment ou page.
11010000+1010
=
1101 1010
86
Segmentation simple vs Pagination
simple
La pagination se préoccupe seulement du problème du chargement, tandis
que
La segmentation vise aussi le problème de la liaison
La segmentation est visible au programmeur mais la pagination ne l’est
pas
Le segment est une unité logique de protection et partage, tandis que la
page ne l’est pas
Donc la protection et le partage sont plus aisés dans la segmentation
La segmentation requiert un matériel plus complexe pour la traduction
d’adresses (addition au lieu d`enchaînement)
La segmentation souffre de fragmentation externe (partitions dynamiques)
La pagination produit de fragmentation interne, mais pas beaucoup (1/2
cadre par programme)
Heureusement, la segmentation et la pagination peuvent être combinées
87
Pagination et segmentation combinées
Les programmes sont divisés en segments et les segments
sont paginés
88
Adressage (sans considérer la pagination des
tableaux de pages et de segments)
s p d’
89
Exercice 2-1
(Allocation Contiguë, Partition Dynamique)
+300, +200, +260, -200, +100, -300, +250, +400, -260, +150,
+120, -100, -120, +200, -150, -250, +100, -400, +600, -100, -200,
-600
90
Exercice 2-2
Segmentation
91
Exercice 2-3
Pagination
Dans un système paginé, les pages font 256 mots chacune et la
mémoire centrale comprend 4 cadres. On considère la table des pages
suivantes
0 3
Calculer la taille de la mémoire physique
1 0
Donnez le nombre de bits nécessaires pour
2 i
l’adresse du programme (logique)
Calculer les adresses réelles correspondant 3 i
aux adresses virtuelles: 4 2
(0,240), (2,34), (2,35), (6,42), (7,230)
5 i
Trouver l’adresse réelle correspondant à
l’adresse virtuelle 456 6 i
7 1
92
De la pagination et segmentation à la
mémoire virtuelle
Un processus est constitué de morceaux (pages ou segments) ne nécessitant pas
d’occuper une région contiguë de la mémoire principale
Références à la mémoire sont traduites en adresses physiques au moment
d’exécution
Un processus peut être déplacé à différentes régions de la mémoire, aussi
mémoire secondaire!
Donc: tous les morceaux d’un processus ne nécessitent pas d’être en mémoire
principale durant l’exécution
L’exécution peut continuer à condition que la prochaine instruction (ou donnée)
est dans un morceau se trouvant en mémoire principale
La somme des mémoires logiques des procs en exécution peut donc
excéder la mémoire physique disponible
Le concept de base de la mémoire virtuelle
Une image de tout l’espace d’adressage du processus est gardée en mémoire
secondaire (normal. disque) d’où les pages manquantes pourront être prises au
besoin
Mécanisme de va-et-vien ou swapping
93
Mémoire virtuelle:
résultat d’un mécanisme qui combine
la mémoire principale et les mémoires secondaires
94
Nouveau format du tableau des pages
(la même idée pour les tableaux de segments)
bit présent
Adresse de la Bit 1 si en mém. princ.,
page présent 0 si en mém second.
96
Avantages du chargement partiel
Plus de processus peuvent être maintenus en exécution en
mémoire
Car seules quelques pièces sont chargées pour chaque
processus
97
Mémoire Virtuelle: Pourrait Être Énorme!
Ex: 16 bits sont nécessaires pour adresser une mémoire
centrale de 64KB
En utilisant des pages de 1KB, 10 bits sont requis pour le
décalage
Pour le numéro de page de l’adresse logique nous pouvons
utiliser un nombre de bits qui excède 6 (plus que 2 6 cases
dans la table des pages), car toutes les pages ne doivent pas
obligatoirement être en mémoire simultanément
Donc la limite de la mémoire virtuelle est le nombre de bits
qui peuvent être réservés pour l ’adresse
La mémoire logique est donc appelée mémoire virtuelle
Est maintenue en mémoire secondaire
Les pièces sont amenées en mémoire principale seulement quand
nécessaire, sur demande
98
Exécution d’un Processus
Le SE charge la mémoire principale de quelques pièces
(seulement) du programme (incluant le point de départ)
99
Exécution d’une défaut de page: va-et-vient
plus en détail
Mémoire
virtuelle
100
Quand la RAM est pleine mais nous
avons besoin d’une page pas en RAM
101
Remplacement de pages
Quoi faire si un processus demande une nouvelle page et il
n’y a pas de cadres libres en RAM?
choisir une page déjà en mémoire principal,
appartenant au même ou à un autre processus,
qu’il est possible d ’enlever de la mémoire principale
C’est la victime!
102
La page victime...
103
Algorithmes pour la politique de
remplacement
L’algorithme optimal (OPT) choisit pour page à
remplacer celle qui sera référencée le plus
tardivement
produit le + petit nombre de défauts de page
impossible à réaliser (car il faut connaître le futur)
104
Algorithmes pour la politique de
remplacement
Ordre chronologique d’utilisation (LRU)
Least Recently Used
Remplace la page dont la dernière référence remonte au
temps le plus lointain (le passé utilisé pour prédire le futur)
105
Comparaison OPT-LRU
Exemple: Un processus de 5 pages s’il n’y a que 3 pages
physiques disponibles.
Dans cet exemple, OPT occasionne 3+3 défauts, LRU 3+4.
106
Premier arrivé, premier sorti (FIFO)
Logique: une page qui a été longtemps en mémoire a eu sa chance
d ’exécuter
Mais: Une page fréquemment utilisée est souvent la plus vielle, elle
sera remplacée par FIFO!
107
Comparaison de FIFO avec LRU
Contrairement à FIFO, LRU reconnaît que les pages 2 and 5 sont utilisées
fréquemment
Dans ce cas, la performance de FIFO est moins bonne:
LRU = 3+4, FIFO = 3+6
108
Implantation de FIFO
Facilement implantable en utilisant une queue de cadres de
mémoire
Qui ne doit être mis à jour que à chaque défaut de page
Exercice: concevoir l’implantation de ce tampon (v. exemple précédent)
2 3 1 5 2 4 3 5 2
2 3 1 5 2 4 3 5
2 3 1 5 2 4 3
109
L’algorithme de l’horloge (deuxième
chance)
110
Algorithme de l’horloge: un exemple
112
Détail sur le fonctionnement de l’horloge
114
Chapitre 4.
Gestion de Processus
115
Processus et terminologie
Programme
Description des actions à entreprendre pour aboutir au résultat recherché
Processeur
Entité matérielle capable d’exécuter des instructions
Processus
un programme en exécution (entité dynamique correspondant à l’exécution
des instructions)
Possède des ressources de mémoire, périphériques, etc
Exemple de tanenbaum
Préparation gâteaux, piqûre d’abeille, des invités (un nouveau gâteau)
116
Processeur Virtuel
Plusieurs processus peuvent exécuter le même programme
Chacun possède ses propres variables
Création dynamique
Création dynamique et destruction des processus
L’opération de création doit permettre d’initialiser l’état du nouveau
processus
Définir le programme (la suite d’instructions)
L’état initial de son contexte (variables, données, registres mémoire …)
Id = créer_processus(programme, contexte)
Où id est l’identificateur du nouveau processus
118
Arbre de processus en UNIX
Le système Unix structure les processus en arbre
119
Exemple de Unix
Dans le système Unix, la création dynamique est simple
Créer un processus qui est une exacte copie de celui qui demande
la création
Aucun paramètre n’est donc nécessaire
id est l’identificateur du
id = fork(); nouveau processus
id_fils = wait(&status);
121
Exemple de création de processus
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
int main(void)
{
pid_t pid = fork();
int raison;
switch (pid) {
} /* switch */
return (0);} 122
Notion de ressources
On appelle ressource toute entité dont a besoin un
processus pour s’exécuter (CPU, mémoire, périphériques…)
123
État de processus
Au fur et à mesure qu’un processus exécute, il change d’état
Nouveau:
le processus vient d ’être créé
Exécutant - running:
le processus est en train d ’être exécuté par le processeur
Attente - waiting:
le processus est en train d ’attendre un événement (p.ex. la fin
d ’une opération d ’E/S)
Prêt - ready:
le processus est en attente d’être exécuté par l ’UC
Terminé :
fin d ’exécution
124
Diagramme de transition d’états d’un
processus
Terminé:
Le processus n ’est plus exécutable, mais ses données sont encore
requises par le SE (comptabilité, etc.)
126
Transitions entre processus
Prêt Exécution
Lorsque l ’ordonnanceur UC choisit un processus pour
exécution
Exécution Prêt
Résultat d’une interruption causée par un événement
indépendant du processus
Il faut traiter cette interruption, donc le processus courant
perd l’UC
Cas important: le processus a épuisé son intervalle de
temps (minuterie)
127
Transitions entre processus
Exécution Attente
Lorsqu’un processus fait un appel de système (interruption
causée par le processus lui-même)
initie une E/S: doit attendre le résultat
a besoin de la réponse d’un autre processus
Attente Prêt
lorsque l'événement attendu se produit
128
Sauvegarde d’informations processus
En multiprogrammation, un processus exécute sur l ’UC de façon
irrégulière
129
PCB = Process Control Block:
Registres du CPU
130
Process Control Block (PCB)
pointeur: les PCBs sont rangés dans des listes enchaînées
autres registres UC
bornes de mémoire
Etc.
131
Commutation de processeur
132
Commutation de processeur (context
switching)
Le code de traitement de
processeur termine l’instruction l’interruption est exécuté
courante et détecte interruption
L’ordonnanceur choisit un
Registres du CPU sont processus dans la file prêt
sauvegardés dans une pile
135
Les cycles d’un processus
Observation expérimentale:
dans un système typique, nous observerons un grand nombre de
court cycles, et un petit nombre de long cycles
137
Ordonnanceur CPU
Choisit parmi les processus prêts en mémoire,
et alloue la CPU à l’un d’eux
138
Dispatcheur
Le dispatcheur donne le contrôle de la CPU au processus
choisi par l’ordonnanceur à court terme; ceci comprend:
Commutation de contexte
Passer en mode utilisateur
Sauter au bon endroit dans le programme pour le relancer
139
Critères d’ordonnancement
Il y aura normalement plusieurs processus dans la file prêt
Critères généraux:
Bonne utilisation du CPU
Réponse rapide à l’usager
140
Critères d’Ordonnancement
Utilisation de la CPU
utiliser la CPU le maximum possible
Débit (Throughput)
nombre de processus qui terminent leur exécution par unité de temps
Temps d’attente
temps d’un processus dans la file d’attente des processus prêts
Temps de réponse
temps mis entre une requête émise et la première réponse, pas la sortie
(pour les environnements à temps partagé)
141
Critères d’ordonnancement:
maximiser/minimiser
Utilisation de la CPU: pourcentage d’utilisation
ceci est à maximiser
142
Ordonnancement First-Come, First-Served (FCFS)
P1 P2 P3
Temps d‘attente de P1 = 0; P2 = 24; P3 = 27
Temps d’attente moyen: (0 + 24 + 27)/3 = 17
0 24 27 30
143
Premier arrivé, premier servi
Utilisation UCT = 100%
P1 P2 P3
0 24 27 30
144
Tenir compte du temps d’arrivée!
Dans le cas où les processus arrivent à moment différents, il faut
soustraire les temps d’arrivée
Exercice: répéter les calculs si:
P1 arrive à temps 0 et dure 24
P2 arrive à temps 2 et dure 3
P3 arrive à temps 5 et dure 3
P1 P2 P3
0 24 27 30
arrivée P2
145
Premier arrivé, premier servi
Si les mêmes processus arrivent à 0 mais dans l’ordre
P2 , P3 , P1 .
Le diagramme de Gantt est:
P2 P3 P1
0 3 6 30
146
Ordonnancement Shortest-Job-First (SJF)
Plus court d’abord
Deux schémas:
Non préemptif – dès que le CPU est donné à un processus, ce dernier ne
peut être interrompu avant la fin de son temps CPU
P1 P3 P2 P4
0 3 7 8 12 16
148
Exemple de SJF Préemptif
Processus Tps d’Arrivée Tps CPU
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
SJF (préemptif)
P1 P2 P3 P2 P4 P1
0 2 4 5 7 11 16
149
Ordonnancement avec Priorité
Une priorité (nombre entier) est associée à chaque processus
Le CPU est alloué au processus à la priorité la plus grande (le plus petit
entier la plus grande priorité)
avec ou sans préemption
il y a une file prêt pour chaque priorité
150
Tourniquet/Round Robin (RR)
Chaque processus se voit alloué le CPU pour un temps limité
(quantum), en général 10-100 milliseconds.
Performance
q large FIFO
q petit q doit être large comparé au temps de commutation de tâche,
sinon l’overhead est trop grand
151
Exemple de RR avec Q = 20
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
153
Temps de Rotation Varie avec le Quantum
155
Ordonnancement à Files Multiniveaux
156
Ordonnancement avec Files Multiniveaux à
Retour
Un processus peut passer d ’une file à l ’autre, p.ex. quand
il a passé trop de temps dans une file
157
Exemple de File Multiniveaux à Retour
Trois files:
Q0 – quantum de 8 millisecondes
Q1 – quantum de 16 millisecondes
Q2 – FCFS
Ordonnancement
Un nouveau processus est placé dans Q0 au début; à sa première
exécution, il reçoit 8 millisecondes. S’il ne termine pas son
exécution, il est replacé dans Q1.
Si un processus de la file Q1 est servi (16 msec) et ne se termine
pas, il est replacé dans Q2.
158
Files avec Multiniveaux à Retour
PRIO = 0
la + élevée
PRIO = 1
PRIO = 2
159
Synchronisation de Processus
160
Problèmes avec concurrence =
parallélisme
Les processus concurrents doivent parfois partager
données (fichiers ou mémoire commune) et ressources
On parle donc de tâches coopératives
161
Un exemple
Fauteuil A est
Le résultat de l ’exécution
assigné à X et
concurrente de P1 et P2
marqué occupé
dépend de l`ordre de leur
entrelacement
162
Vue globale d’une exécution possible
P1 P2
Interruption
M. Leblanc demande une ou retard
réservation d’avion
M. Guy demande une
réservation d’avion
163
2ème exemple
processus P1 processus P2
Une fois qu’un tâche y entre, il faut lui permettre de terminer cette
section sans permettre à autres tâches de jouer sur les mêmes
données
165
Le problème de la section critique
Lorsqu’un processus manipule une donnée (ou ressource)
partagée, nous disons qu’il se trouve dans une section critique
(SC) (associée à cette donnée)
M. X demande une
réservation d’avion
Section d’entrée
Section de sortie
168
Critères nécessaires pour solutions valides
Exclusion Mutuelle
À tout instant, au plus un processus peut être dans une section
critique (SC) pour une variable donnée
Non interférence:
Si un processus s’arrête dans sa section restante, ceci ne devrait
pas affecter les autres processus
169
Sémaphores
170
Sémaphores occupés à attendre (busy
waiting)
S est un entier initialisé à une wait(S):
valeur positive, de façon que while S==0 ;
un premier processus puisse S--;
entrer dans la SC
Attend si nombre de processus
Quand S>0, jusqu’à n qui peuvent entrer = 0
processus peuvent entrer
172
Utilisation des sémaphores pour sections
critiques
Pour n processus
processus Ti:
Initialiser S à 1 repeat
Alors 1 seul processus peut wait(S);
être dans sa SC SC
signal(S);
Pour permettre à k SR
processus d’exécuter SC, forever
initialiser S à k
173
Utilisation des sémaphores pour
synchronisation de processus
On a 2 processus : T1 et T2
Énoncé S1 dans T1 doit être
exécuté avant énoncé S2 dans T2
Définissons un sémaphore S
Initialiser S à 0
Synchronisation correcte
lorsque T1 contient:
S1;
signal(S);
et que T2 contient:
wait(S);
S2;
174
Interblocage et famine avec les
sémaphores
Famine: un processus peut n’arriver jamais à
exécuter car il ne teste jamais le sémaphore au bon
moment
Interblocage: Supposons S et Q initialisés à 1
T0 T1
wait(S)
wait(Q)
wait(Q) wait(S)
175
Le problème des philosophes mangeant
5 philosophes qui mangent
et pensent
Pour manger il faut 2
fourchettes, droite et
gauche
On en a seulement 5!
Un problème classique de
synchronisation
176
Le problème des philosophes mangeant
Un processus par philosophe
Un sémaphore par int sem[5]={1,1,1,1,1}
fourchette:
sem: tableau de 5 Philosophe(int i){
semaphores
while(true){
Initialisation: sem[i] =1 for
i:=0..4 penser();
wait(sem[i]);
Première tentative:
wait(sem[i+1 mod 5]);
interblocage si chacun
débute en prenant sa manger;
fourchette gauche! signal(sem[i+1 mod 5]);
wait(sem[i]) signal(sem[i]);
}
}
177
Le problème des philosophes mangeant
Une solution: admettre
seulement 4 philosophes à la int sem[5]={1,1,1,1,1}
fois qui peuvent tenter de int T =4;
manger
Il y aura touj. au moins 1 philosophe(int i){
philosophe qui pourra while(true){
manger penser();
même si tous prennent 1
fourchette
wait(T);
wait(sem[i]);
Ajout d’un sémaphore T qui
limite à 4 le nombre de
wait(sem[i+1 mod 5]);
philosophes “assis à la table” manger;
initial. de T à 4 signal(sem[i+1 mod 5]);
N’empêche pas famine!
signal(sem[i]);
signal(T);
}
} 178
Le problème des lecteurs et rédacteurs
Plusieurs processus qui essaient d’écrire et lire à/sur une
base de données
179
Le problème des lecteurs et rédacteurs
Difficultés:
Une exclusion mutuelle simple ne marche pas parce que
nous voulons plusieurs lecteurs dans la base de données
en même temps.
On ne peut pas utiliser un sémaphore binaire sur la
base de données
Un sémaphore qui compte simplement nous rend la
tâche difficile pour empêcher un rédacteur d’entrer
pendant les lectures
180
Une solution
Variable rc: nombre de threads lisant la base de données
181
Le problème des lecteurs et rédacteurs
Solution:
wait
wait
signal
wait
wait signal
signal
signal
182
Le problème des lecteurs et rédacteurs
Deux choses sont intéressantes avec cette solution:
183
Exercice 1
Soit 5 processus P1, P2, P3, P4 et P5 dont la durée respective est de
10, 6, 2, 4 et 8 secondes.
1/ Si elles arrivent en même temps, et que Les priorités sont de 3, 5,
2, 1 et 4 pour P1, P2, P3, P4 et P5 respectivement. Si on applique les
séparément les algorithmes FIFO, SJF (préemptif et non préemptif), et
Round Robin avec un quantum de 4 secondes, déterminer :
l’ordre d’exécution des processus
Le temps moyen de rotation
le temps moyen d’attente.
2/ si les processus n’arrivent pas en même temps. Les dates d’arrivée
sont 0, 2, 3, 5, 5.001 pour P1, P2 , P3, P4 et P5 respectivement. En
utilisant l’algorithme du tourniquet, tracer le schéma d’exécution des
processus en déterminant le temps d’attente de chacun des processus
ainsi que le temps de réponse moyen. Les priorités sont de 3, 5, 2, 1
et 4 pour P1, P2, P3, P4 et P5 respectivement. Le quantum étant de 2
secondes.
184
Exercice 2
Qu’affiche le programme suivant?
int main(void)
{
int raison;
pid_t pid;
printf(“\n A“);
pid = fork();
switch (pid) {