1
Bienvenue
!
INF3723:
Systèmes d’exploitation
Luigi Logrippo
luigi@uqo.ca
http://w3.uqo.ca/luigi/
CES NOTES DE COURS SONT DISPONIBLES A
PARTIR DE MA PAGE WEB
Évaluation
Chap 0 2

Examen Intra (2h): 25% (le 25 octobre)

Examen Final (3h) 45% (le 13
décembre)
 Examens à livre fermé – aucun doc permis
 Le final sera sur toute la matière

Devs. théoriques et de programm. 30%
2-3 devs de programmation: 20% tous
3 devs théoriques: 10% tous
Contenu du cours
Chap 0 3

PARTIE 0: INTRODUCTION
 Revue des principales composantes d'un ordinateur.
 Structure générale des systèmes d'exploitation.

PARTIE 1: PROCESSUS et GESTION d’UNITÉ CENTRALE
 Description et contrôle des processus.
 Fils (threads).
 Parallélisme: exclusion mutuelle et synchronisation.
 Ordonnancement des processus sur un uniprocesseur.
 Parallélisme: interblocage et famine.

PARTIE 2: GESTION DE MÉMOIRE
 Adressage et gestion de la mémoire.
 Mémoire virtuelle.

PARTIE 3: FICHIERS, E/S ET PROTECTION
 Systèmes de fichiers, systèmes d’E/S
 Protection

Accent en classe sur les concepts théoriques de
longue durée de vie

La programmation, l’application seront dans les
sessions exercices
Chap 0 4
Manuel:
Chap 0 5

Silberschatz, Galvin, Gagne.
 Principes appliqués des systèmes d’exploitation, Vuibert

Avantages:
 très clair dans la présentation
 utilise Java
 beaucoup de notions intéressantes et utiles

Désavantages:
 beaucoup plus gros que nécessaire

Je le suivrai, mas pas toujours

Cependant la lecture du manuel est indispensable pour une
bonne compréhension de la matière.
 Les examens et les devoirs contiendront des questions
prises du manuel

Livres de Stallings et Tanenbaum en réserve a la
bibliothèque
Les labos et Java
Chap 0 6

1er labo la semaine prochaine sur Unix

Les devoirs de programmation se feront en Java
 Pas un langage utilisé dans les SE d ’aujourd ’hui
 Mais un langage qui facilite la programmation
parallèle
 Il commence à être utilisé utilisé dans les SE
répartis expérimentaux

Les labos fourniront une introduction a Java, et
de l’aide dans la programmation Java

Java ne sera pas utilisé en classe: pseudocode
sera utilisé au lieu

Le test et l ’examen contiendront des
questions sur Unix et Java
Labos et devoirs
Chap 0 7

Les devoirs seront constitués de:
20%: 3 travaux de programmation (Unix
et Java) sur:
 Parallélisme
 Synchronisation de processus
10%: Exercices écrits sur la théorie vue
en classe (probabl. 3 ensembles d’exercices)
1
Introduction
Chapitre 1
Que c’est qu’un SE
Développement historique des SE
http://w3.uqo.ca/lui
gi/
Concepts importants du Chapitre 1
Ch. 1 2

Que c’est que un SE

Évolution historique
 Par lots
 Multiprogrammés – balance de travaux
 À partage de temps (time-sharing)
 Parallèles:
 Fortement couplés
• Symétriques,
• Asymétriques: maître-esclave
 Faiblement couplés:
• Répartis
• Réseaux

Caractéristiques de matériel et logiciel requises pour cette
évolution

Systèmes à temps réel: durs, souples
Système d’exploitation (SE)
Ch. 1 3

Fournit l’interface usager/machine:
 Masque les détails du matériel aux applications
 Le SE doit donc traiter ces détails

Contrôle l’exécution des applications
 Le fait en reprenant périodiquement le
contrôle de l’UCT
 Dit à l’UCT quand exécuter tel programme

Il doit optimiser l`utilisation des ressources pour
maximiser la performance du système
Vue abstraite d’un SE
Ch. 1 4
Ressources et leur gestion
Ch. 1 5

Ressources:
physiques: mémoire, unités E/S, UCT...
Logiques = virtuelles: fichiers et bases de
données partagés, canaux de
communication logiques, virtuels...
les ressources logiques sont bâties par
le logiciel sur les ressources physiques

Allocation de ressources: gestion de
ressources, leur affectation aux usagers
qui les demandent, suivant certains
critères
Pourquoi étudier les SE?
Ch. 1 6

Logiciel très important…
tout programme roule sur un SE
interface usager-ordinateur

Les SE utilisent beaucoup d ’algorithmes
et structures de données intéressants
Les techniques utilisées dans les SE sont
aussi utilisées dans nombreuses autres
applications informatiques
 il faut les connaître
Développement de la théorie des SE
Ch. 1 7

La théorie des SE a été développée surtout dans
les années 1960 (!!)

A cette époque, il y avait des machines très peu
puissantes avec lesquelles on cherchait à faire
des applications comparables à celles
d’aujourd’hui (mémoire typique: 100-500K!)

Ces machines devaient parfois desservir des
dizaines d’usagers!

Dont le besoin de développer des principes pour
optimiser l’utilisation d ’un ordinateur.

Principes qui sont encore utilisés
Évolution historique des SE
Ch. 1 8

Le début: routines d`E/S, amorçage système

Systèmes par lots simples

Systèmes par lots multiprogrammés

Systèmes à partage de temps

Ordinateurs personnels

SE en réseau

SE répartis
 Les fonctionnalités des systèmes simples se retrouvent
dans les systèmes complexes.
 Les problèmes et solutions qui sont utilisés dans les
systèmes simples se retrouvent souvent dans les
systèmes complexes.
Phase 1: Les débuts
Ch. 1 9

Au début, on a observé qu`il y avait des
fonctionnalités communes à tous les
programmes

il fallait les pré-programmer et les fournir
au programmeur à moyen d`instructions
d` appel:
amorçage du système
entrée/sortie
Phase 2: Systèmes de traitement par lots (batch)
simples
Ch. 1 10

Sont les premiers SE (mi-50)

L’usager soumet une job à un opérateur
 Programme suivi par données

L’opérateur place un lot de plusieurs jobs sur le
dispositif de lecture

Un programme, le moniteur, gère l'exécution
de chaque programme du lot

Le moniteur est toujours en mémoire et prêt à être
exécuté

Les utilitaires du moniteur sont chargés au
besoin

Un seul programme à la fois en mémoire,
programmes sont exécutés en séquence

La sortie est normalement sur un fichier, imprimante, ruban
magnétique…
Ch. 1 11
Un ordinateur principal
(mainframe) du milieu des annnées ‘60
Musée de l’histoire de l’informatique http://www.computerhistory.org/
lecteur de cartes
rubans
disques
UCT
(mémoire probablem.
autour de 250-500K)
console opérateur
Ch. 1 12
Oui, cartes perforées…
Une ligne de données ou de programme était
codée dans des trous qui pouvaient être lus par
la machine
Ch. 1 13
Opérateur lisant un paquet de cartes
perforées
Source:
http://www.tietokonemuseo.saunalahti.fi/eng/kuva_32_
Ch. 1 14
Langage de contrôle des travaux
(JCL)

Utilisé pour contrôler l ’exec d ’une
job
 le compilateur à utiliser
 indiquer où sont les données

Exemple d’une job:
 paquet de cartes comme suit:

$JOB début

$FTN charge le compilateur
FORTRAN et initie son exécution

$LOAD charge le pgm objet (à
la place du compilateur)

$RUN transfère le contrôle
au programme usager

les données sont lues par le
moniteur et passées au progr.
usager
$JOB
$FTN
...
Programme
FORTRAN
...
$LOAD
$RUN
...
Données
...
$END
$JOB
...
(job
suivant)
Ch. 1 15
Langage de contrôle des travaux (JCL)

L’E/S est déléguée au moniteur

Chaque instruction d’E/S dans pgm usager
invoque une routine d’E/S dans le moniteur:
s’assure de ne pas lire une ligne JCL
un usager ne peu pas interférer avec les E/S
d`un autre usager…

Quand le programme usager se termine, la
prochaine ligne de JCL est lue et exécutée par
le moniteur.
Ch. 1 1
Le moniteur par lots

Lecture de cartes perforées

Interprétation de commandes JCL

Lecture (load) d’une job (du lecteur de
cartes)

Chargement en mémoire (dans la région
de l’usager) de cette job

Transfère le contrôle au programme
usager (job sequencing)

Exécution du programme usager
jusqu’à:
 fin du programme
 E/S
 erreur

À ce point, le moniteur reprend le
contrôle
 Pour le redonner plus tard au
même programme ou à un autre
Stallings
Caractéristiques désirables du matériel
(1)
Ch. 1 17

Protection de la mémoire
ne pas permettre aux pgms usager
d’altérer la région de la mémoire où se
trouve le moniteur

Minuterie
limite le temps qu`une job peut exécuter
produit une interruption lorsque le
temps est écoulé
Caractéristiques désirables du matériel
(2)
Ch. 1 18

Instructions privilégiées
 exécutables seulement par le moniteur
 une interruption se produit lorsqu’un programme usager
tente de les exécuter
 UCT peut exécuter en mode moniteur ou mode usager
 Les instructions privilégiées ne peuvent être exécutées
que en mode moniteur
 l ’usager ne peut exécuter que en mode usager
 seulement le SE ou une interruption peuvent changer de
mode

Interruptions
 facilitent le transfert de contrôle entre le système
d ’exploitation, les opérations d`E/S et les
programmes usagers
 Le mode moniteur sera plus souvent appelé
mode superviseur
Les systèmes par lots
Ch. 1 19

Ont été les premiers systèmes d`exploitation.

Ils sont associés aux concepts suivants:
 langage de contrôle de travaux (JCL)
 système d ’exploitation résident en mémoire
 kernel = noyau
 protection de mémoire
 instructions privilégiées
 modes usager-moniteur
 interruptions
 minuterie

Toutes ces caractéristiques se retrouvent dans les systèmes
d’aujourd’hui

Encore aujourd’hui on parle de jobs ‘par lots’ quand ils sont
exécutés séquentiellement sans intervention humaine
 P.ex. salaires, comptabilité d’une compagnie
Phase 2.5: Traitement par lots
multiprogrammé
[Stallings]
Ch. 1 20

Les opérations E/S sont extrêmement lentes
(comparé aux autres instructions)
 P. 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

Donc: pauvre utilisation de l’UCT lorsqu’un seul
pgm usager se trouve en mémoire
Traitement par lots multiprogrammé

Si la mémoire peut contenir +sieurs pgms,
l’UCT peut exécuter un autre pgm
lorsqu’un pgm attend après E/S

C’est la multiprogrammation
[Stallings]
Ch. 1 21
Plusieurs programmes en
mémoire pour la
multiprogrammation
Ch. 1 22
Exigences pour
multiprogrammation
Ch. 1 23

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:
• UCT, mémoire, unités E/S

Langage pour gérer l’exécution des
travaux: interface entre usager et OS
jadis JCL, maintenant shell, command
prompt
ou semblables
Spoule ou spooling
Ch. 1 24

Au lieu d ’exécuter les travaux au fur et à
mesure qu’ils sont lus, les stocker sur une
mémoire secondaire (disque)

Puis choisir quels programmes exécuter et
quand
Ordonnanceur à long terme, à discuter
Équilibre de travaux
Ch. 1 25

S`il y a un bon nombre de travaux à exécuter, on peut
chercher à obtenir un équilibre

Travaux qui utilisent peu l`UCT, beaucoup l ’E/S, sont
appelés tributaires de l`E/S

Nous parlons aussi de travaux tributaires de l ’UCT

Le temps d`UCT non utilisé par des travaux trib. de l ’E/S
peut être utilisé par des travaux trib. de l ’UCT et vice-
versa.

L ’obtention d`un tel équilibre est le but des ordonnanceurs
à long terme et à moyen terme (à discuter).

Dans les systèmes de multiprog. on a souvent coexistence
de travaux longs et pas urgents avec travaux courts et
urgents
 Le SE donne priorité aux deuxièmes et exécute les
premiers quand il y a du temps de machine disponible.
Phase 3: Systèmes à temps partagé (TSS)
ordinateur principal
(mainframe)
Terminaux
‘stupides’
Ch. 1 26
Chaque terminal a sa propre partition de
mémoire
Ch. 1 27
Systèmes à temps partagé (TSS)
Ch. 1 28

Le traitement par lots multiprogrammé ne
supporte pas l’interaction avec les usagers
 excellente utilisation des ressources mais frustration des
usagers!

TSS permet à la multiprogrammation de desservir
plusieurs usagers simultanément

Le temps d ’UCT est partagé par plusieurs
usagers

Les usagers accèdent simultanément et
interactivement au système à l’aide de terminaux
Systèmes à temps partagé (TSS)
Ch. 1 29

Le temps de réponse humain est lent: supposons
qu`un usager nécessite, en moyenne, 2 sec du
processeur par minute d’utilisation

Environ 30 usagers peuvent donc utiliser le
système sans délais notable du temps de réaction
de l’ordinateur

Les fonctionnalités du SE dont on a besoin sont
les mêmes que pour les systèmes par lots, plus
 la communication avec usagers
 le concept de mémoire virtuelle pour faciliter la
gestion de mémoire
 traitement central des données des usagers
(partagées ou non)
MULTICS et UNIX
Ch. 1 30

MULTICS a été un système TSS des
années 60, très sophistiqué pour son
époque

Ne réussit pas à cause de la faiblesse du
matériel de son temps

Quelques unes de ses idées furent
reprises dans le système UNIX
Ordinateurs Personnels (PCs)
Ch. 1 31

Au début, les PCs étaient aussi simples
que les premiers ordinateurs

Le besoin de gérer plusieurs applications
en même temps conduit à redécouvrir la
multiprogrammation

Le concept de PC isolé évolue maintenant
vers le concept d ’ordinateur de réseau
(network computer), donc extension des
principes des TSS.
Aujourd’hui
ordinateur principal
(mainframe ou serveur)
Terminaux
‘intelligents’ (PCs)’
Ch. 1 32
Retour aux concepts de TSS

Plusieurs PC (clients) peuvent être
desservis par un ordi plus puissant
(serveur) pour des services qui sont trop
complexes pour eux (clients/serveurs,
bases de données, telecom)

Les grands serveurs utilisent beaucoup
des concepts développés pour les
systèmes TSS
Ch. 1 33
Et puis…
Ch. 1 34

Systèmes d’exploitation répartis:
Le SE exécute à travers un ensemble
de machines qui sont reliées par un
réseau
 Pas discutés dans ce cours
Ch. 1 35
Évolution des SE
(fig. mise à jour par rapport
à votre livre)
Ch. 1 36
Une synthèse historique
Ordinateurs Personnels
Mainframes et grands serveurs
Multics et beaucoup d`autres
(1960s)
Unix
(1970)
MS-DOS
(1981)
Windows
(1990)
Linux
(1991)
Windows NT
(1988)
Windows 2000
Windows XP
Solaris
(1995)
Mac/OS
(1984)
Maintenant, quelques
définitions…
Ch. 1 37
Systèmes parallèles (tightly coupled)
Ch. 1 38

Le petit coût des puces rend possible leur
composition dans systèmes
multiprocesseurs

Les ordinateurs partagent mémoire,
horloge, etc.

Avantages:
plus de travail fait (throughput)
plus fiable:
 dégradation harmonieuse (graceful
degradation)
Systèmes parallèles
Ch. 1 39

Symétriques
Tous les UCTs exécutent le même SE
Elles sont fonctionnellement identiques

Asymétrique
Les UCTs ont des fonctionnalités
différentes, par exemple il y a un maître et
des esclaves.

Aujourd’hui, tout ordinateur puissant est
un système parallèle.
Systèmes distribués ( = répartis)
Ch. 1 40

Les réseaux d ’ordinateurs sont en pleine
émergence...

Systèmes multiprocesseurs faiblement
couplés (loosely coupled)
consistent d ’ordinateurs autonomes,
qui communiquent à travers lignes de
communication
Systèmes distribués ( = répartis)
Ch. 1 41

SE répartis
il y a un SE qui fonctionne entre ordinateurs
l ’usager voit les ressources éloignées
comme si elles étaient locales

SE en réseau (network operating systems)
fournissent:
partage de fichiers (systèmes client-
serveur)
patrons de communication (protocoles)
autonomie des ordinateurs
Systèmes à temps réel

Doivent réagir à ou contrôler des événements
externes (p.ex. contrôler une usine). Les délais de
réaction doivent être bornés

systèmes temps réel souples:
 les échéances sont importantes, mais ne sont
pas critiques (p.ex. systèmes téléphoniques)

systèmes temps réel rigides (hard):
 le échéances sont critiques, p.ex.
 contrôle d’une chaîne d`assemblage
 graphiques avec animation

(ma déf. de souple n’est pas la même que dans
le livre)
Ch. 1 42
Concepts importants du Chapitre 1
Ch. 1 43

Que c’est que un SE

Évolution historique
 Par lots
 Multiprogrammés – balance de travaux
 À partage de temps (time-sharing)
 Parallèles:
 Fortement couplés
• Symétriques,
• Asymétriques: maître-esclave
 Faiblement couplés:
• Répartis
• Réseaux

Caractéristiques de matériel et logiciel requises pour cette
évolution

Systèmes à temps réel: durs, souples
Dans le livre, pour ce chapitre, vous devez
Ch. 1 44

Étudier le chapitre entier
Terminologie: mémoire centrale et auxiliaire
Ch. 1 45

La mémoire centrale est la mémoire RAM sur
laquelle le CPU exécute les instructions

Le cache est étroitement lié à la mémoire centrale,
donc il est considéré partie de cette dernière

Mémoires auxiliaires sont toutes les autres
mémoires dans le système
 Disques
 Flash-memory
 Rubans…

Les m. aux. sont des périphériques
Terminologie
Ch. 1 46

Opérations d’E/S: Entrée ou Sortie, Input/Output
 Les opérations de lecture ou écriture en ou de mémoire
centrale
 Peuvent être directement ou indirectement demandées
par le programme
 Exemple d’indirectement: E/S occasionnées par la pagination
 Entrée:
 Read dans un programme
• Lecture de disque
• Caractères lu du clavier
• Click du souris
• Lecture de courriel
• Lecture de page web (à être affichée plus tard, p.ex.)
 Sortie:
 Write dans un programme
• Affichage sur l’écran
• Impression
• Envoi de courriel
• Sortie de page web demandée par une autre machine
Terminologie
Ch. 1 47

Travaux ‘en lots’ (batch)
 Travaux non-urgents qui sont soumis au système
pour ramasser la réponse plus tard
 Tri de fichier, calcul d’une fonction complexe,
grosses impressions, sauvegarde régulière de
fichiers usagers
 Pour plus d’efficacité, peuvent être groupés et
exécutés les uns après les autres

Interactifs
 Sont les travaux qui demandent une
interaction continue avec l’ordinateur:
 Édition de documents ou d’un programme

Les premiers ordinateurs n’avaient pas de
mécanismes de communication aisée entre
usager et machine, donc normalement les travaux
étaient ‘par lots’
Annexe historique sur les techniques de
programmation

Les informaticiens d’aujourd’hui sont
souvent surpris du fait qu’on pouvait faire
quelque chose d’utile avec des ordinateurs
aussi petits que ceux qui existaient dans
les années ’60

Un exemple pourra aider à comprendre...
Ch. 1 48
Un programme Hello World du début des
années ‘60
Ch. 1 49
110016#T
OXXXXXX0
HELLO WORLD
Ce programme consiste en 27 octets (en langage
machine) Son adresse initiale est 0.
La première ligne dit d’imprimer à partir de l’adresse 16 pour
longueur 11.
La deuxième ligne est l’instruction
STOP. La 3ème ligne est la constante
à imprimer
50
Programmes Hello World d’aujourd’hui
class HelloWorld {
public static void printHello( ) {
System.out.println("Hello,
World");
}
}
class UseHello {
public static void main(String[ ] args)
{ HelloWorld myHello = new
HelloWorld( ); myHello.printHello( );
}
}
Dans l’article:
C. Hu. Dataless objects considered harmful.
Comm. ACM 48 (2), 99-101
http://portal.acm.org/citation.cfm?id=1042091.1042126#
l’auteur présente deux versions orientées objet de
programmes ‘Hello World’. Il critique la version ci-
dessous disant qu’elle n’est pas vraiment orientée
objet
et qu’il faudrait vraiment utiliser la version à droite.
Quelle est la mémoire demandée par ces
class Message {
String messageBody;
public void setMessage(String
newBody) { messageBody =
newBody;
}
public String getMessage(
) { return messageBody;
}
public void printMessage( )
{ System.out.println(messageBo
dy);
}
}
public class MyFirstProgram {
public static void main(String[ ]
args) { Message mine = new
Message ( );
mine.setMessage("Hello, World");
Message yours = new Message
( );
yours.setMessage("This is my first
program!"); mine.printMessage( );
System.out.println(yours.getMessage( ) +
"—" +
mine.getMessage( ) );
1
Structures d’ordinateurs
(matériel)
Chapitre 2
http://w3.uqo.ca/lui
gi/
Ch.2 2
Concepts importants du Chapitre 2

Registres d’UCT, tampons en mémoire, vecteurs
d’interruption

Interruption et polling

Interruptions et leur traitement

Méthodes d’E/S avec et sans attente, DMA

Tableaux de statut de périphériques

Hiérarchie de mémoire

Protection et instructions privilégiées, modes
d’exécution

Registres bornes

Appels de système
Ch.2 3
Architecture d’ordinateurs
Dans beaucoup de systèmes, ce n ’est que l`UCT qui peut adresser
la mémoire: les infos transférées entre les périphériques et la
mémoire (ou même entre mémoire et mémoire) doivent passer à
travers l ’UCT, dont le concept de `vol de cycles` (cycle stealing).
Registres de l’UCT (mémoire rapide dans
UCT)
Ch.2 4

Registres de contrôle et statut
 Généralement non disponibles aux programmes
de l’usager
 l’UCT en utilise pour contrôler ses opérations
 Le SE en utilise pour contrôler l’exécution
des programmes

Registres Visibles (aux usagers)
 disponibles au SE et programmes de
l’usager
 visibles seulement en langage machine ou
assembleur
 contient données, adresses etc.
Exemples de registres de contrôle et
statut
Ch.2 5

Le compteur d’instruction (PC)
Contient l’adresse de la prochaine
instruction à exécuter

Le registre d’instruction (IR)
Contient l’instruction en cours d’exécution

Autres registres contenant, p.ex.
bit d’interruption activé/désactivé
bit du mode d’exécution superviseur/usager
bornes de mémoire du programme en exec.

Registres de statut des périphériques
Opération d`ordinateurs pour E/S
Ch.2 6

Unités d’E/S et UCT peuvent exécuter en
même temps

Chaque type d`unité a un contrôleur

Chaque contrôleur a un tampon ou registre
en mémoire principale (buffer)

UCT transfère l ’information entre
contrôleur et tampon (vol de cycles)

Le contrôleur informe l ’UCT que
l’opération a terminé

L’UCT a des registres qui contiennent le
statut des différentes unités E/S.
Deux façons différentes de traiter la
communication entre UCT et unités E/S
Ch.2 7

Polling (E/S programmée, interrogation,
scrutation): le programme interroge
périodiquement les regs statut et
détermine le statut de l ’unité E/S: pour
les unités E/S lentes

Interruption: l ’UCT est interrompue entre
instructions quand un événement
particulier se produit (fin d ’E/S, erreur...)
les interruptions peuvent être inhibées
pendant l ’exécution de certaines parties
critiques du programme (il y a une
instruction pour faire ça).
Exemple
Ch.2 8

Courriel…
J’utilise l’interruption si j’ai une sonnerie
qui m’avertit quand un courriel arrive
J’utilise la scrutation (polling) si au lieu je
regarde le courriel périodiquement de
mon initiative
Registres, vecteurs d’interruptions, tampons
Unité centrale
Registre
s
Mémoir
e
Vect.
interrupt
Registre imprimante
Registre disque
Registre clavier
E/S
inuteri
e
xceptio
n
M
E
Les registres en mémoire
sont aussi appelés
tampons (buffers)
Ch.2 9
Le cycle d’instruction de base
[Stallings]
Ch.2 10
• L’UCT extrait l’instruction de la mémoire.
• Ensuite l’UCT exécute cette instruction
•Le compteur d’instruction (PC) contient l’adresse de la
prochaine instruction à extraire
• Le PC est incrémenté automatiquement après chaque extraction
Le cycle d’instruction avec interruptions
[Stallings]

Après chaque instruction, si les interruptions sont habilitées, l’UCT
examine s’il y a eu une interruption

S’il n’y en a pas, il extrait la prochaine instruction du programme

S’il y en a, il suspend le pgm en cours et branche l’exécution à une
position fixe de mémoire (déterminée par le type d ’interruption)
 une partie de la mémoire et réservée pour ça
Ch.2 11
Traitement des interruptions
Ch.2 12
Le pgm de gestion de
l’interruption
Ch.2 13
(interrupt
handler)

Est un pgm qui détermine la nature d’une
interruption et exécute les actions requises

L’exécution est transférée à ce pgm...

…et doit revenir au programme initial au point
d’interruption pour que celui-çi continue
normalement ses opérations

Le point d’interruption peut se situer n’importe
où dans le pgm (excepté où les interruptions ne
sont pas habilitées).

L’on doit donc sauvegarder l’état du programme
 Registres UCT et autres infos nécessaires
pour reprendre le programme après
Interruptions causées par les périphériques
ou par le matériel
Ch.2 14

E/S
lorsq’une opération E/S est
terminée

Bris de matériel (ex: erreur de parité)
Interruptions causées par le programme
usager
Ch.2 15

Exception
Division par 0, débordement
Tentative d’exécuter une instruction
protégée
Référence au delà de l’espace mémoire
du progr.

Appels du Système
Demande d’entrée-sortie
Demande d’autre service du SE

Minuterie établie par programme lui-
même
Interruptions causées par le SE
Ch.2 16

Minuterie établie par le SE

Préemption: processus doit céder l’UCT à
un autre processus
Terminologie d`interruptions
Ch.2 17

Pas normalisée, d’ailleurs les mécanismes
de traitement sont pareils…

C’est une bonne idée de distinguer entre:
trappes: causées par le pgm en
exécution: division par 0, accès illégal,
appels du système...
interruptions: causées par
événements indépendants:
minuterie, fin d` E/S
fautes: ce mot est utilisé surtout par
rapport à la pagination et la segmentation.
Ordre séquentiel des interruptions [Stallings]

Interruption désactivée durant l’exécution d’un IH

Les interruptions sont en attente jusqu’à ce que l’UCT active les
interruptions (file d’attente en matériel).

L’UCT examine s’il y a des interruptions en attente après avoir
terminé d’exécuter l’IH
Ch.2 18
Interruptions avec priorités

L’IH d’une interruption de priorité faible peut se faire interrompre
par une interruption de priorité élevée

Exemple: les données arrivant sur une ligne de communication
doivent-être absorbées rapidement pour ne pas causer de
retransmissions
Ch.2 19
Deux méthodes d’E/S
Ch.2 20
La Multiprogrammation est possible dans le
cas de méthode (b)
Ch.2 21

Après l’initiation d’une op d’E/S, le
contrôle retourne à l’UCT

Qui peut utiliser le temps d’attente
E/S pour exécuter un autre
programme
Ch.2 22
Pour gérerer les unités d’E/S (plus. E/S peuvent être en
cours)
Tableau de statut des unités
E/S
Erreur dans la figure: imprimante devrait
être
Accès direct à la mémoire (DMA)
Ch.2 23

Sans DMA, tous les accès de mémoire passent à
travers l’UCT
 Donc les E/S occupent une certaine portion du
temps de l’UCT, même si l’UCT pourrait en même
temps exécuter un processus (vol de cycles)

Avec DMA, les unités d’E/S transfèrent
les données directement avec la mémoire
 L’UCT est impliquée seulement pour initier et
terminer les E/S
 L’UCT est complètement libre d’exécuter
d’autres processus (pas de vol de cycles)
MEMOIRE
MEMOIRE
UNITÉS E/S
UNITÉS E/S
UCT
UCT
Sans DMA
Accès directe (DMA)
transfert données
Ch.2 24
Hiérarchie de mémoire
Ch.2 25

Différentes types de mémoire

Constituent une hiérarchie
vitesse (de plus vite à moins vite)
coût (de plus cher à moins cher)
permanence ou non
Hiérarchie de mémoire
RAM
Ch.2 26
p. ex. mémoire flash
Important pour la compréhension du concept
de mémoire virtuelle
Ch.2 27

L’UCT ne peut pas accéder à une
instruction ou à une donnée que s’ils se
trouvent
En cache dans les ordinateurs où il y a
de cache
Ou sinon en mémoire centrale (RAM)

Donc ces données doivent être apportées
en RAM ou cache au besoin
Protection
Ch.2 28

Plusieurs processus et le S/E partagent la
mémoire, exécutant parfois les mêmes
instructions

Il faut empêcher que l ’un fasse des choses
réservées à l ’autre

Il faut les protéger les uns des autres

Protection d ’instructions

Protection de mémoire
Instructions protégées = privilégiées
Ch.2 29

Ne peuvent être exécutées que par le S/E, en
mode superviseur

Exemples:
 Les instructions d’E/S
 Instructions pour traiter les registres non-
visibles d’UCT
 Instructions pour la minuterie
 Instructions pour changer les limites de
mémoire
 Instructions pour changer de mode
d’exécution (superviseur,usager)

Le programme usager peut demander au SE que
ces opérations soient exécutées, mais il ne peut
pas les exécuter directement
Fonctionnement double mode
superviseu
r
usage
r
set user mode

Un registre d’UCT contient un bit qui dit si l ’UCT
exécute couramment en mode superviseur ou en mode
usager

ce bit est changé automatiquement à mode superviseur
lors d’une interruption

certaines instructions ne peuvent être exécutées que
en mode superviseur (instructions privilégiées):
 des tentatives de les exécuter en mode usager causeront
une interruption, et retour à mode superviseur

le mode superviseur peut être changé à mode usager par
une instruction privilégiée

ces deux modes ont aussi des autres noms, v. livre
Ch.2 30
Interrupt/
fault
Protection de mémoire: chaque processus
doit rester dans ses propres bornes de
mémoire

Solution typique: deux registres dans l ’UCT
 quand l ’UCT exécute un processus, elle sait quelle est la
borne inférieure et supérieure de la zone de mémoire
de ce processus
 l ’adresse de chaque instruction est comparée à ces
deux adresses avant l ’exécution
 si un processus cherche à dépasser ses limites:
interruption
Ch.2 31
Protection de mémoire

l’adresse de chaque instruction est comparée à ces
deux adresses avant l’exécution
 seulement si le processus exécute en mode usager

si un processus cherche à dépasser ses bornes:
 Interruption  mode superviseur

les instructions pour affecter les registres bornes sont
privilégiées
Ch.2 32
Appels du système (system
calls)
Ch.2 33

Quand un processus usager a besoin d ’un
service du SE, par ex. E/S, il exécute un appel du
système

C’est une instruction qui cause une interruption
(trap) et changement de mode (mode superviseur)

Est associée à des paramètres qui indiquent le
type de service désiré

Le S/E prend la relève et exécute le service, il
retourne puis au processus appelant avec des
params qui indiquent le type de résultat
 changement de mode (mode usager)
Concepts importants du Chapitre 2
Ch.2 34

Registres d’UCT, tampons en mémoire, vecteurs
d’interruption

Interruption et polling

Interruptions et leur traitement

Méthodes d’E/S avec et sans attente, DMA

Tableaux de statut de périphériques

Hiérarchie de mémoire

Protection et instructions privilégiées, modes
d’exécution

Registres bornes ou limites

Appels de système
Dans le livre, pour ce chapitre, vous devez
Ch.2 35

Étudier le chapitre entier

La section 2.3 n’a pas été discutée en
classe, cependant son contenu est
important pour la compréhension du
fonctionnement des systèmes
informatiques et sûrement elle est
enseignée dans d’autres cours…
SVP réviser
à discuter plus tard (Chap. 13)
Informations additionnelles
Ch.2 36

Pour des explics claires sur comment
différents parties d’un ordinateur
fonctionnent, je vous recommande
hautement
http://computer.howstuffworks.com/
Un site qui contient des explications très
claires sur un grand nombre de sujets
(malheureusement, aussi beaucoup de publicité)
1
Structure des Systèmes
d’Exploitation
Chapitre 3
Beaucoup de choses dans ce chap. sont faciles à lire
et je vais pas les discuter en classe.
Nous reviendrons sur plusieurs de ces concepts.
Section 3.7 sera discutée dans le lab.
http://w3.uqo.ca/luigi/
Concepts importants du Chapitre 3
Ch.3 2

Responsabilités et services d’un SE

Le noyau

Appels du système (system calls)

Communication entre processus
Messagerie et mémoire partagée

Structure à couches

Machines virtuelles
Gestion de processus et UCT
Ch.3 3

Un processus=tâche est un programme en
exécution
 il a besoin de ressources pour exécuter (UCT,
mémoire, unités E/S...)

Le SE est responsable pour:
 allocation de ressources aux processus
 création, terminaison des processus
 suspension, reprise des processus
 synchronisation, communication entre processus
Gestion de mémoire principale (RAM)
Ch.3 4

Le SE est responsable pour:
savoir quels processus utilisent quelles
parties de la mémoire
savoir quels processus en demandent,
et combien
allouer la mémoire quand elle
devient disponible
libérer la mémoire
Ch.3 5
Gestion de mémoire virtuelle
mag n etic tapes
optical disk
ma g n etic disk
electro n ic disk
cache
ma i n m em o r y
registers

La mémoire principale est souvent trop petite pour
contenir tous les processus en exécution

La mémoire secondaire (disques, flash) est
normalement utilisée pour contenir les parties
d`un processus qui ne sont pas actives à l ’instant

La mémoire principale et la mémoire secondaire
forment donc une unité logique appelée mémoire
virtuelle

Pour implanter la mémoire virtuelle, le SE doit
gérer de façon conjointe mémoire RAM et
mémoire disque

Mécanisme de va-et-vient (swap)
Hiérarchie de mémoire!
Services primaires des Systèmes
d’exploitation
Ch.3 6

Exécution de programmes: chargement,
exécution (load, run)

Opérations E/S

Manipulation fichiers

Communication et synchronisation entre
processus

Détection et traitement d’erreurs
Autres services importants
Ch.3 7

Allocation de ressources

Protection de ressources

Comptabilité
Le noyau (kernel) du SE
Ch.3 8

La partie résidente (toujours en RAM) du SE est appelée
Kernel = noyau

Les autres parties sont amenées en RAM au besoin

Contient les fonctionnalités critiques du SE: elles doivent
toujours être prêtes à l ’utilisation
 traitement d ’interruptions
 gestion de UCT
 gestion mémoire
 communication entre processus
 etc.

À part ça, quoi exactement mettre dans le kernel est une
question pour les concepteurs des SE

La plupart des fonctionnalités discutées dans ce cours sont
normalement dans le kernel
Appels du système
Ch.3 9

L’interface entre un processus et le SE
directement disponibles dans les langages
de programmation `bas niveau`
(assembleur, C, C++)
ils sont cachés dans les langages a
haut niveau (Java, Ada...)

Utilisent des paramètres pour
transmettre
la définition exacte des besoins de l
’usager
le résultat de l`appel
(successful, unsuccessful...)
Interpréteur de commandes en UNIX
Le command interpreter (shell) peut démarrer et charger
différents processus en mémoire, exécutant des appels de
système appropriés (fork, exec). Lire détails dans le livre, aussi
v. sessions exercices.
Ch.3 10
Deux modèles de communication entre
processus par appels de système
a) transfert de messages entre processus (message
passing)
- utilisant le service de messagerie offert par le noyau
b) à travers mémoire partagée entre processus (shared
Ch.3 11
Messagerie et mémoire partagéé

Messagerie:
 il faut établir une connexion entre processus (appels
de système open connection, accept connection, close
connection, read/send message)
 les processus s ’envoient des messages utilisant
des identificateurs préalablement établis

Mémoire partagée
 il est nécessaire d ’établir une zone de
communication entre processus
 les processus doivent mutuellement synchroniser
leur accès a cette zone
 Pour ceci, il font appel au SE (Chap. 7)
v. chap. 7: synchro de proc.
Ch.3 12
Programmes système
Pas partie du kernel, en augmentent la fonctionnalité.
Voir discussion et exemples dans le livre
Ch.3 13
Partage de responsabilités entre programmes
de systèmes et noyau
Ch.3 14

C’est en partie une décision de conception de SE
de décider quelles fonctionnalités doivent être
implémentées dans le kernel, et quelles dans les
programmes de système.

Dans l ’évolution des SE il y a eu un transfert de
fonctionnalités vers l ’extérieur de la figure
précédente

Dans les SE modernes, les programmes de
système sont l`interface entre usager et noyau
Structure en couches dans les SE modernes
Ch.3 15

Un SE est divisé dans un certain nombre
de couches, bâties les unes sur les
autres
la couche la plus basse est le matériel
la plus élevée est l ’interface usagers

Les couches supérieures utilisent les
fonctionnalités fournies par les niveaux
inférieurs
Structure à couches

opérations créées dans une couche pour les couches extérieures

opérations fournies par une couche, utilisées par la prochaine
couche, et cachées aux couches extérieures

opérations d ’une couche intérieure rendues disponibles à une
couche extérieure
 à éviter en principe, mais… v. après
Ch.3 16
Structure à couches dans le système THE
(1968)
Ch.3 17

La structure à couches fut inventée dans le système
THE (E.W. Dijkstra) qui avait les couches suivantes:
Interface usager
programmes usagers
gestion E/S
pilotage console opérateur
gestion mémoire et tampons
gestion UCT
matériel
L’autre possibilité serait la structure réseau

Plus difficile à gérer, à cause des
nombreuses interfaces possibles
À
couches
Ch.3 18
Réseau
Avantages, désavantages de suivre fidèlement une
structure en couches
Ch.3 19

Avantages:
 Chaque couche ne doit connaître que les
fonctionnalités fournies par la couche
immédiatement sous-jacente
 Chaque couche ajoute ses propres fonctionnalités
 Les erreurs peuvent plus facilement être isolés
dans une couche spécifique
 Maison construite un étage à la fois… poser
l’étage n seulement quand l’n-1 est solide

Désavantages:
 Pas efficace car un appel des programmes
usager à des ressources du matériel implique
autant d’appels qu’il y a des couches
intermédiaires

Excellent principe, pas toujours fidèlement
suivi
Structure de système - Approche simple
Ch.3 20

MS-DOS - cherchait à obtenir une fonctionnalité
maximale avec des ressources limitées
 mono-tâche, mono-usager
 pas très modularisé
 manque de séparation claire entre couches
 accès direct aux périphériques (écran, etc.) permis
aux programmes d`application
 manque de contrôles, vulnerabilité
 malheureusement, il fut adapté à des
fonctionnalités plus complexes...
 Fut la prémière base de Windows et une grande partie
de l’histoire de Windows a été un effort de dépasser
les limitations de MS-DOS
Couches du MS-DOS
Ch.3 21
Structure UNIX
Ch.3 22

Multi-tâches, multi-usagers depuis le début

Le système UNIX initial était aussi préoccupé par
les limitation du matériel

Distinction entre:
 programmes du système
 noyau
 tout ce qu’il y a entre l ’interface des appels de
système et le matériel
 fournit dans une seule couche un grand
nombre de fonctionnalités
• système fichiers, ordonnancement UCT, gestion
mémoire...

Plus modulaire et protégé que MS-DOS
Structure UNIX: peu de couches
Ch.3 23
Micronoyaux (microkernels)
Ch.3 24

Dans les premiers SE, aussi UNIX, tout
était dans le noyau

Après, un effort fut fait pour laisser dans le
noyau UNIX seulement les fonctionnalités
absolument nécessaires

Une des fonctionnalités du micronoyau
UNIX est la communication par échange de
messages
utilisé pour la communication entre
programme client et service
25
Structure à couches dans OS/2 (IBM)
suit les idées d’unix
L ’OS/2 était beaucoup mieux organisé que MS-DOS, et donc
moins vulnérable. Cependant il était peu performant.
Win-NT a cherché à utiliser des principes semblables, mais
avec une
Structure client-serveur dans noyau Win-NT
Win-NT a un petit noyau qui fournit une structure client-
serveur
, enutilisant échanges de messages
Supporte différents SE: Win, OS/2, Posix
Ch.3 26
Machines virtuelles: le problème et la
solution
Ch.3 27

Comment permettre de rouler différents SE
sur une seule machine physique?

Pas évident, car chaque SE demande
accès direct au matériel

SOLUTION: Un programme qui crée une
couche qui met à disposition plusieurs
machines physiques virtuelles

Chaque machine se comporte comme une
machine physique séparée

Sur chacune, nous pouvons rouler un SE
différent
Machines Virtuelles
Ch.3 28

Virtuel en informatique dénote quelque chose qui
n ’est pas réel, n ’est pas du matériel: il est
construit par le logiciel sur la base des
ressources fournies par le matériel

Une machine virtuelle est une machine créée
par des couche de logiciel

Elle peut avoir des caractéristiques identiques à la
machine physique du système:
 mêmes instructions, etc.

Ou elle peut ‘simuler’ une autre machine physique
 p.ex.pour exécuter Microsoft sur Apple

Plusieurs machines virtuelles peuvent être créées
sur une machine physique donnée!
(a) Une seule mach. réelle et un seul
noyau
Ch.3 29
(b) plus. mach. virtuelles et plus.
noyaux
Fonctionnement typique

Le système VM laisse exécuter normalement les
instructions non privilégiées

Les appels au système sont exécutés par le
système VM et les résultats sont passés à la
machine virtuelle sur laquelle le processus
exécute
Ch.3 30
Avantages

Chaque machine virtuelle peut utiliser un
SE différent!

En théorie, on peut bâtir des machines
virtuelles sur des machines virtuelles!

Protection complète, car les machines
virtuelles sont complètement isolées les
unes des autres

Un nouveau SE peut être développé sur
une machine virtuelle sans déranger les
autres
Ch.3 31
Implémentations
Ch.3 32

Le concept de VM est très utilisé pour
permettre de rouler un SE sur un autre

P.ex. SUN, Apple, Linux permettent de
rouler Windows sur leur plateforme,

Ils doivent fournir à Windows un
environnement que Windows reconnaît
comme son environnement Intel usuel
Concepts importants du Chapitre 3
Ch.3 33

Responsabilités et services d’un SE

Le noyau

Appels du système (system calls)

Communication entre processus
Messagerie et mémoire partagée

Structure à couches

Machines virtuelles
Par rapport au manuel…
Ch.3 34

Étudier sections 3.1 jusqu’à 3.6.

La section 3.7 n’a pas été discutée en
classe mais elle contient des concepts
importants concernant Java donc c’est une
excellente idée de la lire

Les sections 3.8 et 3.9 ne sont pas sujet
d’examen cependant il est utile de les
lire.
1
Gestion de
Processus
Chapitre 4
http://w3.uqo.ca/lui
gi/
Concepts importants du Chapitre 4
Ch.4 2

Processus
 Création, terminaison, hiérarchie

États et transitions d’état des processus

Process Control Block

Commutation de processus
 Sauvegarde, rechargement de PCB

Files d’attente de processus et PCB

Ordonnanceurs à court, moyen, long terme

Processus communicants
 Producteurs et consommateurs
Processus et
terminologie
Ch.4 3
(aussi appelé job, task, user program)

Concept de processus: un programme en
exécution
 Possède des ressources de mémoire,
périphériques, etc

Ordonnancement de processus

Opérations sur les processus

Processus coopérants

Processus communicants
Création de processus
Ch.4 4

Les processus peuvent créer d’autres
processus, formant une hiérarchie
(instruction fork ou semblables)
Terminaison de processus
Ch.4 5

Un processus exécute sa dernière
instruction
pourrait passer des données à son
parent
ses ressources lui sont enlevées

Le parent termine l’exécution d’un fils
(avortement) pour raisons différentes
le fils a excédé ses ressources
le fils n`est plus requis

etc.
Arbre de processus en UNIX
Ch.4 6
État de processus IMPORTANT
Ch.4 7

Au fur et a 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 l ’UCT
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 ’UCT
terminated: fin d ’exécution
Ch.4 8
Diagramme de transition d`états d`un
processus
Ordonnanceur = angl.
États Nouveau,
Terminé:

Nouveau
 Le SE a créé le processus
 a construit un identificateur pour le processus
 a construit les tableaux pour gérer le processus
 mais ne s’est pas encore engagé à exécuter
le processus (pas encore admis)
 pas encore alloué des ressources
 La file des nouveaux travaux est souvent
appelée spoule travaux (job spooler)

Terminé:
 Le processus n ’est plus exécutable, mais ses
données sont encore requises par le SE
(comptabilité, etc.)
Ch.4 9
Transitions entre processus

Prêt  Exécution
Lorsque l ’ordonnanceur UCT 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’UCT
• Cas important: le processus à épuisé son intervalle
de temps (minuterie)
Ch.4 10
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
Ch.4 11
Sauvegarde d’informations processus
Ch.4 12

En multiprogrammation, un processus exécute
sur l ’UCT de façon intermittente
 Chaque fois qu’un processus reprend l ’UCT
(transition prêt  exécution) il doit la reprendre
dans la même situation où il l’a laissée (même
contenu de registres UCT, etc.)

Donc au moment où un processus sort de l’état
exécution il est nécessaire de sauvegarder ses
informations essentielles, qu’il faudra récupérer
quand il retourne à cet état
PCB = Process Control Block:
Représente la situation actuelle d ’un processus,
pour le reprendre plus tard
Registres
UCT
Ch.4 13
Process Control Block (PCB) IMPORTANT
pointeur: les PCBs sont rangés dans des
listes enchaînées (à voir)
état de processus: ready, running, waiting…
compteur programme: le processus
doit reprendre à l ’instruction
suivante
autres registres UCT
bornes de mémoire
fichiers qu’il a ouvert
etc., v. manuel
Ch.4 14
Commutation de
processeur
Ch.4 15
Aussi appélé commutation de contexte ou context
switching

Quand l’UCT passe de l’exécution d ’un
processus 0 à l ’exécution d`un proc 1, il
faut
mettre à jour et sauvegarder le PCB de
0
reprendre le PCB de 1, qui avait
été sauvegardé avant
remettre les registres d ’UCT tels que le
compteur d ’instructions etc. dans la
même situation qui est décrite dans le
PCB de 1
Ch.4 16
Commutation de processeur (context
switching)
Il se peut que beaucoup de temps passe avant le
retour au processus 0, et que beaucoup d’autres proc
soient exécutés entre temps
Le PCB n ’est pas la seule
information à sauvegarder... (le manuel n’est
pas clair ici)
Ch.4 17

Il faut aussi sauvegarder l ’état des
données du programme

Ceci se fait normalement en gardant
l ’image du programme en mémoire
primaire ou secondaire (RAM ou
disque)

Le PCB pointera à cette image
La pile d’un processus (v. Stallings App.
1B) aussi à sauvegarder
Ch.4 18

Quand un processus fait appel à une procédure, à une
méthode, etc., il est nécessaire de mettre dans une pile
l’adresse à laquelle le processus doit retourner après
avoir terminé cette procédure, méthode, etc.

Aussi on met dans cette pile les variables locales de
la procédure qu’on quitte, les paramètres, etc., pour
les retrouver au retour

Chaque élément de cette pile est appelé stack frame
ou cadre de pile

Donc il y a normalement une pile d’adresses de retour après
interruption et une pile d’adresses de retour après appel de
procédure
 Ces deux piles fonctionnent de façon semblable, mais
sont indépendantes

Les informations relatives à ces piles (base, pointeur…)
doivent aussi être sauvegardées au moment de la
commutation de contexte
La Pile d’un processus
Appel
A
Appel
B
Ch.4 19
P
A
B
Données B
Données A
Données P
PIL
E
Ch.4
Pointeurs de pile processus à sauvegarder:
base et borne
cadre 4
cadre 3
cadre 2
cadre 1
pointeur de
base
pointeur de
borne
La pile fait normal. partie de l’image du programme, mais les
pointeurs sont normal. des registres d’UCT donc il sont
Ch.4 21
Rôle du matériel et du logiciel dans le
traitement
d’interruptions
MATÉRIEL LOGICIEL
Signal d’interruption généré
UCT termine l’instruction
courante et détecte
interruption
Registres d’UCT sont
sauvegardés dans une
pile
UCT saute à l’adresse trouvée
dans le vecteur
d’interruption
Infos mises à jour et
sauvegardées dans
PCB
Le code de traitement
de l’interruption est
exécuté
L’ordonnanceur choisit
un processus dans la file
prêt
Les registres d’UCT sont
rechargés avec ce qu’on avait
sauvegardé dans PCB pour ce
processus,
Les infos relatives à ce
processus sont rétablies à partir
de son PCB
dispatche
r
Files d’attente IMPORTANT
Ch.4 22

Les ressources d ’ordinateur sont souvent
limitées par rapport aux processus qui en
demandent

Chaque ressource a sa propre file de processus
en attente

À un moment donné, un proc ne peut se trouver
que dans une seule des différentes files du SE

En changeant d’état, les processus se déplacent
d ’une file à l`autre
 File prêt: les processus en état prêt=ready
 Files associés à chaque unité E/S
 etc.
Ce sont les PCBs qui sont dans les
files d’attente (dont le besoin d ’un pointeur
dans le PCB)
file prêt
Nous ferons l’hypothèse que le premier processus dans une file
est celui qui utilise la ressource: ici, proc7 exécute, proc3 utilise
disque 0, etc.
Ch.4 23
Ch.4
Cet ensemble de files inclut donc la table de
statut périphériques (fig. au Chap. 2)
2 fois la même erreur ici: imprimante devrait être
Une façon plus synthétique de décrire la
mêmesituation (pour les devoirs et les examens)
prêt  7 
2
bandmag0

bandmag1

Ch.4 25
Les PCBs ne sont pas déplacés en
mémoire
pour être mis dans les différentes
files: ce sont les pointeurs qui
changent.
ready
disk unit 0
. . . . . .
PCB2 PCB3 PCB4 PCB5 PCB6 PCB7 PCB14
term. unit 0
Ch.4 26
Ordonnanceurs (schedulers)
Ch.4 27

Programmes qui gèrent l ’utilisation de
ressources de l`ordinateur

Trois types d`ordonnanceurs :
À court terme = ordonnanceur
processus: sélectionne quel processus
doit exécuter la transition prêt 
exécution
À long terme = ordonnanceur travaux:
sélectionne quels processus peuvent
exécuter la transition nouveau  prêt
(événement admitted) (de spoule travaux à file
prêt)
À moyen terme: nous verrons
Ordonnanceur travaux = long terme
et ordonnanceur processus = court terme
Ch.4 28
Ordonnanceur
travaux
Ordonnanceur
processus
Ordonnanceurs
Ch.4 29

L`ordonnanceur à court terme est exécuté
très souvent (millisecondes)
doit être très efficace

L`ordonnanceur à long terme doit être
exécuté beaucoup plus rarement: il
contrôle le niveau de multiprogrammation
Un des ses critères pourrait être la
bonne utilisation des ressources de
l’ordinateur
P.ex. établir une balance entre travaux liés
à l’UCT et ceux liés à l ’E/S
Ordonnancement de processus (court terme)
Ch.4 30
Disponibilité
Ress.
Ordonnanceur à moyen terme
Ch.4 31

Le manque de ressources peut parfois
forcer le SE à suspendre des processus
ils seront plus en concurrence avec les
autres pour des ressources
ils seront repris plus tard quand les
ressources deviendront disponibles

Ces processus sont enlevés de mémoire
centrale et mis en mémoire secondaire,
pour être repris plus tard
`swap out`, `swap in` , va-et-vien
Ordonnanceurs à court et moyen terme
Ch.4 32
cour
t
moye
n
États de processus dans UNIX SVR4
(Stallings) Un exemple de diagramme de transitions d’états pour
un SE réel
Kernel, user
mode =monitor
,
user mode 3
Ch.4 3
Processus coopérants
Ch.4 34

Les processus coopérants peuvent
affecter mutuellement leur exécution

Avantages de la coopération entre
processus:
partage de l ’information
efficacité en faisant des tâches en
parallèle
modularité
la nature du problème pourrait le
demander
 P.ex. gestion d’événements
indépendants
Ch.4 35
Le pb du producteur - consommateur

Un problème classique dans l ’étude des
processus communicants
un processus producteur produit des
données (p.ex.des enregistrements d ’un
fichier) pour un processus consommateur
un pgm d’impression produit des
caractères -- consommés par une
imprimante
un assembleur produit des modules objet
qui seront consommés par le chargeur

Nécessité d’un tampon pour stocker les
items produits (attendant d’être
Ch.4 36
Tampons de communication
Prod
1 donn
Cons
Prod
Cons
1 donn 1 donn 1 donn
Si le tampon est de longueur 1, le producteur et
consommateur doivent forcement aller à la même vitesse
Des tampons de longueur plus grandes permettent une
certaine indépendance. P
.ex. à droite le
Le tampon borné (bounded
buffer)
une structure de données fondamentale dans les
SE
b[0] b[1]
b[7] b[2]
b[6] b[3]
b[5] b[4]
ou
in: 1ère
pos. libre
out: 1ère
pos. pleine
Le tampon borné se trouve dans la mémoire partagée
entre consommateur et usager
b[0] b[1] b[2] b[3] b[4] b[5] b[6] b[7]
in: 1ère
pos. libre
Ch.4 37
out: 1ère
pos.
pleine
bleu: plein, blanc:
libre
À l’écriture d’une nouvelle info dans le tampon, le producteur
met à jour le pointeur in
Si le tampon est plein, le prod devra s’endormir, il sera plus
tard réveillé par le consommateur
Le rôle du consommateur est symétrique (v. Chap. 7)
Utilisation du concept du tampon borné
Ch.4 38

Les tampons bornés sont partout en informatique,
et partout dans les SE

Les files utilisées dans un SE sont des tampons
bornés:
 ‘pipes’ dans Unix
 files d’attente pour ressources: file prêt, files
pour imprimante, pour disque, etc.

Les protocoles de communications utilisent des
tampons bornés: TCP, et autres

Un client communique avec un serveur par des
tampons bornés, etc.
Concepts importants du Chapitre 4
Ch.4 39

Processus
Création, terminaison, hiérarchie

États et transitions d’état des processus

Process Control Block PCB

Commutation de processus
Sauvegarde, rechargement de PCB

Files d’attente de processus et PCB

Ordonnanceurs à court, moyen, long terme

Processus communicants
Producteurs et consommateurs
Par rapport au manuel…
Ch.4 40

Tout à étudier à l’exception des sections
4.5.1, 4.5.2, 4.5.3, 4.5.6 et 4.5.7

Les exemples contenant du code Java et C
seront expliqués aux sessions d’exercices
Threads et Lightweight
Processes
Chapitre 5
En français on utilise parfois ‘flots’
ou ‘fils’ pour ‘threads’.
Votre manuel préfère le mot anglais
http://w3.uqo.ca/lui
gi/
Concepts importants du Chap. 5
Ch.5 2

Threads et processus: différence

Threads de noyau et d’usager: relations

LWP: lightweight processes, threads
légers
Flots = threads = lightweight processes
Ch.5 3

Un thread est une subdivision d`un
processus
Un fil de contrôle dans un
processus

Les différents threads d ’un processus
partagent l’espace adressable et les
ressources d’un processus
 lorsqu’un thread modifie une
variable (non locale), tous les autres
threads voient la modification
un fichier ouvert par un thread est
accessible aux autres threads (du même
processus)
Exemple
Ch.5 4

Le processus MS-Word implique plusieurs
threads:
Interaction avec le clavier
Rangement de caractères sur la page
Sauvegarde régulière du travail fait
Contrôle orthographe
Etc.

Ces threads partagent tous le même
document
Processus à un thread et à plusieurs
threads
Ch.5 5
Threads et processus [Stallings]
Ch.5 6
Processu
s
Ch.5 7

Possède sa mémoire, ses fichiers, ses
ressources, etc.

Accès protégé à la mémoire, fichiers,
ressources d’autres processus
Thread
Ch.5 8

Possède un état d’exécution (prêt, bloqué…)

Possède sa pile et un espace privé pour
variables locales

A accès à l’espace adressable, fichiers et
ressources du processus auquel il
appartient
En commun avec les autres threads du
même proc
Pourquoi les threads
Ch.5 9

Reactivité: un processus peut être
subdivisé en plusieurs threads, p.ex. l’un
dédié à l’interaction avec les usagers,
l’autre dédié à traiter des données
L’un peut exécuter tant que l’autre est
bloqué

Utilisation de multiprocesseurs: les
threads peuvent exécuter en parallèle sur
des UCT différentes
La commutation entre threads est
moins
dispendieuse que la commutation
entre processus

Un processus possède mémoire, fichiers,
autres ressources

Changer d`un processus à un autre
implique sauvegarder et rétablir l’état de
tout ça

Changer d’un thread à un autre dans le
même proc est bien plus simple, implique
sauvegarder les registres de l ’UCT, la pile,
et peu d ’autres choses
Ch.5 10
La communication aussi est moins
dispendieuse entre threads que entre
processus
Ch.5 11

Étant donné que les threads partagent leur
mémoire,
la communication entre threads dans un
même processus est plus efficace
que la communication entre processus
La création est moins dispendieuse
Ch.5 12

La création et terminaison de nouveaux
threads dans un proc existant est aussi
moins dispendieuse que la création d’un
proc
Threads de noyau (kernel) et d’utilisateur
Ch.5 13

Où implémenter les threads:
Dans les bibliothèques
d’usager
 contrôlés par l’usager
Dans le noyau du SE:
 contrôlés par le noyau
Solutions mixtes
Threads d’utilisateur et de noyau
(kernel)
Ch.5 14

threads d’utilisateur: supportés par des
bibliothèques d’usager ou langage de prog
 efficace car les ops sur les threads ne demandent
pas des appels du système
 désavantage: le noyau n ’est pas capable de
distinguer entre état de processus et état des
threads dans le processus
 blocage d ’un thread implique blocage du processus

threads de noyau: supportés directement par le
noyau du SE (WIN NT, Solaris)
 le noyau est capable de gérer directement les états
des threads
 Il peut affecter différents threads à différentes UCTs
Solutions mixtes: threads utilisateur et noyau
Ch.5 15

Relation entre threads utilisateur et threads noyau
 plusieurs à un
 un à un
 plusieurs à plusieurs

Nous devons prendre en considération plusieurs
niveaux:
 Processus
 Thread usager
 Thread noyau
 Processeur (UCT)
Plusieurs threads utilisateur pour un thread
noyau:
l’usager contrôle les threads
Ch.5 16
usage
r
noya
u

Le SE ne connaît pas les threads utilisateur
 v. avantages et désavantages mentionnés avant
Un vers un: le SE contrôle les threads

Les ops sur les threads sont des appels du
système

Permet à un autre thread d’exécuter lorsqu’un
thread exécute un appel de système
bloquant

Win NT, XP, OS/2
usage
r
noya
u
Ch.5 17
Plusieurs à plusieurs: solution mixte
Ch.5 18
usager
noyau

Flexibilité pour l ’usager d ’utiliser la technique qu’il préfère

Si un thread utilisateur bloque, son kernel thread peut être affecté à
un autre

Si plus. UCT sont disponibles, plus. kernel threads peuvent
exécuter en même temps

Quelques versions d’Unix, dont Solaris
Ch.5 19
Threads dans Solaris 2 (une version de
Unix)
Plusieurs à
plusieurs, usager et
Tâche =
processus
Processus légers (lightweight, LWP)

Fonctionnent comme des UCT virtuelles, pouvant
exécuter des threads niveau usager

Sont entre les threads usager et les threads
noyau

Il y a un thread noyau pour chaque LWP, chaque
LWP est lié à son propre thread noyau

Chaque processus doit contenir au moins un
LWP

La bibliothèque des threads exécute les threads
utilisateur sur les LWP disponibles

Seulement les threads qui sont associés à un LWP
peuvent exécuter, les autres sont en attente
d ’exécuter (bloqués)
 similarité avec ordonnancement UCT
Ch.5 20
Threads à niveau usager: liés et libres
Ch.5 21

Un thread à niveau usager est lié s’il est
attaché à un LWP de façon permanente

Est non lié sinon
Utilisation des L
WP
Ch.5 22

Les LWP sont demandés quand un thread usager
a besoin de communiquer avec le noyau
 Appel système (E/S…)
 car dans ce cas un nouveau thread peut exécuter
tant que l’autre est bloqué en attente

Il y a besoin d ’un LWP pour chaque thread qui
devient bloqué pour un appel de système
 p.ex. s ’il y a 5 threads qui demandent de l ’E/S,
nous avons besoin de 5 LWP
 s`il y a seul. 4 LWP, une des demandes d ’E/S
doit attendre qu ’un LWP devienne libre ou soit
créé
Exécution des L
WP

Les threads de noyau qui implémentent les LWP exécutent
sur les UCT qui deviennent disponibles

Si un thread noyau se bloque, son LWP se bloque aussi,
 mais un processus (tâche) peut en obtenir un
autre, ou un nouveau LWP peut être créé

Si un LWP devient bloqué, l’UCT qui l’exécute peut être
affectée à un autre thread
Ch.5 23
Création et terminaison dynamique de L
WP
Ch.5 24

La biblio. de threads à niveau usager crée
automatiquement des nouveaux LWP au
besoin

Termine les LWP qui ne sont plus
demandés
Structures de données: Solaris

Une tâche=processus Solaris peut être associée à
plusieurs LWP

Un LWP contient un ensemble de registres, des
infos de mémoire et de comptabilisation

Les structures des données sont essentiellement
des PCBs enchaînés
Ch.5 25
Les Java threads implémentent ces
idées
Ch.5 26
Il y aura discussion sur les Java
threads dans le lab
Multithreads et monothreads
Ch.5 27

MS-DOS supporte un processus usager à
monothread

UNIX SVR4 supporte plusieurs processus à
monothread

Solaris, Widows NT, XP et OS2 supportent
plusieurs processus multithreads
Concepts importants du Chap. 5
Ch.5 28

threads et processus: différence

threads de noyau et d’usager: relations

LWP: lightweight processes, threads
légers

Implémentation en utilisant UCT
physiques
Quoi lire dans le
livre
Ch.5 29

En classe, nous avons vu seulement
5.1- 5.5

Mais pendant les sessions exercices vous
verrez la partie Java

Donc tout le chapitre…
1
Ordonnancement
Processus
Chapitre 6
http://w3.uqo.ca/lui
gi/
Aperçu du chapitre
Ch. 6 2

Concepts de base

Critères d’ordonnancement

Algorithmes d’ordonnancement

Ordonnancement de multiprocesseurs

Ordonnancement temps réel

Évaluation d’algorithmes
Diagramme de transition d`états d`un
processus
Ch. 6 3
Files d’attente de processus
pour ordonnancement
Ch. 6 4
file prêt
Nous ferons l’hypothèse que le premier processus dans une file
est celui qui utilise la ressource: ici, proc7 exécute
Concepts de base
Ch. 6 5

La multiprogrammation vise à obtenir une
 utilisation optimale des ressources, surtout l’UCT
 et aussi à un bon temps de réponse pour l’usager

L`ordonnanceur UCT est la partie du SE qui décide
quel processus dans la file ready/prêt obtient
l ’UCT quand elle devient libre

L ’UCT est la ressource la plus précieuse dans un
ordinateur, donc nous parlons d’elle
 Cependant, les principes que nous verrons
s ’appliquent aussi à l ’ordonnancement des
autres ressources (unités E/S, etc).
Les cycles d’un processus

Cycles (bursts) d’UCT et E/S: l’exécution d’un processus
consiste de séquences d’exécution sur UCT et d’attentes
E/S
Ch. 6 6
Ch. 6 7

Observation expérimentale:
 dans un système typique, nous observerons un grand
nombre de court cycles, et un petit nombre de long cycles

Les programmes tributaires de l ’UCT auront normalm. un
petit nombre de long cycles UCT

Les programmes tributaires de l’E/S auront normalm. un
grand nombre de court cycles UCT
Histogramme de durée des cycles UCT
Quand invoquer l’ordonnanceur
UCT

L ’ordonnanceur UCT doit prendre sa décision chaque fois que le
processus exécutant est interrompu, c’e-à.-d.
1. un processus se se présente en tant que nouveau ou se
termine
2. un processus exécutant devient bloqué en attente
3. un processus change d’exécutant/running à prêt/ready
4. un processus change de attente à prêt/ready
•
• en conclusion, tout événement dans un système cause
une interruption de l’UCT et l’intervention de
l’ordonnanceur,
qui devra prendre une décision concernant quel proc ou thread
aura l’UCT après


Préemption: on a préemption si on enlève l’UCT à un processus
qui l’avait et ne l’a pas laissée de propre initiative
 P.ex. préemption dans le cas 3, pas de préemption dans le
cas 2
Plusieurs pbs à résoudre dans le cas de préemption, v. manuel
Ch. 6 8
Dispatcheur
Ch. 6 9

Le processus qui donne le contrôle au
processus choisi par l’ordonnanceur. Il
doit se préoccuper de:
changer de contexte
changer à mode usager
réamorcer le processus choisi

Attente de dispatcheur (dispatcher
latency)
le temps nécessaire pour exécuter
les fonctions du dispatcheur
il est souvent négligé, il faut supposer qu’il
soit petit par rapport à la longueur d’un
cycle
Critères d’ordonnancement
Ch. 6 10

Il y aura normalement plusieurs processus
dans la file prêt

Quand l’UCT devient disponible, lequel
choisir?

Critères généraux:
 Bonne utilisation de l’UCT
 Réponse rapide à l’usager

Mais ces critères peuvent être jugés
différemment...
Critères spécifiques d’ordonnancement
Ch. 6 11

Utilisation UCT: pourcentage d ’utilisation

Débit = Throughput: nombre de processus
qui complètent dans l ’unité de temps

Temps de rotation = turnaround: le temps
pris par le proc de son arrivée à sa termin.

Temps d’attente: attente dans la file prêt
(somme de tout le temps passé en file prêt)

Temps de réponse (pour les systèmes
interactifs): le temps entre une demande et
la réponse
Critères d’ordonnancement: maximiser/minimiser
Ch. 6 12

Utilisation UCT: pourcentage d’utilisation
 ceci est à maximiser

Débit = Throughput: nombre de processus qui
complètent dans l ’unité de temps
 ceci est à maximiser

Temps de rotation (turnaround): temps
terminaison moins temps arrivée
 à minimiser

Temps d’attente: attente dans la file
prêt
 à minimiser

Temps de réponse (pour les systèmes interactifs):
le temps entre une demande et la réponse

Examinons maintenant plusieurs méthodes
d’ordonnancement et voyons comment elles
se comportent par rapport à ces critères
Ch. 6 13
nous étudierons des cas spécifiques
l’étude du cas général demanderait recours à techniques probabilistes ou
de simulation
Premier arrive, premier servi (First come, first serve,
FCFS)
Ch. 6 14
Exemple
:
Processu
s P1
P2
P
3
Temps de
cycle 24
3
3
Si les processus arrivent au temps 0 dans l’ordre: P1 ,
P2 , P3Le diagramme Gantt est:
P1 P2 P3
30
0 24
27
Temps d’attente pour P1= 0; P2= 24;
P3= 27Temps attente moyen: (0
+ 24 + 27)/3 = 17
Premier arrive, premier servi
Ch. 6 15

Utilisation UCT = 100%

Débit = 3/30 = 0,1
 3 processus complétés en 30 unités de temps

Temps de rotation moyen: (24+27+30)/3 = 27
P1 P2 P3
24 27 30
0
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

Donc P1 attend 0 comme avant

Mais P2 attend 24-2, etc.
P1 P2 P3
24 27 30
0
arrivée
P2
Ch. 6 16
FCFS Scheduling (Cont.)
Ch. 6 17
Si les mêmes processus arrivent à 0 mais dans l’ordre
P2 , P3 , P1 .
Le diagramme de Gantt est:

Temps moyen d’attente: (6 + 0 + 3)/3 = 3

Temps de rotation moyen: (3+6+30)/3 = 13

Beaucoup mieux!

Donc pour cette technique, les temps peuvent varier
grandement par rapport à l’ordre d’arrivée de différent
processus

Exercice: calculer aussi le débit, etc.
P2 P3 P1
30
0 3 6
 Temps d’attente pour P1 = 6 P2 = 0 P3 = 3
Effet d’accumulation (convoy effect) dans FCFS
Ch. 6 18

Supposons un processus tributaire de l’UCT et plusieurs
tributaires de l`E/S (situation assez normale)

Les processus tributaires de l’E/S attendent pour l ’UCT: E/S sous-
utilisée (*)

Le processus tributaire de l’UCT fait une E/S: les autres proc
exécutent rapidement leur cycle UCT et retournent sur l’attente E/S:
UCT sous-utilisée

Processus tributaire de l’UCT fini son E/S, puis les autres procs
aussi : retour à la situation (*)

Donc dans ce sens FCFS favorise les procs tributaires de l’UCT

Et peut conduire à une très mauvaise utilisation des ressources
 Tant d’UCT que de périphériques

Une possibilité: interrompre de temps en temps les proc tributaires
de l’UCT pour permettre aux autres procs d’exécuter (préemption)
Plus Court d’abord = Shortest Job First (SJF)

Le processus qui demande moins
d’UCT part le premier

Optimal en principe du point de vue
du temps d’attente moyen
(v. le dernier exemple)

Mais comment savons-nous quel
processus demande moins d’UCT!
Ch. 6 19
SJF avec préemption ou non
Ch. 6 20

Avec préemption: si un processus qui dure moins
que le restant du processus courant se présente
plus tard, l’UCT est enlevée au proc courant et
donnée à ce nouveau processus
 SRTF: shortest remaining-time first

Sans préemption: on permet au processus
courant de terminer son cycle
 Observation: SRTF est logique pour l’UCT car le processus
exécutant sera interrompu par l’arrivée du nouveau
processus
 Il est retourné à l’état prêt
 Il est impossible pour les unités qui ne permettent
pas de préemption
 p.ex. une unité disque, imprimante…
Ch. 6 21
Processus Arrivée Cycle
7
4
1
4
P1
P2
P3
P4
0
2
4
5

SJF (sans préemption)

Temps d’attente moyen = (0+(8-2)+(7-4)+(12-5))/4
(0 + 6 + 3 + 7)/4 = 4
–

Temps de rotation moyen = 7+(12-2)+(8-4)+(16-5) = 8
Example de SJF sans
préemption
3 16
0
P1 P3 P2 P4
7
8
12
P2 arr. P3 arr. P4 arr
Ch. 6 22
Exemple de SJF avec préemption
Processus Arrivée Cycle
P1 0 7
P2 2 4
P3 4 1
P4 5 4

SJF (préemptive)

Temps moyen d`attente = (9 + 1 + 0 +2)/4 = 3
 P1 attend de 2 à 11, P2 de 4 à 5, P4 de 5 à 7

Temps de rotation moyen = 16+ (7-2) + (5-4) + (11-5) = 7
11
0 4 5
7
P1 P2 P3 P2 P4 P1
16
2
P2 arr. P3 arr. P4 arr
Comment déterminer la longueur des cycles à
l’avance?
Ch. 6 23

Quelques méthodes proposent de
déterminer le comportement futur d
’un processus sur la base de son passé
p.ex. moyenne exponentielle
Estimation de la durée du prochain cycle
Ch. 6 24
 Ti : la durée du ième cycle de l’UCT pour ce
processus
 Si : la valeur estimée du le ième cycle de l’UCT
pour ce processus. Un choix simple est:
S n+1 = (1/n) _{i=1 to n} Ti (une simple
moyenne)

Nous pouvons éviter de recalculer la somme en
récrivant:
Sn+1 = (1/n) Tn + ((n-1)/n) Sn

Ceci donne un poids identique à chaque cycle
Estimation de la durée du prochain
cycle
Ch. 6 25

Mais les cycles récents peuvent être plus
représentatifs des comportements à venir

La moyenne exponentielle permet de donner
différents poids aux cycles plus ou moins
récents:
Sn+1 =  Tn+ (1-) Sn ; 0 <= 
<= 1

Par expansion, nous voyons que le poids de
chaque cycle décroît exponentiellement
 Sn+1 = Tn + (1-)Tn-1 + ... (1-)i Tn-i +
... + (1-)n S1

la valeur estimée S1 du 1er cycle peut être
fixée à 0 pour donner priorité max. aux
nouveaux processus
Importance de différents valeurs de coefficients
[Stallings]
Peu d’import. aux cycles
récents
Beaucoup d’import aux cycles
récs
Ch. 6 26
Stallings
Importance de différents valeurs de coefficients
[Stallings]
 S1 = 0 (priorité aux nouveaux processus)

Un coefficient plus élevé réagit plus rapidement aux
changements de comportement
Ch. 6 27
Stallings
Un deuxième exemple [Stallings]
Stallings
Ch. 6 28
Comment choisir le coefficient 
Ch. 6 29

Un petit coefficient est avantageux quand un
processus peut avoir des anomalies de
comportement, après lesquelles il reprend son
comportement précédent (il faut ignorer son
comportement récent)
 cas limite:  = 0 on reste sur l ’estimée initiale

Un coefficient élevé est avantageux quand un
processus est susceptible de changer rapidement
de type d’activité et il reste sur ça
 cas limite:    S n+1 = Tn
 Le dernier cycle est le seul qui compte
Le plus court d’abord SJF:
critique
Ch. 6 30

Difficulté d’estimer la longueur à l’avance

Plus pratique pour l’ordonnancement travaux que
pour l’ordonnancement processus
 on peut plus facilement prévoir la durée d’un travail
entier que la durée d’un cycle

Il y a assignation implicite de priorités: préférences
aux travaux plus courts
Difficultés majeures avec les méthodes
discutées
Ch. 6 31

Un processus long peut monopoliser
l’UCT s’il est le 1er à entrer dans le
système et il ne fait pas d’E/S

Dans le cas de SJF, les processus longs
souffriront de famine lorsqu’il y a un
apport constant de processus courts
Tourniquet = Round-Robin
(RR)
P[0] P[1]
P[7] P[2]
P[6] P[3]
P[5] P[4]
Le plus utilisé en pratique

Chaque processus est alloué une tranche de
temps (p.ex. 10-100 millisecs.) pour exécuter
 Tranche aussi appelée quantum

S’il exécute pour tranche entière sans autres
interruptions, il est interrompu par la minuterie
et l ’UCT est donnée à un autre processus

Le processus interrompu redevient prêt (à la fin de
la file)

Méthode préemptive
La file prêt est un
cercle (dont RR)
Ch. 6 32
Performance de tourniquet
Ch. 6 33

S ’il y a n processus dans la file prêt et la
tranche est t, alors chaque processus
reçoit 1/n du temps UCT dans unités de
durée max. t

Si t grand  FIFO

Si t petit... nous verrons
Ch. 6 34
Exemple: Tourniquet tranche =
20
Processus Cycle
P1 53
P2 17
P3 68
P4 24
0 20 37 57 77 97 117 121 134
154 162

Observez
 temps de rotation et temps d’attente moyens beaucoup
plus élevés que SJF
 mais aucun processus n’est
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
Une petite tranche augmente les
commutations de contexte (temps de SE)
Ch. 6 35
Exemple pour voir l’importance d’un bon
choix de tranche (à développer comme exercice)
Ch. 6 36

Trois cycles:
A, B, C, toutes de 10

Essayer avec:
t=1
t=10

Dans ce deuxième cas, tourniquet
fonctionne comme FIFO et le temps
de rotation moyen est meilleur
Ch. 6 37
Le temps de rotation (turnaround) varie avec
la tranche
Exemple qui montre que le temps de rotation moyen n
’améliore pas nécessairement en augmentant la tranche (sans
considérer les temps de commutation contexte)
= FIFO
Ch. 6 38
Choix de la tranche pour le tourniquet
[Stallings]

doit être beaucoup plus grande que le temps requis pour
exécuter le changement de contexte

doit être un peu plus grand que le cycle typique (pour donner
le temps à la plupart des proc de terminer leur cycle, mais pas trop pour éviter
de pénaliser les processus courts)
Stallings
v. ex. prec. où les point optimaux sont 6 et 7, et il y a deux cycles
Priorités
Ch. 6 39

Affectation d’une priorité à chaque
processus (p.ex. un nombre entier)
souvent les petits chiffres dénotent des
hautes priorités
 0 la plus haute

L’UCT est donnée au processus prêt avec
la plus haute priorité
avec ou sans préemption
il y a une file prêt pour chaque priorité
Problème possible avec les priorités
Ch. 6 40

Famine: les processus moins prioritaires
n’arrivent jamais à exécuter

Solution: vieillissement:
modifier la priorité d ’un processus en
fonction de son âge et de son historique d
’exécution
le processus change de file d`attente

Plus en général, la modification dynamique
des priorités est une politique souvent
utilisée (v. files à rétroaction ou retour)
Files à plusieurs niveaux (multiples)
Ch. 6 41

La file prêt est séparée en plusieurs files, p.ex.
 travaux `d’arrière-plan` (background - batch)
 travaux `de premier plan` (foreground - interactive)

Chaque file a son propre algorithme
d ’ordonnancement, p.ex.
 FCFS pour arrière-plan
 tourniquet pour premier plan

Comment ordonnancer entre files?
 Priorité fixe à chaque file  famine
possible, ou
 Chaque file reçoit un certain pourcentage de temps
UCT, p.ex.
 80% pour arrière-plan
 20% pour premier plan
Ordonnancement avec files multiples
Ch. 6 42
Files multiples et à retour
Ch. 6 43

Un processus peut passer d ’une file à
l ’autre, p.ex. quand il a passé trop de
temps dans une file

À déterminer:
 nombre de files
 algorithmes d ’ordonnancement pour chaque
file
 algorithmes pour décider quand un proc doit
passer d ’une file à l`autre
 algorithme pour déterminer, pour un proc qui
devient prêt, sur quelle file il doit être mis
Files multiples et à retour
PRIO =
0
la + élevée
Ch. 6 44
PRIO =
1
PRIO =
2
Exemple de files multiples à retour

Trois files:
 Q0: tourniquet, tranche = 8 msecs
 Q1: tourniquet, tranche = 16 msecs
 Q2: FCFS

Ordonnancement:
 Un nouveau processus entre dans Q0, il reçoit 8
msecs d ’UCT
 S ’il ne finit pas dans les 8 msecs, il est mis dans Q1,
il reçoit 16 msecs additionnels
 S ’il ne finit pas encore, il est interrompu et mis
dans Q2
 Si plus tard il commence à avoir des cycles plus
courts, il pourrait retourner à Q0 ou Q1
Ch. 6 45
En pratique...
Ch. 6 46

Les méthodes que nous avons vu sont toutes
utilisées en pratique (sauf plus court servi pur qui
est impossible)

Les SE sophistiqués fournissent au gérant du
système une librairie de méthodes, qu’il peut
choisir et combiner au besoin après avoir observé
le comportement du système

Pour chaque méthode, plusieurs params sont
disponibles: p.ex. durée des tranches,
coefficients, etc.

Ces méthodes évidemment sont importantes
seulement pour les ordis qui ont des fortes
charges de travail
Aussi…
Ch. 6 47

Notre étude des méthodes d’ordonnancement est théorique,
ne considère pas en détail tous les problèmes qui se
présentent dans l’ordonnancement UCT

P.ex. les ordonnanceurs UCT ne peuvent pas donner l’UCT à
un processus pour tout le temps dont il a besoin
 Car en pratique, l’UCT sera souvent interrompue par
quelque événement externe avant la fin de son cycle

Cependant les mêmes principes d’ordonnancement
s’appliquent à unités qui ne peuvent pas être interrompues,
comme une imprimante, une unité disque, etc.

Dans le cas de ces unités, on pourrait avoir des
infos complètes concernant le temps de cycle prévu,
etc.

Aussi, cette étude ne considère pas du tout les temps
d’exécution de l’ordonnanceur, du dispatcheur, etc.
Ordonnancement avec plusieurs
UCT
s
identiques: homogénéité

Méthodes symétriques:
chaque UCT peut exécuter
l’ordonnancement et la
répartition
 Une seule liste prêt
pour toutes les UCTs
(division travail =
load sharing)

Méthodes asymétriques:
certaines fonctions sont
réservées à une seule UCT
 Files d’attentes
séparées pour chaque
UCT
UCT
UCT
UCT
UCT
UCT
UCT
UCT
UCT
Ch. 6 48
Systèmes temps réel

systèmes temps réel rigides (hard):
 les échéances sont critiques (p.ex. contrôle d’une
chaîne d`assemblage, animation graphique)
 il est essentiel de connaître la durée des
fonctions critiques
 il doit être possible de garantir que ces fonctions
sont effectivement exécutées dans ce temps
(réservation de ressources)
 ceci demande une structure de système très
particulière

systèmes temps réel souples (soft):
 les échéances sont importantes, mais ne sont
pas critiques (p.ex. systèmes téléphoniques)
 les processus critiques reçoivent la
priorité
Ch. 6 49
Systèmes temps réel:
Problèmes d’attente dans plus. systèmes (ex.
UNIX)
Ch. 6 50

Dans UNIX ‘classique’ il n ’est pas permis
d ’effectuer changement de contexte pendant un
appel du système - et ces appels peuvent être longs

Pour le temps réel il est nécessaire de permettre la
préemption des appels de systèmes ou du noyau
en général

Donc ce système n’est pas considéré approprié
pour le temps réel

Mais des variétés appropriées de UNIX ont été
conçues (p.ex. Solaris)
Inversion de priorité et héritage de priorités
Ch. 6 51

Quand un processus de haute priorité doit
attendre pour des processus de moindre
priorité (p.ex. a besoin de données produites par
ces derniers)

Pour permettre à ces derniers de finir
rapidement, on peut lui faire hériter la
priorité du processus plus prioritaire
Ordonnancement de threads
Ch. 6 52

Local: la librairie des threads pour une
application donnée décide quel thread
usager obtient un LWP disponible

Global: le noyau décide quel thread de
noyau exécute sur l’UCT
Ordonnancement et priorités en Solaris 2
Ch. 6 53
Solaris 2: lire dans le manuel pour voir l’application
pratique de plusieurs concepts discutés
Ch. 6 54

Priorités et préemption

Files multiniveau à retour avec
changement de priorité

Tranches plus grandes pour les processus
moins prioritaires

Les procs interactifs sont plus prioritaires
que les les procs tributaires de l’UCT

La plus haute priorité aux procs temps
réel

Tourniquet pour les fils de priorités
égales
Méthode d’évaluation et comparaison
d’algorithmes (section plutôt à lire)
Ch. 6 55

Modélisation déterministe

Modèles de files d’attente (queuing theory)

Simulation

Implantation
Modélisation déterministe
Ch. 6 56

Essentiellement, ce que nous avons déjà
fait en étudiant le comportement de
plusieurs algorithmes sur plusieurs
exemples
Utilisation de la théorie des files (queuing
th.)
Ch. 6 57

Méthode analytique basée sur la théorie
des probabilités

Modèle simplifié: notamment, les temps du
SE sont ignorés

Cependant, elle rend possibles des
estimées
Théorie des files: la formule de
Little
Ch. 6 58

Un résultat important:
n =  W
 n: longueur
moyenne de la file
d ’attente
  : débit d
’arrivée de travaux
dans file
 W: temps d
’attente moyen
dans la file (temps
de service)

P. ex.
 si les travaux
arrivent 3 par sec.
 W et il restent
dans la file 2 secs
Simulation
Ch. 6 59

Construire un modèle (simplifié...) de la
séquence d’événements dans le SE

Attribuer une durée de temps à chaque
événement

Supposer une certaine séquence
d’événements extérieurs (p.ex. arrivée de
travaux, etc.)

Exécuter le modèle pour cette séquence
afin d’obtenir des stats
Implémentation

Implémenter l’algorithme

Exécuter dans le système réel ou des
mélanges de travaux typiques (benchmark)

Obtenir des statistiques,
en tirer des conclusions...
Ch. 6 60
Tableau de
comparaison
Ch. 6 61
Le tableau suivant fait une comparaison
globale des différentes techniques
étudiées
62
Critère
sélection
Préempt Motivation Temps de
rotat. et att.
Temps de
système
Effect sur
processus
Famine
FCFS Max [w] non Simplicité Variable Minim. Favor. proc.
trib. UCT
Non
Tourniq. Tour fixe oui
Equité
Variable selon
tranche,
Normalement
élevé
Élevé
pour
tranche
courte
Équitable Non
SJF Min[s] non
Optimisatio
n des
temps
Optimal, mais
souffre si des
procs longs
arrivent au début
Peut être
élevé (pour
estimer les
longs. des
trames)
Bon pour
proc.
courts,
pénalise
proc. longs
Possible
SJF
préemp.
Min[s-e] oui
Évite le problème
de procs longs au
début
Meilleur, même si
des procs longs
arrivent au début
Peut être
élevé
Pénalise
plus encore
proc. longs
Possible
Files
multiniv.
v. détails oui
Varie la longueur
des tranches en
fonction des
besoins
Variable
Peut être
élévé
Variable
Possible
w: temps total dans système jusqu’à
présent;
Chs. :6temps
e: temps en exec jusqu’à
présent
Famine est ‘renvoi
Ch. 6 63
Points importants dans ce chapitre

Files d ’attente pour UCT

Critères d ’ordonnancement

Algorithmes d ’ordonnancement
FCFS: simple, non optimal
SJF: optimal, implantation difficile
 moyennage exponentiel
Priorités
Tourniquet: sélection du quantum

Évaluation des méthodes, théorie des files,
formule de Little
Chap. 7 1
Synchronisation de
Processus
(ou threads, ou fils ou tâches)
Chapitre 7
http://w3.uqo.ca/lui
gi/
Problèmes avec concurrence = parallélisme
Chap. 7 2

Les threads concurrents doivent parfois partager
données (fichiers ou mémoire commune) et
ressources
 On parle donc de tâches coopératives

Si l’accès n’est pas contrôlé, le résultat de
l’exécution du programme pourra dépendre de
l’ordre d’entrelacement de l’exécution des
instructions (non-déterminisme).

Un programme pourra donner des résultats
différents et parfois indésirables de fois en fois
Un exemple
Chap. 7 3

Deux threads exécutent
cette même procédure et
partagent la même base de
données

Ils peuvent être
interrompus n’importe où

Le résultat de l ’exécution
concurrente de P1 et P2
dépend de l`ordre de leur
entrelacement
M. X demande une
réservation
d’avion
Base de données
dit que fauteuil
A est disponible
Fauteuil A est
assigné à X et
marqué occupé
Vue globale d’une exécution possible
M. Guy demande une
réservation d’avion
Base de données dit
que fauteuil 30A est
disponible
Fauteuil 30A est
assigné à Guy et
marqué occupé
M. Leblanc demande une
réservation d’avion
Base de données dit
que fauteuil 30A est
disponible
Fauteuil 30A est
assigné à Leblanc et
marqué occupé
Interrupti
on ou
retard
P1 P2
Chap. 7 4
5
Deux opérations en parallèle sur une var a
partagée (b est privé à chaque processus)
P1
b=
a b=a
b++
a=b
P2
b++
a=b
Supposons que
a soit 0 au
début (il pourrait
être un compteur
d’accès à une page
web)
interrupti
on
3ème exemple
cin >> a;
Thread P1 Thread P2
static char a; static char a;
void echo()
{
void echo()
{
cin >> a;
cout << a;
}
cout << a;
}
Si la var a est partagée, le premier a est
effacé Si elle est privée, l’ordre d’affichage
est renversé
Chap. 7 6
Autres exemples
Chap. 7 7

Des threads qui travaillent en simultanéité sur une
matrice, par ex. un pour la mettre à jour, l`autre
pour en extraire des statistiques

Problème qui affecte le programme du tampon
borné, v. manuel

Quand plusieurs threads exécutent en parallèle, nous ne
pouvons pas faire d’hypothèses sur la vitesse d’exécution
des threads, ni leur entrelacement
 Peuvent être différents à chaque exécution du
programme
Section Critique
Chap. 7 8

Partie d’un programme dont l’exécution de
doit pas entrelacer avec autres
programmes

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
 La section critique doit être verrouillée
Le problème de la section critique

Lorsqu’un thread manipule une donnée (ou ressource)
partagée, nous disons qu’il se trouve dans une section
critique (SC) (associée à cette donnée)

Le problème de la section critique est de trouver un
algorithme d`exclusion mutuelle de threads dans l`exécution
de leur SCs afin que le résultat de leurs actions ne
dépendent pas de l’ordre d’entrelacement de leur
exécution (avec un ou plusieurs processeurs)

L’exécution des sections critiques doit être mutuellement
exclusive: à tout instant, un seul thread peut exécuter
une SC pour une var donnée (même lorsqu’il y a plusieurs
processeurs)

Ceci peut être obtenu en plaçant des instructions spéciales
dans les sections d`entrée et sortie

Pour simplifier, dorénavant nous faisons l’hypothèse qu’il
n’y a q’une seule SC dans un programme.
Chap. 7 9
Structure du programme
Chap. 7 10

Chaque thread doit donc demander une permission
avant d’entrer dans une section critique (SC)

La section de code qui effectue cette requête est la
section d’entrée

La section critique est normalement suivie d’une section de
sortie

Le code qui reste est la section restante (SR): non-critique
repeat
section d’entrée
section critique
section de sortie
section restante
forever
Application
M. X demande une
réservation d’avion
Section d’entrée
Base de données dit que
fauteuil A est disponible
Fauteuil A est assigné à X et
marqué occupé
Section de sortie
Sectio
n
critiqu
e
Chap. 7 11
Critères nécessaires pour solutions valides
Chap. 7 12

Exclusion Mutuelle
À tout instant, au plus un thread peut être
dans une section critique (SC) pour une
variable donnée

Non interférence:
Si un thread s’arrête dans sa section
restante, ceci ne devrait pas affecter les
autres threads

Mais on fait l ’hypothèse qu’un thread qui
entre dans une section critique, en sortira.
Critères nécessaires pour solutions valides
Chap. 7 13

Progrès:
absence d`interblocage (Chap 8)
si un thread demande d`entrer dans une
section critique à un moment où aucun
autre thread en fait requête, il devrait être
en mesure d’y entrer
 Donc si un thread veut entrer dans la SC à
répétition, et les autres ne sont pas
intéressés, il doit pouvoir le faire
Aussi nécessaire
Chap. 7 14

Absence de famine: aucun thread
éternellement empêché d’atteindre sa SC

Difficile à obtenir, nous verrons…
Types de solutions
Chap. 7 15

Solutions par logiciel
 des algorithmes dont la validité ne s’appuie pas
sur l’existence d`instruction spéciales

Solutions fournies par le matériel
 s’appuient sur l’existence de certaines instructions
(du processeur) spéciales

Solutions fournies pas le SE
 procure certains appels du système au
programmeur

Toutes les solutions se basent sur l’atomicité de l’accès à la
mémoire centrale: une adresse de mémoire ne peut être
affectée que par une instruction à la fois, donc par un
thread à la fois.

Plus en général, toutes les solutions se basent sur
l ’existence d’instructions atomiques, qui fonctionnent
comme SCs de base
Atomicité =
Solutions par logiciel
(pas pratiques, mais intéressantes pour comprendre le
pb)
Chap. 7 16

Nous considérons d’abord 2 threads
Algorithmes 1 et 2 ne sont pas valides
 Montrent la difficulté du problème
Algorithme 3 est valide (algorithme de
Peterson)

Notation
Débutons avec 2 threads: T0 et T1
Lorsque nous discutons de la tâche Ti,
Tj dénotera toujours l’autre tâche (i !=
j)
Algorithme 1: threads se donnent mutuellement le
tour

La variable partagée turn est
initialisée à 0 ou 1

La SC de Ti est exécutée ssi
turn = i

Ti est occupé à attendre si Tj
est dans SC.

Fonctionne pour l’exclusion
mutuelle!

Mais critère du progrès n’est
pas satisfait car
l’exécution des SCs doit
strictement alterner
Thread Ti:
repeat
while(turn!=i);
SC
turn = j;
SR
forever
Rien
fair
e
T0T1T0T1…même si l’un des deux n’est pas intéressé
du tout
Chap. 7 17
Thread T0:
repeat
while(turn!=0);
SC
turn = 1;
SR
forever
Thread T1:
repeat
while(turn!=1);
SC
turn = 0;
SR
forever
Algorithme 1 vue globale
Ex 2: Généralisation à n threads: chaque fois, avant qu’un thread puisse
rentrer dans sa section critique, il lui faut attendre que tous les autres
aient eu cette chance!
initialisation de turn à 0 ou 1
Rien
fair
e
Chap. 7 18
Exemple: supposez que turn=0 au début
Thread T0:
while(turn!=0);
// premier à entrer
SC
turn = 1;
SR
while(turn!=0);
// entre quand T1
finit
SC
turn = 1;
SR
etc...
Thread T1:
while(turn!=1);
// entre
quand T0
finit
SC
turn = 0;
SR
while(turn!=1);
// entre
quand T0
finit
SC
turn = 0;
SR
Chap. 7 19
Algorithme 2 ou l’excès de
courtoisie...

Une variable Booléenne par
Thread: flag[0] et flag[1]

Ti signale qu’il désire exécuter
sa SC par: flag[i] =vrai

Mais il n’entre pas si l’autre
est aussi intéressé!

Exclusion mutuelle ok

Progrès pas satisfait:

Considérez la séquence:
T0: flag[0] = vrai
T1: flag[1] = vrai
 Chaque thread attendra
indéfiniment pour
exécuter sa SC: on a un
interblocage
Thread Ti:
repeat
flag[i] = vrai;
while(flag[j]);
SC
flag[i] = faux;
SR
forever rien
faire
Chap. 7 20
Thread T0:
repeat
flag[0] = vrai;
while(flag[1]);
SC
flag[0] = faux;
SR
forever
Thread T1:
repeat
flag[1] = vrai;
while(flag[0]);
SC
flag[1] = faux;
SR
forever
Algorithme 2 vue globale
T0: flag[0] =
vrai T1: flag[1]
= vrai
interblocage!
Après vous,
monsieur
Après vous,
monsieur
Chap. 7 21
Algorithme 3 (dit de Peterson):
bon!
Chap. 7 22
combine les deux idées: flag[i]=intention d’entrer; turn=à qui le
tour

Initialisation:
 flag[0] = flag[1] =
faux
 turn = i ou j

Désire d’exécuter SC est
indiqué par flag[i] = vrai

flag[i] = faux à la section de
sortie
Thread Ti:
repeat
flag[i] = vrai;
// je veux entrer
turn = j;
// je donne une chance à l’autre
do while
(flag[j] && turn==j);
SC
flag[i] = faux;
SR
forever
Entrer ou attendre?
Chap. 7 23

Thread Ti attend si:
 Tj veut entrer est c’est la chance à Tj
 flag[j]==vrai et turn==j

Un thread Ti entre si:
 Tj ne veut pas entrer ou c’est la chance à Ti
 flag[j]==faux ou turn==i

Pour entrer, un thread dépend de l’autre qu’il lui
donne la chance!
Thread T0:
repeat
flag[0] = vrai;
// T0 veut entrer
turn = 1;
// T0 donne une chance à T1
while
(flag[1]&&turn=1);
SC
flag[0] = faux;
// T0 ne veut plus
entrer
SR
forever
Thread T1:
repeat
flag[1] = vrai;
// T1 veut entrer
turn = 0;
// T1 donne une chance à 0
while
(flag[0]&&turn=0);
SC
flag[1] = faux;
// T1 ne veut plus
entrer
SR
forever
Algorithme de Peterson vue
globale
Chap. 7 24
Scénario pour le changement de contrôle
Thread T0:
…
SC
flag[0] = faux;
// T0 ne veut plus entrer
SR
…
Thread T1:
…
flag[1]
= vrai;
// T1
veut
entrer
turn =
0;
// T1
donne
une
chance à
T0
while
(flag[0]&&turn=0) ;
//test faux, entre
(F&&V)
T1 prend la relève, donne une chance à T0 mais
T0 a dit qu’il ne veut pas entrer.
T1 entre donc dans la SC
Chap. 7 25
Autre scénario de changem. de
contrôle
Thread T0:
SC
flag[0] = faux;
// T0 ne veut plus entrer
SR
flag[0] = vrai;
// T0 veut entrer
turn = 1;
// T0 donne une chance à T1
while
(flag[1]==vrai&&turn=1) ;
// test vrai, n’entre pas
(V&&V)
Thread T1:
flag[1] = vrai;
// T1 veut entrer
turn = 0;
// T1 donne une chance à T0
// mais T0 annule cette action
while
(flag[0]&&turn=0) ;
//test faux, entre
(V&&F)
T0 veut rentrer mais est obligé de donner une chance à T1,
qui entre
Chap. 7 26
Chap. 7 27
Mais avec un petit décalage, c’est encore
T0!
Thread T0:
SC
flag[0] = faux;
// 0 ne veut plus entrer
RS
flag[0] = vrai;
// 0 veut entrer
turn = 1;
// 0 donne une chance à 1
// mais T1 annule cette action
while
(flag[1] && turn=1) ;
// test faux, entre (V&&F)
Thread T1:
flag[1] = vrai;
// 1 veut entrer
turn = 0;
// 1 donne une chance à 0
while
(flag[0]&&turn=0);
// test vrai,
n’entre pas
Si T0 et T1 tentent simultanément d’entrer dans SC, seule une valeur pour
turn survivra:
non-déterminisme (on ne sait pas qui gagnera), mais l’exclusion
Donc cet algo. n’oblige pas une tâche
d’attendre
pour d’autres qui pourraient ne pas avoir besoin de la SC
Supposons que T0 soit le seul à avoir besoin de la SC, ou que
T1 soit
lent à agir: T0 peut rentrer de suite
(flag[1]==faux
est sorti)
la dernière fois que
T1
flag[0] = vrai // prend l’initiative
turn = 1 // donne une chance à
l’autre while flag[1] && turn=1 //test faux, entre
SC
flag[0] = faux // donne une chance à
l’autre
Cette propriété est désirable, mais peut causer famine pour
Chap. 7 28
Algorithme 3: preuve de
validité
Chap. 7 29
(pas matière d’examen, seulement pour les
intéressés…)

Exclusion mutuelle est assurée car:
T0 et T1 sont tous deux dans SC seulement si
turn est simultanément égal à 0 et 1
(impossible)

Démontrons que progrès et attente limitée
sont satisfaits:
Ti ne peut pas entrer dans SC seulement si
en attente dans la boucle while() avec
condition: flag[ j] == vrai and turn = j.
Si Tj ne veut pas entrer dans SC alors flag[ j]
= faux et Ti peut alors entrer dans SC
Algorithme 3: preuve de validité (cont.)
Chap. 7 30
Si Tj a effectué flag[ j]=vrai et se trouve dans
le while(), alors turn==i ou turn==j
Si
 turn==i, alors Ti entre dans SC.
 turn==j alors Tj entre dans SC mais il
fera
flag[ j] =false à la sortie: permettant à Ti
d’entrer CS
mais si Tj a le temps de faire
flag[ j]=true, il devra aussi faire turn=i
Puisque Ti ne peut modifier turn lorsque
dans le while(), Ti entrera SC après au plus
une entrée dans SC par Tj (attente limitée)
A propos de l’échec des threads
Chap. 7 31

Si une solution satisfait les 3 critères (EM, progrès
et attente limitée), elle procure une robustesse
face à l’échec d’un thread dans sa section
restante (SR)
 un thread qui échoue dans sa SR est comme
un thread qui ne demande jamais d’entrer...

Par contre, aucune solution valide ne procure une
robustesse face à l'échec d’un thread dans sa
section critique (SC)
 un thread Ti qui échoue dans sa SC n’envoie
pas de signal aux autres threads: pour eux Ti
est encore dans sa SC...
Extension à >2 threads
Chap. 7 32

L ’algorithme de Peterson peut être
généralisé au cas de >2 threads

Cependant, dans ce cas il y a des
algorithmes plus élégants, comme
l’algorithme du boulanger, basée sur l’idée
de ‘prendre un numéro au comptoir’...
Pas le temps d’en parler…
Une leçon à retenir…
Chap. 7 33

À fin que des threads avec des variables
partagées puissent réussir, il est
nécessaire que tous les threads impliqués
utilisent le même algorithme de
coordination
Un protocole commun
Critique des solutions par logiciel
Chap. 7 34

Difficiles à programmer! Et à comprendre!
 Les solutions que nous verrons dorénavant sont
toutes basées sur l’existence d’instructions
spécialisées, qui facilitent le travail.

Les threads qui requièrent l’entrée dans leur SC
sont occupés à attendre (busy waiting);
consommant ainsi du temps de processeur
 Pour de longues sections critiques, il serait
préférable de bloquer les threads qui doivent
attendre...
Solutions matérielles: désactivation des
interruptions
Chap. 7 35

Sur un uniprocesseur:
exclusion mutuelle est
préservée mais l’efficacité
se détériore: lorsque dans
SC il est impossible
d’entrelacer l’exécution
avec d’autres threads
dans une SR

Perte d’interruptions

Sur un multiprocesseur:
exclusion mutuelle n’est
pas préservée

Pas bon en général
Process Pi:
repeat
désactiver interrupt
section critique
rétablir interrupt
section restante
forever
Solutions matérielles: instructions machine
spécialisées
Chap. 7 36

Normal: pendant qu’un thread ou processus fait
accès à une adresse de mémoire, aucun autre ne
peut faire accès à la même adresse en même
temps

Extension: instructions machine exécutant
plusieurs actions (ex: lecture et écriture) sur la
même case de mémoire de manière atomique
(indivisible)

Une instruction atomique ne peut être exécutée
que par un thread à la fois (même en présence de
plusieurs processeurs)
L’instruction test-and-
set

Une version C de
test- and-set:

Un algorithme utilisant
testset pour Exclusion
Mutuelle:

Variable partagée b est
initialisée à 0

Le 1er Pi qui met b à 1
entre dans SC
bool testset(int& i)
{
if (i==0) {
i=1;
return
true;
} else
{ return
false;
}
}
Tâche Pi:
while testset(b)==false ;
SC //entre quand vrai
b=0;
SR
Instruction atomique!
Chap. 7 37
L’instruction test-and-set (cont.)
Chap. 7 38

Exclusion mutuelle est assurée: si Ti entre
dans SC, l’autre Tj est occupé à attendre

Problème: utilise encore occupé à
attendre

Peut procurer facilement l’exclusion mutuelle
mais nécessite algorithmes plus complexes
pour satisfaire les autres exigences du
problème de la section critique

Lorsque Ti sort de SC, la sélection du Tj qui
entrera dans SC est arbitraire: pas de limite
sur l’attente: possibilité de famine
Instruction ‘Échange’
Chap. 7 39

Certains UCTs (ex: Pentium) offrent une
instruction xchg(a,b) qui interchange le
contenue de a et b de manière atomique.

Mais xchg(a,b) souffre des même lacunes que
test-and-set
Utilisation de xchg pour exclusion
mutuelle
Chap. 7 40
(Stallings
)

Variable partagée b est
initialisée à 0

Chaque Ti possède une
variable locale k

Le Ti pouvant entrer dans
SC est celui qui trouve
b=0

Ce Ti exclue tous les
autres en assignant b à 1
 Quand SC est occupée, k
et b seront 1 pour un
autre thread qui cherche
à entrer
 Mais k est 0 pour le
thread qui est dans la SC
usage:
Thread Ti:
repeat
k = 1
while k!=0 xchg(k,b);
SC
xchg(k,b);
SR
forever
Solutions basées sur des instructions
fournies par le SE (appels du système)
Chap. 7 41

Les solutions vues jusqu’à présent sont
difficiles à programmer et conduisent à du
mauvais code.

On voudrait aussi qu`il soit plus facile
d’éviter des erreurs communes, comme
interblocages, famine, etc.
Besoin d’instruction à plus haut niveau

Les méthodes que nous verrons
dorénavant utilisent des instructions
puissantes, qui sont implantées par des
appels au SE (system calls)
Sémaphores
Chap. 7 42

Un sémaphore S est un entier qui, sauf pour l'Initialisation,
est accessible seulement par ces 2 opérations atomiques et
mutuellement exclusives:
 wait(S) (appelé P dans le livre)
 signal(S) (appelé V dans le livre)

Il est partagé entre tous les procs qui s`intéressent à la
même section critique

Les sémaphores seront présentés en deux étapes:
 sémaphores qui sont occupés à attendre (busy waiting)
 sémaphores qui utilisent des files d ’attente

On fait distinction aussi entre sémaphores compteurs et
sémaphores binaires, mais ce derniers sont moins
puissants (v. livre).
Spinlocks d’Unix: Sémaphores occupés à attendre
(busy waiting)
Chap. 7 43

La façon la plus simple
d’implanter les sémaphores.

Utiles pour des situations où
l’attente est brève, ou il y a
beaucoup d’UCTs

S est un entier initialisé à une
valeur positive, de façon que un
premier thread puisse entrer
dans la SC

Quand S>0, jusqu’à n threads
peuvent entrer

S ne peut pas être négatif
wait(S):
while S=0 ;
S--;
signal(S):
S++;
Attend si no. de threads qui
peuvent entrer = 0
Augmente de 1 le no des threads qui
peuvent entrer
Atomicité
Wait: La séquence
test- décrément est
atomique, mais pas la
boucle!
Signal est
atomique.
Rappel: les sections atomiques
ne peuvent pas être exécutées
simultanément par différent
threads
(ceci peut être obtenu un utilisant
un des mécanismes précédents)
S = 0
atomique S - -
F
V
S
C
Chap. 7 44
Atomicité et
interruptibilité
atomique S - -
F
V
S = 0
S++
interruptible
SC
La boucle n’est pas atomique pour permettre à un
autre thread d’interrompre l’attente sortant de la SC
Chap. 7 45
autre thr.
S
C
(Autre
thread)
Thread T1:
repeat
wait(S);
SC
signal(S);
SR
forever
Thread T2:
repeat
wait(S);
SC
signal(S);
SR
forever
Semaphores: vue globale
Peut être facilement généralisé à plus. threads
Chap. 7 46
Initialise S à >=1
Utilisation des sémaphores pour sections
critiques
Chap. 7 47

Pour n threads

Initialiser S à 1

Alors 1 seul thread peut
être dans sa SC

Pour permettre à k
threads d’exécuter SC,
initialiser S à k
Thread Ti:
repeat
wait(S);
SC
signal(S);
SR
forever
Utilisation des sémaphores pour
synchronisation de threads
Chap. 7 48

On a 2 threads: 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;
Interblocage et famine avec les
sémaphores

Famine: un thread 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)
Chap. 7 49
Sémaphores:
observations
Chap. 7 50

Quand S >= 0:
Le nombre de threads qui peuvent
exécuter wait(S) sans devenir bloqués = S
 S threads peuvent entrer dans la SC
 noter puissance par rapport à mécanismes déjà vus
 dans les solutions où S peut être >1 il faudra avoir un
2ème sém. pour les faire entrer un à la fois (excl.
mutuelle)

Quand S devient > 1, le thread qui entre le
premier dans la SC est le premier à tester S
(choix aléatoire)
ceci ne sera plus vrai dans la solution
suivante
wait(S):
while S=0 ;
S--;
Comment éviter l’attente occupée et le choix
aléatoire dans les sémaphores
Chap. 7 51

Quand un thread doit attendre qu’un sémaphore
devienne plus grand que 0, il est mis dans une file
d’attente de threads qui attendent sur le même
sémaphore.

Les files peuvent être PAPS (FIFO), avec priorités,
etc. Le SE contrôle l`ordre dans lequel les threads
entrent dans leur SC.

wait et signal sont des appels au système comme
les appels à des opérations d’E/S.

Il y a une file d ’attente pour chaque sémaphore
comme il y a une file d’attente pour chaque
unité d’E/S.
Sémaphores sans attente occupée

Un sémaphore S devient une structure de données:
 Une valeur
 Une liste d’attente L

Un thread devant attendre un sémaphore S, est bloqué et ajouté la
file d’attente S.L du sémaphore (v. état bloqué = attente chap 4).

signal(S) enlève (selon une politique juste, ex: PAPS/FIFO) un thread
de S.L et le place sur la liste des threads prêts/ready.
Chap. 7 52
Implementation
(les boîtes réprésentent des séquences non-
interruptibles)
wait(S): S.value --;
if S.value < 0
{
// SC occupée
add this thread to S.L;
block // thread mis en état attente
(wait)
}
signal(S): S.value ++;
if S.value  0 { // des threads attendent
remove a process P from S.L;
wakeup(P) // thread choisi
devient prêt
}
S.value doit être initialisé à une valeur non-négative (dépendant de
l’application, v. exemples)
Chap. 7 53
5
Figure montrant la
relation entre le
contenu de la file et la
valeur de S
Chap. 7
(Stallings
)
Quand S < 0: le nombre
de threads qui attendent
sur S est = |S|
Wait et signal contiennent elles mêmes des SC!
Chap. 7 55

Les opérations wait et signal doivent être
exécutées atomiquement (un seul thr. à la fois)

Dans un système avec 1 seule UCT, ceci peut être
obtenu en inhibant les interruptions quand un
thread exécute ces opérations

Normalement, nous devons utiliser un des
mécanismes vus avant (instructions spéciales,
algorithme de Peterson, etc.)

L’attente occupée dans ce cas ne sera pas trop
onéreuse car wait et signal sont brefs
Problèmes classiques de synchronisation
Chap. 7 56

Tampon borné (producteur-consommateur)

Écrivains - Lecteurs

Les philosophes mangeant
Le pb du producteur - consommateur
Chap. 7 57

Un problème classique dans l ’étude des
threads communicants
un thread producteur produit des données
(p.ex.des enregistrements d ’un fichier)
pour un thread consommateur
Chap. 7 58
Tampons de communication
Prod
1 donn
Cons
Prod
Cons
1 donn 1 donn 1 donn
Si le tampon est de longueur 1, le producteur et consommateur
doivent forcement aller à la même vitesse
Des tampons de longueur plus grandes permettent une
certaine indépendance. P.ex. à droite le consommateur a
Le tampon borné (bounded
buffer)
une structure de données fondamentale dans les
SE
b[0] b[1]
b[7] b[2]
b[6] b[3]
b[5] b[4]
ou
out: 1ère
pos. pleine
in: 1ère
pos. libre b[0] b[1] b[2] b[3] b[4] b[5] b[6] b[7]
in: 1ère
pos. libre
bleu: plein, blanc: libre
out: 1ère
pos.
pleine
Le tampon borné se trouve dans la mémoire partagée
entre consommateur et usager
Chap. 7 59
Pb de sync entre threads pour le tampon
borné
Chap. 7 60

Étant donné que le prod et le
consommateur sont des threads
indépendants, des problèmes pourraient
se produire en permettant accès
simultané au tampon

Les sémaphores peuvent résoudre ce
problème
Sémaphores: rappel.
Chap. 7 61

Soit S un sémaphore sur une SC
 il est associé à une file d ’attente
 S positif: S threads peuvent entrer dans SC
 S zéro: aucun thread ne peut entrer, aucun thread en
attente
 S négatif: |S| thread dans file d ’attente

Wait(S): S - -
 si après S >= 0, thread peut entrer dans SC
 si S < 0, thread est mis dans file d ’attente

Signal(S): S++
 si après S<= 0, il y avait des threads en attente, et un
thread est réveillé

Indivisibilité = atomicité de ces ops
Solution avec sémaphores
Chap. 7 62

Un sémaphore S pour exclusion mutuelle
sur l’accès au tampon
Les sémaphores suivants ne font pas l’EM

Un sémaphore N pour synchroniser
producteur et consommateur sur le
nombre d’éléments consommables dans le
tampon

Un sémaphore E pour synchroniser
producteur et consommateur sur le
nombre d’espaces libres
Chap. 7 63
Solution de P/C: tampon circulaire fini de dimension k
Producer:
repeat
produce v;
wait(E);
wait(S);
append(v);
signal(S);
signal(N);
forever
Consumer:
repeat
wait(N)
;
wait(S)
;
w=take(
);
signal(S);
signal(E);
consume(w);
forever
Initialization: S.count=1; //excl. mut.
N.count=0; //esp. pleins
E.count=k; //esp. vides
a
p
p
e
n
d
(
v
)
:
b
[
i
n
]
Sections critiques
In ++ mod k;
take():
w=b[out];
Out ++ mod k;
return w;
Points importants à étudier
Chap. 7 64

dégâts possibles en inter changeant les
instructions sur les sémaphores
ou en changeant leur initialisation

Généralisation au cas de plus. prods et
cons
Concepts importants de cette partie du Chap
7
Chap. 7 65

Le problème de la section critique

L’entrelacement et l’atomicité

Problèmes de famine et interblocage

Solutions logiciel

Instructions matériel

Sémaphores occupés ou avec files

Fonctionnement des différentes solutions

L’exemple du tampon borné

Par rapport au manuel: ce que nous n’avons pas
vu en classe vous le verrez au lab
Glossaire
Chap. 7 66

Atomicité, non-interruptibilité:
 La définition précise d’atomicité, non-déterminisme
etc. est un peu compliquée, et il y en a aussi des
différentes… (les curieux pourraient faire une
recherche Web sur ces mot clé)
 Ce que nous discutons dans ce cours est une 1ère
approximation: une séquence d’ops est atomique si
elle est exécutée toujours sans être interrompue par
aucune autre séquence sur les mêmes données
 Ou son résultat ne dépend jamais de l’existence
d’autres séquences en parallèle…
Non-déterminisme et conditions de course
Chap. 7 67

Non-déterminisme: une situation dans laquelle il y
a plusieurs séquences d’opérations possibles à
un certain moment, même avec les mêmes
données. Ces différentes séquences peuvent
conduire à des résultats différents

Conditions de course: Les situations dans
lesquelles des activités exécutées en parallèle
sont ‘en course’ les unes contre les autres pour
l`accès à des ressources (variables partagées,
etc.), sont appelées ‘conditions de course ’.
Chapitre 7 continuation

Problèmes classiques de synchronisation

Lecteurs - Rédacteurs

Les philosophes mangeant

Moniteurs

Threads en Java
http://w3.uqo.ca/lui
gi/
Chap. 7 1
Sémaphores:
rappel
(les boîtes représentent des séquences
indivisibles)
wait(S): S.value --;
if S.value < 0
{
// SC occupée
ajouter ce thread à S.L;
block // thread mis en état attente
(wait)
}
signal(S): S.value ++;
if S.value  0 { // des threads attendent
enlever un thread P de S.L;
wakeup(P)
// thread choisi devient prêt
}
S.value doit être initialisé à une valeur non-
Chap. 7 2
Sémaphores: rappel.
Chap. 7 3

Soit S un sémaphore sur une SC
 il est associé à une file d ’attente
 S positif: S thread peuvent entrer dans SC
 S zéro: aucun thread ne peut entrer, aucun thread
en attente
 S négatif: |S| thread dans file d ’attente

Wait(S): S - -
 si après S >= 0, thread peut entrer dans SC
 si S < 0, thread est mis dans file d ’attente

Signal(S): S++
 si après S<= 0, il y avait des threads en attente, et
un thread est transféré à la file prêt

Indivisibilité = atomicité de wait et signal
Problème des lecteurs - rédacteurs
Chap. 7 4

Plusieurs threads peuvent accéder à une
base de données
Pour y lire ou pour y écrire

Les rédacteurs doivent être synchronisés
entre eux et par rapport aux lecteurs
il faut empêcher à un thread de lire
pendant l’écriture
il faut empêcher à deux rédacteurs d
’écrire simultanément

Les lecteurs peuvent y accéder
simultanément
Une solution (n’exclut pas la famine)
Chap. 7 5

Variable readcount: nombre de threads lisant la base de
données

Sémaphore mutex: protège la SC où readcount est mis à
jour

Sémaphore wrt: exclusion mutuelle entre rédacteurs et
lecteurs

Les rédacteurs doivent attendre sur wrt
 les uns pour les autres
 et aussi la fin de toutes les lectures

Les lecteurs doivent
 attendre sur wrt quand il y a des rédacteurs qui
écrivent
 bloquer les rédacteurs sur wrt quand il y a des lecteurs
qui lisent
 redémarrer les rédacteurs quand personne ne lit
Les données et les rédacteurs
Chap. 7 6
Données: deux sémaphores et une variable
mutex, wrt: semaphore (init. 1);
readcount : integer (init. 0);
Rédacteur
wait(wrt);
. . .
// écriture
. . .
signal(wrt);
Les lecteurs
wait(mutex);
readcount ++ ;
if readcount == 1 then wait(wrt);
signal(mutex);
//SC: lecture
wait(mutex);
readcount -- ;
if readcount == 0 then signal(wrt);
signal(mutex):
Le dernier lecteur sortant
doit permettre l`accès aux
rédacteurs
Le premier lecteur d ’un groupe
pourrait devoir attendre sur wrt, il
doit aussi bloquer les rédacteurs.
Quand il sera entré, les suivants
pourront entrer librement
Chap. 7 7
Observations
Chap. 7 8

Le 1er lecteur qui entre dans la SC bloque
les rédacteurs
wait (wrt)

le dernier les remet en marche
signal (wrt)

Si 1 rédacteur est dans la SC, 1 lecteur
attend sur wrt, les autres sur mutex

un signal(wrt) peut faire exécuter un
lecteur ou un rédacteur
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

Illustre la difficulté
d’allouer ressources aux
threads tout en évitant
interblocage et famine
Chap. 7 9
Le problème des philosophes
mangean
t

Un thread par
philosophe

Un sémaphore par
fourchette:
 fork: array[0..4]
of semaphores
 Initialisation: fork[i]
=1 for i:=0..4

Première tentative:
 interblocage si
chacun débute en
prenant sa
fourchette gauche!
 wait(fork[i])
Thread Pi:
repeat
think;
wait(fork[i]);
wait(fork[i+1 mod 5]);
eat;
signal(fork[i+1 mod 5]);
signal(fork[i]);
forever
Chap. 7 10
Le problème des philosophes
mangean
t

Une solution: admettre
seulement 4 philosophes
à la fois qui peuvent
tenter de manger

Il y aura touj. au moins
1 philosophe qui
pourra manger
 même si tous
prennent 1
fourchette

Ajout d’un sémaphore T
qui limite à 4 le nombre
de philosophes “assis à
la table”
 initial. de T à 4

N’empêche pas famine!
Thread Pi:
repeat
think;
wait(T);
wait(fork[i]);
wait(fork[i+1 mod 5]);
eat;
signal(fork[i+1 mod
5]);
signal(fork[i]);
signal(T);
forever
Chap. 7 11
Avantage des
sémaphores
Chap. 7 12
(par rapport aux solutions précédentes)

Une seule variable partagée par section
critique

deux seules opérations: wait, signal

contrôle plus localisé (que avec les
précéds)

extension facile au cas de plus. threads

possibilité de faire entrer plus. threads à la
fois dans une section critique

gestion de files d`attente par le SE: famine
évitée si le SE est équitable (p.ex. files
FIFO)
Problème avec sémaphores: difficulté de
programmation
Chap. 7 13

wait et signal sont dispersés
parmi plusieurs threads, mais ils
doivent se correspondre
Utilisation doit être correcte dans tous
les threads

Un seul “mauvais” thread peut faire
échouer toute une collection de threads
(p.ex. oublie de faire signal)

Considérez le cas d`un thread qui a des
waits et signals dans des boucles et des
tests...
Moniteurs: une autre solution

Constructions (en
langage de haut-niveau)
qui procurent une
fonctionnalité
équivalente aux
sémaphores mais plus
facile à contrôler

Disponibles en:
 Concurrent
Pascal, Modula-
3...
• synchronized method
en Java (moniteurs
simplifiés)
Chap. 7 14
Moniteur

Est un module contenant:
une ou plusieurs procédures
une séquence d’initialisation
variables locales

Caractéristiques:
variables locales accessibles seulement
à l’aide d’une procédure du moniteur
un thread entre dans le moniteur en
invoquant une de ses procédures
un seul thread peut exécuter dans le moniteur
à tout instant (mais plus. threads peuvent être en attente
dans le monit.)
Chap. 7 15
Moniteu
r

Il assure à lui seul l’exclusion mutuelle: pas
besoins de le programmer explicitement

On assure la protection des données partagées
en les plaçant dans le moniteur
 Le moniteur verrouille les données
partagées lorsqu’un thread y entre

Synchronisation de threads est effectuée en
utilisant des variables conditionnelles qui
représentent des conditions après lesquelles un
thread pourrait attendre avant d’exécuter dans le
moniteur
Chap. 7 16
Structure générale du moniteur (style
Java)
monitor nom-de-moniteur
{ // déclarations de vars
public entry p1(. . .) {code de méthode
p1} public entry p2(. . .) {code de
méthode p2}
. . .
}
La seule façon de manipuler les vars internes au
moniteur est d’appeler une des méthodes d’entrée
Chap. 7 17
Moniteur: Vue schématique simplifiée style Java
Chap. 7 18
Variables conditionnelles (n’existent pas en
Java)
Chap. 7 19

sont accessibles seulement dans le moniteur

accessibles et modifiables seulement à l’aide de 2
fonctions:
 x: wait bloque l’exécution du thread exécutant
sur la condition x
 le thread pourra reprendre l’exécution seulement
si un autre thread exécute x: signal)
 x: signal reprend l’exécution d’un thread bloqué
sur la condition x
 S’il en existe plusieurs: en choisir un (file?)
 S’il n’en existe pas: ne rien faire
Moniteur avec variables conditionnelles
Chap. 7 20
Dans une banque, il y a
une file principale, mais
une fois entré on pourrait
vous faire attendre dans
un fauteuil jusqu’à ce que
le préposé soit disponible
Un concept plus général: Variables condition
Chap. 7 21

On appelle variable condition une var qui
peut être testée et
endorme le thread qui la teste si la
condition est fausse
le réveille quand la condition devient
vraie

Sont employées dans les moniteurs, mais
peuvent aussi être utilisées
indépendamment
Blocage dans les moniteurs

threads attendent dans la file d’entrée ou dans
une file de condition (ils n ’exécutent pas)

sur x.wait: le thread est placé dans la file de
la condition (il n ’exécute pas)

x.signal amène dans le moniteur 1 thread de la
file x (si x vide, aucun effet)
Chap. 7 22
Un pb concernant le
signal
Chap. 7 23

Quand un thread P exécute x.signal et
libère un thr. Q, il pourrait y avoir 2 thr. qui
peuvent exécuter, P et Q, ce qui est
défendu. Deux solutions possibles:
P pourrait attendre jusqu` à ce que Q sorte
du moniteur, p.ex. dans une file spéciale
(dite urgente) (v. Stallings)
Q pourrait attendre jusqu’à ce que P sorte
du moniteur
Terminologie Java (davantage au
lab)
Chap. 7 24

Les méthodes synchronisées de Java sont essentiellement
des moniteurs
 Un seul thread à la fois peut les exécuter

Il y a 2 files pour un objet:
 File d’entrée
 File d’attente (méthode wait)

Un thread ne peut avoir que 1 file wait
 Limitation importante qui complique les choses en
Java…

Wait existe en Java + ou – comme décrit pour les
moniteurs

Signal s’appelle notify
 Notify() libère 1 seul thread
 NotifyAll les libères tous
 Mais ils n’exécutent pas: ils sont mis dans la file d’entrée
Java: diagramme simplifié de transition d’état
threads
(sur la base de la fig. 5.10 du manuel)
nouvea
u
star
t
Sleep
Wait
I/O
join
susp
end
notify
Fin
E/S
resum
e
nouvea
u
exécutable
= runnable
mor
t
b loqué =
not
runnable
bloqué sur une file associée à
un événement
prêt ou en exécution
stop ou
term. de
run
Chap. 7 25
Un diagramme plus
complet
NEW
READY
RUNNING
DEAD
NOT
RUNNABLE
new
start
complète run
method ou
exception
pas traitée
Ordonnanceur
choisit fil
yield ou
terminaison
tranche ou
préemption
Notify, E/S
terminée, resume,
interrupted
Sleep,
wait, I/O,
join,
suspend
RUNNABLE =
READY ou
RUNNING
Chap. 7 26
Les méthodes suspend, resume, stop ne sont
pas recommandées aujourd’hui (deprecated).
Malheureusement le manuel s’en sert…
Retour au problème des philosophes mangeant

5 philosophes qui
mangent et pensent

Pour manger il faut 2
baguettes, droite et
gauche

On en a seulement
5!

Un problème classique
de synchronisation

Illustre la difficulté
d’allouer ressources aux
threads tout en évitant
interblocage et famine
Chap. 7 27
Philosophes mangeant structures de
données

Chaque philos. a son propre state qui peut être
(thinking, hungry, eating)
 philosophe i peut faire state[i] = eating ssi les voisins
ne mangent pas

Chaque condition a sa propre condition self
 le philosophe i peut attendre sur self [ i ] si veut
manger, mais ne peut pas obtenir les 2 baguettes
Chap. 7 28
Chaque philosophe exécute à jamais:
repeat
pickup
eat
putdown
forever
Chap. 7 29
Chap. 7 30
private test(int i) {
if ( (state[(i + 4) % 5] != EATING) &&
(state[i] == HUNGRY) &&
(state[(i + 1) % 5] != EATING) ) {
state[i] = EATING;
self[i].signal;
}
}
Un philosophe mange
Un philosophe mange si ses voisins ne mangent pas et
s’il a faim.
Une fois mangé, il signale de façon qu’un autre
pickup soit possible, si pickup s’était arrêté sur wait
Il peut aussi sortir sans avoir mangé si le test est faux
Chercher de prendre les baguettes
public entry pickUp(int i) {
state[i] =
HUNGRY; test(i);
if (state[i] !=
EATING)
self[i].wait;
}
Phil. cherche à manger en testant, s’il sort de test qu’il
n’est pas mangeant il attend – un
Chap. 7 31
Déposer les baguettes
public entry putDown(int i) {
state[i] = THINKING;
// tester les deux
voisins
test((i + 4) % 5);
test((i + 1) % 5);
} Une fois fini de manger, un philosophe se
préoccupe de faire manger ses voisins en les
testant
Chap. 7 32
Une solution ingénieuse,
cependant les baguettes ne sont
que implicites
Chap. 7 33
Il vaut la peine de l’étudier
P/C: tampon circulaire de dimension k

Peut consommer seulement si le nombre N d’éléments
consommables est au moins 1 (N = in-out)

Peut produire seulement si le nombre E d’espaces libres est
au moins 1 (E = out-in)
Chap. 7 34
Variables conditionnelles utilisées
Chap. 7 35

Si le tampon est plein, le producteur doit
attendre qu’il devienne non-plein
Var conditionnelle notfull

Si le tampon est vide, le consommateur
doit attendre qu’il devienne non-vide
Var conditionnelle notempty
Moniteur pour P/C avec tampon
fini
Chap. 7 36
(syntaxe un peu différente, pas orienté objet)
Monitor boundedbuffer:
buffer: vecteur[0..k-1] de items;
nextin = 0, nextout = 0, count = 0 ;
notfull, notempty: condition;
Produce(v):
if (count==k) notfull.wait;
buffer[nextin] = v;
nextin = (nextin+1 mod k);
count ++;
notempty.signal;
Consume(v):
v = buffer[nextout];
nextout = (nextout+1 mod k);
count --;
notfull.signal;
Variable conditionnelle sur
laquellele producteur attend
s’il n’y a pas d’espaces libres
Variable conditionnelle sur
laquelle
if (count==0) notempty.wait; le consommateur attend s’il n’y a pas
d’espaces
occupés
La solution Java est plus compliquée
surtout à cause du fait que Java n’a
pas de variables conditionnelles
nommées
Chap. 7 37
V.
manuel
Relation entre moniteurs et autre
mécanismes
Chap. 7 38

Les moniteurs sont implantés utilisant les
sémaphores ou les autres mécanismes
déjà vus

Il est aussi possible d`implanter les
sémaphores en utilisant les moniteurs!
les laboratoires vont discuter ça
Le problème de la SC en pratique...
Chap. 7 39

Les systèmes réels rendent disponibles
plusieurs mécanismes qui peuvent être
utilisés pour obtenir la solution la plus
efficace dans différentes situations
Synchronisation en Solaris 2 (avec UCT
multiples)

Plusieurs mécanismes utilisés:
adaptive mutex protège l ’accès aux
données partagées pour des SC courtes
sémaphores et condition variables
protègent des SC plus importantes
serrures lecteurs-rédacteurs (reader-writers
locks) protègent des données qui
normalement ne sont que lues
les mêmes mécanismes sont disponibles
aux usagers et dans le noyau
Chap. 7 40
Adaptive mutex en Solaris 2

Utilisés pour des SC courtes: quand un
thread veut accéder à des données
partagées:
Si les données sont couramm. utilisées par
un thread exécutant sur un autre UCT, l
’autre thread fait une attente occupée
Sinon, le thread est mis dans une file d
’attente et sera réveillé quand les données
deviennent disponibles
Chap. 7 41
Windows NT
: aussi plus. mécanismes

exclusion mutuelle sur données partagées:
un fil doit demander accès et puis libérer

section critiques: semblables mais pour
synchroniser entre fils de threads
différents

sémaphores

event objects: semblables à condition
variables
Chap. 7 42
Concepts importants du Chapitre 7
Chap. 7 43

Sections critiques: pourquoi

Difficulté du problème de la synch sur SC
Bonnes et mauvaises solutions

Accès atomique à la mémoire

Solutions logiciel `pures`

Solution matériel: test-and-set

Solutions par appels du système:
Sémaphores, moniteurs, fonctionnement

Problèmes typiques: tampon borné,
lecteurs-écrivains, philosophes
Par rapport au manuel
Chap. 7 44

Le manuel couvre + ou – la même matière,
mais en utilisant une approche Java

Pour le test et examen, suivre ma
présentation

Pour les travaux de programmation, utiliser
les exemples du manuel
Chap 8 1
Interblocage = impasse
(Deadlock)
Chapitre 8
http://w3.uqo.ca/lui
gi/
Interblocages: concepts importants
Chap 8 2

Caractérisation: les 4 conditions

Graphes allocation ressources

Séquences de terminaison

États sûrs et no-sûrs

Prévenir les interblocages

Éviter les interblocages

Détecter les interblocages

Récuperer d’un interblocage
Exemple 1
Chap 8 3

Deux processus coexistent dans un système, qui a 2 lignes
téleph. seulement

Le proc 1 a besoin de
 une ligne téléphonique pour démarrer
 la ligne précédente, et une additionnelle, pour terminer

Le proc 2 est pareil

Scénario d ’interblocage:
 proc 1 demande 1 ligne
 proc 2 demande 1 ligne: les deux lignes sont engagées
 interblocage! aucun proc ne peut compléter
 à moins qu ’un des proc ne puisse être suspendu
 ou puisse retourner en arrière

Observez que l ’interblocage n ’est pas inévitable, p.ex. si
1 complète avant le début de 2
 Éviter / détecter le risque d’interblocage
 Éviter / détecter qu’un interblocage se vérifie
Exemple 2

Sémaphores
P0
wait (A);
wait (B);
P1
wait(B)
wait(A)

Scénario d’interblocage:
 initialisation de A et B à 1
 P0 exécute wait(A), A=0
 P1 exécute wait(B), B=0
 P0 et P1 ne peuvent pas aller plus loin
 Qu’arrive au lieu si P0 exécute entièrement avant
P1?
Chap 8 4
Définition (Tanenbaum)

Un ensemble de processus est en interblocage si
chaque processus attend un événement que seul
un autre processus de l’ensemble peut provoquer

L’événement est une libération de ressource
 Prenant ce mot dans le sens le plus vaste:
ressource peut être un signal, un message,un
sémaphore, etc.
 Exemple intéressant: interblocage entre lecteurs
ou écrivains sur une base de données???

Un processus en interblocage est en état
attente
Chap 8 5
Caractérisation
d’interblocage

L’interblocage demande la présence simultanée de 4 conditions
(conditions nécessaires et suffisantes)
 Exclusion mutuelle: le système a des ressources non
partageables (1 seul proc à la fois peut s’en servir)
 Ex.: un UCT, une zone de mémoire, une périphérique, mais
aussi sémaphores, moniteurs, sections critiques
 Saisie et attente (hold and wait): un processus a saisi une
ressource non partageable et en attend des autres pour
compléter sa tâche
 Pas de préemption: un processus qui a saisi une ressource
non partageable la garde jusqu’à ce qu’il aura complété sa
tâche
 Attente circulaire: il y a un cycle de processus tel que chaque
processus pour compléter doit utiliser une ressource non
partageable qui est utilisée par le suivant, et que le suivant
gardera jusqu`à sa terminaison
 En présence des 3 premières conditions, une attente circulaire est
un interblocage
 Les 3 premières conditions n’impliquent pas nécessairement
interblocage, car l’attente circulaire pourrait ne pas se vérifier
important
Chap 8 6
Chap 8 7
Attente circulaire - aucun ne lâche - aucun
processus ne peut terminer donc
interblocage
P0
P3
P4
P2 P1
Pour terminer
, chaque processus doit saisir une ressource
que le prochain ne lâchera pas  interblocage
Exercice
Réfléchissez à cet exemple dans lequel des voitures
sont dans une situation d’interblocage sur un pont
et voir comment les différentes conditions sont
satisfaites.
V. aussi l’exemple à la page 1.
Chap 8 8
Exercice
Chap 8 9

Considérez un système dans lequel
chaque processus n’a besoin que d’une
seule ressource pendant toute son
existence

L’interblocage, est-il possible?
Exercice
Chap 8 10

Vérifier que si dans un système il y a
toujours suffisamment de ressources pour
tous, il n’y aura jamais d’interblocages

Cependant ceci est souvent impossible, surtout
dans le cas de sections critiques, car les données
partagées existent normalement dans un seul
exemplaire
En principe, un problème difficile
Chap 8 11

Le problème de déterminer s’il y a
d’interblocage dans un système est connu
comme problème insoluble en principe par
ordinateur (résultat théorique)
On ne pourrait pas écrire un programme S
qui, étant donnée un autre programme X en
entrée, pourrait déterminer à coup sûr si X
contient la possibilité d’interblocage

Cependant, nous pouvons développer des
critères pour trouver des réponses
plausibles dans des cas particuliers
Graphes d’allocation ressources
Chap 8 12

Un ensemble de sommets V et d’arêtes E

V est partitionné dans:
P = {P1, P2, …, Pn}, l’ensemble qui consiste
de tous les procs dans le système
R = {R1, R2, …, Rm}, l’ensemble qui consiste
de tous les types de ressources dans le
système
 arête requête – arête dirigée Pi  Rk
 arête affectation – arête dirigée Ri  Pk
Graphe d’allocation ressources

Pj a saisi (et utilise) un exemplaire de Rj
Pi
Pj

Processus

Ressource dont il y a 4 exemplaires (instances)
R

Pi a (ou aura) besoin pour terminer d’un
exemplaire de Ri, dont il y en a 4
Chap 8 13
Ri
Rj
Exemple de graphe allocation ressources
P1 en attente
Chap 8 14
P2 en attente
P3 pas en attente
Y-a-t-il interblocage?
Utilisation de ces graphes
Chap 8 15

Nous supposons l’existence des 3 premières
conditions
 Excl. Mutuelle, saisie et attente, pas de
préemption

Pour montrer qu’il n’y a pas d’interblocage, nous
devons montrer qu’il n’y a pas de cycle, car il y a
un processus qui peut terminer sans attendre
aucun autre, et puis les autres de suite
 <P3, P2, P1> est un ordre de terminaison de
processus: tous peuvent terminer dans cet ordre
Graphe allocation ressources avec
interblocage Nous avons deux cycles:
P1  R1  P2  R3  P3
 R2  P1
P2  R3  P3  R2  P2
aucun proc ne peut
terminer aucune
possibilité d’en sortir
Chap 8 16
Graphe allocation ressources avec cycle,
mais pas d’ interblocage (pourquoi?)
Attente circulaire, mais les ressources peuvent devenir
disponibles
Chap 8 17
Constatations
Chap 8 18

Les cycles dans le graphe alloc ressources ne
signalent pas nécessairement une attente
circulaire

S ’il n`y a pas de cycles dans le graphe, aucun
interblocage

S ’il y a de cycles:
 Si seulement une ressource par type,
interblocage
 (pourquoi?!)
 Si plusieurs ressources par type,
possibilité d’interblocage
 Il faut se poser la question: y-a-t-il un processus qui
peut terminer et si oui, quels autres processus
peuvent terminer en conséquence?
Hypothèse de terminaison
Chap 8 19

Un proc qui a toutes les ressources dont il
a besoin, il s’en sert pour un temps fini,
puis il les libère

Nous disons que le processus termine,
mais il pourrait aussi continuer, n’importe,
l’important est qu’il laisse la ressource
Méthodes pour traitement interblocage
Chap 8 20

Concevoir le système de façon qu`un interblocage
soit impossible
 difficile, très contraignant
 approprié dans le cas de systèmes critiques

Les interblocages sont possibles, mais sont évités
(avoidance)

Permettre les interblocages, en récupérer

Ignorer le problème, qui donc doit être résolu par
le gérant ou l ’usager
 malheureusement, méthode d ’utilisation générale!
Prévention d’interblocage: prévenir au moins une des 4
conditions nécessaires
Chap 8 21

Exclusion mutuelle: réduire le plus possible l ’utilisation
des ressources partagées et Sections Critiques
 Possible seulement dans le cas de procs
totalement indépendants

Saisie et attente (hold and wait): un processus qui
demande des nouvelles ressources ne devrait pas en
retenir des autres (les demander toutes ensemble)
 Comment savoir?

Préemption: si un processus qui demande d’autres
ressources ne peut pas les avoir, il doit être suspendu, ses
ressources doivent êtres rendues disponibles
 OK, demande intervention du SE

Attente circulaire: imposer un ordre partiel sur les
ressources, un processus doit demander les ressources
dans cet ordre (p.ex. tout processus doit toujours demander
une imprimante avant de demander une unité ruban)
 Difficile
Éviter les interblocages (deadlock avoidance)
Chap 8 22

Chaque processus doit déclarer le nombre
max. de ressources dont il prévoit avoir
besoin

L’algorithme examine toutes les
séquences d ’exécution possibles pour
voir si une attente circulaire est possible
État sûr (safe state)

Un état est sûr si le système peut en sortir sans
interblocages

Ne pas allouer une ressource à un processus si
l’état qui en résulte n’est pas sûr
États sûrs
É. non-sûrs
Chap 8 23
Impasse
État sûr
Chap 8 24
 Une séquence de proc <P1, P2, …, Pn> est
sûre si pour chaque Pi, les ressources que
Pi peut encore demander peuvent être
satisfaites par les ressources couramment
disponibles + ressources utilisées par
les Pj qui les précèdent.
Quand Pi aboutit, Pi+1 peut obtenir les
ressources dont il a besoin, terminer,
donc
 <P1, P2, …, Pn> est un ordre de terminaison
de processus: tous peuvent se terminer
dans cet ordre
Algorithme d’allocation de ressources
Chap 8 25

Il faut maintenant prendre en
considération:
les requêtes possibles dans le futur
(chaque processus doit déclarer ça)
 Arête demande Pi - - > Rj indique que
le processus Pi peut demander la
ressource Rj (ligne à tirets)
Chap 8 26
Graphe d`allocation ressources
Ligne continue: requête
courante; tirets: requête
Un état pas sûr
Si P2 demande R2, ce dernier ne peut pas lui être donné, car ceci peut causer
un cycle dans le graphe si P1 req R2. Mieux vaut attendre la fin de P1, puis
faire finir P2
Chap 8 27
Détection d ’interblocage
Chap 8 28

On permet au système d’entrer dans un
état d’interblocage

L’interblocage est détecté

On récupère de l’interblocage
Différence entre attente et interblocage
Chap 8 29

Il est difficile de détecter s ’il y a effectivement une
interblocage dans le système

Nous pourrions voir qu’un certain nombre
de processus est en attente de ressources
 ceci est normal!

Pour savoir qu’il y a interblocage, il faut
savoir qu’aucun processus dans un groupe
n’a de chance de recevoir la ressource
 car il y a attente circulaire!

Ceci implique une analyse additionnelle, que
peu de SE se prennent la peine de faire...
Méthode de détection d’interblocage dans le
cas d’une ressource par type
Chap 8 30

Essentiellement, la méthode déjà décrite
Construire un graphe d’allocation
ressources et voir s’il y a une manière dont
tous les proc peuvent terminer

Dans le cas d’une ressource par type,
l`algorithme cherche des cycles dans le
graphe (algorithme d’ordre n2, si n=nombre
de sommets)

Plus difficile dans le cas de
plus. ressources par type
Pas discuté
Graphe allocation ressources et graphe d ’attente
(cas d’1 ressource par type)
Chap 8 31
Récupérer d’interblocages
Chap 8 32

Terminer tous les processus dans
l’interblocage

Terminer un processus à la fois, espérant
d’éliminer le cycle d ’interblocages

Dans quel ordre: différents critères:
priorité
besoin de ressources: passé, futur
combien de temps il a exécuté, de combien
de temps il a encore besoin
etc.
Récupération: préemption de ressources
Chap 8 33

Minimiser le coût de sélectionner la victime

Rollback: retourner à un état sûr
besoin d`établir régulièrement et garder
des ‘points de reprise’, sortes de photos
de l ’état courant du processus
p.ex. Word établit des points de reprise
qu’il vous propose après un ‘accident’

Famine possible si le même processus est
toujours sélectionné
Combinaison d’approches
Chap 8 34

Combiner les différentes approches, si
possible, en considération des contraintes
pratiques
prévenir
éviter
détecter

utiliser les techniques les plus appropriées
pour chaque classe de ressource
Importance du pb de l’interblocage
Chap 8 35

L’interblocage est quasiment ignoré dans
la conception des systèmes d’aujourd’hui
Avec l’exception des systèmes critiques

S’il se vérifie, l’usager verra une panne de
système ou l’échec d’un processus

Dans les systèmes à haut parallélisme du
futur, il deviendra de plus en plus
important de le prévenir et éviter
Par rapport au manuel
Chap 8 36

Tout le chapitre, mais le code Java n’est
pas important pour l’examen
Interblocages: concepts importants
Chap 8 37

Caractérisation: les 4 conditions

Graphes allocation ressources

Séquences de terminaison

États sûrs et non-sûrs

Prévenir les interblocages

Éviter les interblocages

Détecter les interblocages

Récuperer d’un interblocage
1
Gestion de la
mémoire
Chapitre 9
w3.uqo.ca/
luigi
Dans ce chapitre nous
verrons que, pour optimiser
l’utilisation dela mémoire, les
programmes sont éparpillés
en mémoire selon des
méthodes différentes:
Pagination, segmentation
Chap. 9 2
Gestion de mémoire: objectifs
Chap. 9 3

Optimisation de l ’utilisation de la
mémoire principale = RAM

Les plus grand nombre possible de
processus actifs doit y être gardé, de
façon à optimiser le fonctionnement du
système en multiprogrammation
garder le système le plus occupé
possible, surtout l’UCT
s’adapter aux besoins de mémoire de l
’usager
 allocation dynamique au besoin
Gestion de la mémoire: concepts dans ce
chapitre
Chap. 9 4

Adresse physique et adresse logique
mémoire physique et mémoire logique

Remplacement

Allocation contiguë
partitions fixes
variables

Pagination

Segmentation

Segmentation et pagination combinées

Groupes de paires (buddy systems)
Application de ces concepts
Chap. 9 5

Pas tous les concepts de ce chapitre sont
effectivement utilisés tels quels
aujourd’hui dans la gestion de mémoire
centrale

Cependant plusieurs se retrouvent dans le
domaine de la gestion de mémoires
auxiliaires, surtout disques
Mémoire/Adresses physiques et logiques
Chap. 9 6

Mémoire physique:
 la mémoire principale RAM de la machine

Adresses physiques: les adresses de cette
mémoire

Mémoire logique: l’espace d`adressage d’un
programme

Adresses logiques: les adresses dans cet
espace

Il faut séparer ces concepts car normalement, les
programmes sont chargés de fois en fois dans
positions différentes de mémoire
 Donc adresse physique ≠ adresse logique
Traduction adresses logiques adr.
physiques
MMU: unité de gestion de mémoire
unité de traduction adresses
(memory management unit)
Chap. 9 7
Définition des adresses logiques
Chap. 9 8

Le manuel définit les adresses logiques
comme étant les adresses générées par
l’UCT
Mais parfois l’MMU est partie de l ’UCT!

Je préfère la déf suivante:
une adresse logique est une adresse à
une location de programme
 par rapport au programme lui-même
seulement
 indépendante de la position du
programme en mémoire physique
Vue de l’usager
Chap. 9 9

Normalement, nous avons plusieurs
types d’adressages p.ex.
 les adresses du programmeur (noms symboliques)
sont traduites au moment de la compilation dans
des
 adresses logiques
 ces adresses sont traduites en adresses physiques
par l’unité de traduction adresses (MMU)

Étant donné la grande variété de matériel et logiciel, il
est impossible de donner des défs. plus précises.
Liaison (Binding) d’adresses logiques
et physiques (instructions et données)
Chap. 9 10

La liaison des adresses logiques aux adresses
physiques peut être effectuée en moments
différents:
 Compilation: quand l’adresse physique est connue
au moment de la compilation (rare)
 p.ex. parties du SE
 Chargement: quand l’adresse physique où le progr
est chargé est connue, les adresses logiques
peuvent être traduites (rare aujourd’hui)
 Exécution: normalement, les adresses physiques
ne sont connues qu’au moment de l ’exécution
 p.ex. allocation dynamique
Deux concepts de
base
Chap. 9 11

Chargement = Loading. Le programme, ou une de
ses parties, est chargé en mémoire physique, prêt
à exécuter.
 Statique (avant l’exécution)
 Dynamique (pendant l’exécution)

Édition de liens = Liaison (enchaînement) des
différentes parties d’un programme pour en faire
une entité exécutable.
 les références entre modules différents doivent
être traduites
 statique (avant l`exécution)
 dynamique (sur demande pendant exécution)
• N.B. parties du programme = modules =
segments = sousprogrammes = objets, etc.
Chap. 9 12
Édition de liens: adressage entre modules
B
Données
D
Sous-
progr.
A
Progr.
Princ.
C
Données
JUMP(D, 100)
LOAD(C,250)
LOAD(B,50)
Les adresses sont en deux parties :
(No de module, Décalage dans le
module)
doivent être traduites pour permettre
Espace
d’adressage
logique
Édition de liens:
une méthode possible qui supporte la liaison
dynamique
Tableau Définitions de
A Noms internes de
A
Nom Adresse
Tableau Usage de
A Noms Externes
de A
Nom x
Défini dans Module B
Module A corps
Réf à x dans B
Chaque module contient
deux tableaux
Tableau Définitions de
B Noms internes de
B
Nom x Adresse
Tableau Usage de
B Noms Externes
de B
Nom Défini dans Module
Module B corps
x dans B
Chap. 9 13
Adressage
indirecte
peut être utilisé dans cette
méthode
(v. aussi chaînes d’adresses en C ou C++)
code op adresse
instruction
Chap. 9 14
1
1
1
1: adresse indirecte: le mot contient
une adresse
0: ce mot est le mot qui contient la
donnée visée
mot adressé
0
Cette méthode supporte l’allocation
dynamique

Si le module B n’a pas encore
été chargé, la référence à B
dans le tableau des noms
externes de A contiendra
l ’information nécessaire
pour
trouver et charger B.

Après avoir fait ça, cette
référence sera traduite dans
une adresse de mémoire
physique.

Si B reste toujours au même
endroit, nous pouvons mettre
dans A directement l’adresse
finale (flèche pointillée), sinon
nous pouvons continuer de
rejoindre B par adressage
indirecte
Tableau Définitions de
A Noms internes de
A
Nom
Adresse Tableau
Usage de A Noms
Externes de A
Tableau Définitions de
B Noms internes de
B
Nom x
Adresse
Tableau Usage de B
Noms Externes de
B
Nom
Défini dans Module
Module B corps
Nom x Défini dans
Module B
Module A corps
Réf à x dans B x dans
B
Chap. 9 15
Aspects du chargement
Chap. 9 16

Trouver de la mémoire libre pour un
module de chargement: contiguë ou non

Traduire les adresses du programme et
effectuer les liaisons par rapport aux
adresses où le module est chargé
Chargement (pas contigu ici) et traduction d’adresses
Mémoire logique
Alloc. de mém.
JUMP 328
Mém. physique
Chap. 9 17
JUMP 10328
Autres
programmes
0
500K
Liaison et
chargement
v. fig. plus complète dans
livre
Progr.
exécutable
Compilateur Modules
Objet
Éditeur
de liens
Modules
Liés
Chargeur
Autres
Mods
(librairie)
NB: on fait l`hypothèse que tous les modules soient connus au
début Souvent, ce n’est pas le cas  chargement
dynamique
Chap. 9 18
Progr.
Source
Chargement et liaison dynamique
Chap. 9 19

Un processus exécutant peut avoir besoin de différents
modules du programme en différents moments

Le chargement statique peut donc être inefficace

Il est mieux de charger les modules sur demande =
dynamique
 dll, dynamically linked libraries

Dans un programme qui peut avoir besoin de charger des
modules dynamiquement, au début ces derniers sont
représentés par des stubs qui indiquent comment arriver au
modules (p.ex. où il se trouve: disque, www, autre...)

À sa 1ère exéc. le stub cause le chargement du module en
mémoire et sa liaison avec le reste du programme
 liaison dynamique

Les invocations successives du module ne doivent pas
passer à travers ça, on saura l’adresse en mémoire
Traduction d’adresses logique  physique
Chap. 9 20

Dans les premiers systèmes, un programme était toujours
chargé dans la même zone de mémoire

La multiprogrammation et l’allocation dynamique ont
engendré le besoin de charger un programme dans
positions différentes

Au début, ceci était fait par le chargeur (loader) qui
changeait les adresses avant de lancer l ’exécution

Aujourd’hui, ceci est fait par le MMU au fur et à mesure que
le progr. est exécuté

Ceci ne cause pas d’hausse de temps d ’exécution, car le
MMU agit en parallèle avec autres fonctions d ’UCT
 P.ex. l ’MMU peut préparer l ’adresse d ’une instruction
en même temps que l ’UCT exécute l ’instruction
précédente
Recouvrement ou overlay

Dans quelques systèmes surtout dans le passé), la permutation
de modules (swapping) d’un même programme pouvait être
gérée par l ’usager
Deux parties d’un programme qui utilisent la même zone de
mémoire
Chap. 9 21
Permutation de programmes (swapping)

Un programme, ou une partie de
programme, peut être temporairement
enlevé de mémoire pour permettre
l’exécution d’autres programmes (chap. 4)
 il est mis dans mémoire secondaire,
normal. disque
Chap. 9 22
Permutation de programmes (swapping)
Chap. 9 23
Affectation contiguë de mémoire
Chap. 9 24

Nous avons plusieurs programmes à exécuter

Nous pouvons les charger en mémoire les uns
après les autres
 le lieu où un programme est lu n’est connu
qu’au moment du chargement

Besoins de matériel: registres translation et
registres bornes

L’allocation contiguë n’est plus utilisée aujourd’hui pour la mémoire
centrale, mais les concepts que nous verrons sont encore utilisés pour
l’allocation de fichiers sur disques
Affectation contiguë de
mémoire
SE
progr. 1
progr. 2
disponible
progr. 3
Nous avons ici 4 partitions pour des
programmes - chacun est chargé dans une
seule zone de mémoire
Chap. 9 25
Registres bornes (ou limites) et translation dans
MMU
adresse de base
de la partition où
le progr
. en éxec.
se trouve
adresse limite de
la partition o
ù le
progr
. en éxec. se
trouve
Chap. 9 26
Fragmentation: mémoire non utilisée
Chap. 9 27

Un problème majeur dans l`affectation
contiguë:
Il y a assez d ’espace pour exécuter un
programme, mais il est fragmenté de façon
non contiguë
 externe: l`espace inutilisé est entre partitions
 interne: l ’espace inutilisé est dans les
partitions
Chap. 9 8
2
Partitions fixes

Mémoire principale
subdivisée en régions
distinctes: partitions

Les partitions sont soit
de même taille ou de
tailles inégales

N’importe quel progr.
peut être affecté à une
partition qui soit
suffisamment grande
(Stallings)
Chap. 9 9
2
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
(Stallings)
Chap. 9 0
3
Algorithme de placement
pour partitions fixes

Partitions de tailles
inégales: utilisation
d’une seule file
 On choisit la plus
petite partition libre
pouvant contenir le
prochain processus
 le niveau de
multiprogrammation
augmente au profit de
la fragmentation
interne
(Stallings)
Partitions
fixes
Chap. 9 31

Simple, mais...

Inefficacité de l’utilisation de la mémoire:
tout programme, si petit soit-il, doit
occuper une partition entière. Il y a
fragmentation interne.

Les partitions à tailles inégales atténue ces
problèmes mais ils y demeurent...
Partitions dynamiques
Chap. 9 32

Partitions en nombre et tailles variables

Chaque processus est alloué exactement la
taille de mémoire requise

Probablement des trous inutilisables se
formeront dans la mémoire: c’est la
fragmentation externe
Partitions dynamiques:
exemple
(Stallings
)

(d) Il y a un trou de 64K après avoir chargé 3 processus: pas
assez d’espace pour autre processus

Si tous les proc se bloquent (p.ex. attente d’un événement), P2
peut être permuté et P4=128K peut être chargé.
Swapped out
Chap. 9 33
34

(e-f) Progr. 2 est suspendu, Progr. 4 est chargé. Un trou de 224-128=96K est créé
(fragmentation externe)

(g-h) P1 se termine ou il est suspendu, P2 est repris à sa place: produisant un autre
trou de 320-224=96K...

Nous avons 3 trous petits et probabl. inutiles. 96+96+64=256K de fragmentation
externe
Chap. 9COMPRESSION pour en faire un seul trou de 256K
Partitions dynamiques: exemple (Stallings)
Algorithmes
de Placement

pour décider de
l’emplacement du prochain
processus

But: réduire l’utilisation de la
compression (prend du
temps...)

Choix possibles:
 Best fit: choisir le plus
petit trou (meilleur accès)
 Worst fit: le plus grand
(pire accès)
 First-fit: choisir 1er trou à
partir du début (premier
accès)
 Next-fit: choisir 1er trou
à partir du dernier
placement (prochain accès) (Stallings)
Chap. 9 35
Algorithmes de placement: commentaires
Chap. 9 36

Quel est le meilleur?
 critère principal: diminuer la probabilité de situations
où un processus ne peut pas être servi, même s ’il y a
assez de mémoire...

Best-fit: cherche le plus petit bloc possible: le trou créé
est le plus petit possible
 la mémoire se remplit de trous trop petits pour
contenir un programme

Worst-fit: le trous crées seront les plus grands
possibles

Next-fit: les allocations se feront souvent à la
fin de la
mémoire

La simulation montre qu` il ne vaut pas la peine d ’utiliser
les algo les plus complexes... donc first fit
Suspension (v. chap 4)

Lorsque tous les programmes en mémoire
sont bloqués, le SE peut en suspendre un
(swap/suspend)
On transfère au disque un des processus
bloqués (en le mettant ainsi en état
suspended) et le remplacer par un
processus prêt à être exécuté
 ce dernier processus exécute une
transition d’état Nouveau ou Suspendu à
état Ready
Chap. 9 37
Compression (compaction)
Chap. 9 38

Une solution pour la fragmentation externe

Les programmes sont déplacés en mémoire de
façon à réduire à 1 seul grand trou plusieurs
petits trous disponibles

Effectuée quand un programme qui demande
d’être exécuté ne trouve pas une partition assez
grande, mais sa taille est plus petite que la
fragmentation externe existante

Désavantages:
 temps de transfert programmes
 besoin de rétablir tous les liens entre adresses
de différents programmes
Système de «groupe de paires » (buddy
systems):
Chap. 9 39
une approche complètement différente (Unix, Linux, sect.
21.6.1)

Débutons avec un seul gros block de taille 2U

Sur une requête pour un block de taille S:
 Si 2U-1 < S <= 2U alors allouer le block entier de taille 2U
 Sinon, partager ce block en deux compagnons
(buddies), chacun de taille 2U-1
 Si 2U-2 < S <= 2U-1 alors allouer un des deux
compagnons
 Sinon diviser un de ces 2 compagnons

Le processus est répété jusqu’à ce que le plus petit block
pouvant contenir S soit généré

Deux compagnons sont fusionnés lorsqu’ils deviennent
tous deux non alloués
Exemple d’un “Groupe de paires” (Stallings)
Chap. 9 40
Système de groupes de paires (Buddy system)
Chap. 9 41

Le SE maintient plusieurs listes de trous
la i-liste est la liste des trous de taille 2i
lorsqu’une paire de compagnons se
trouvent dans une i-liste, ils sont enlevés
de cette liste et deviennent un seul trou de
la (i+1)-liste

Sur une requête pour une allocation d’un
block de taille k tel que 2i-1 < k <= 2i:
on examine d’abord la i-liste
si elle est vide, on tente de trouver un trou
dans la (i+1)-liste, si trouvé, il sera divisé en
2
Comment trouver le compagnon
Chap. 9 42

Étant donné
 L’adresse binaire d’un bloc
 La longueur du bloc
 Comment trouver son compagnon

Si la longueur du bloc est 2n
 Si le bit n de l’adresse est 0, changer à 1
(compagnon est à droite)
 Si le bit n de l’adresse est 1, changer à 0
(compagnon est à gauche)

Exemples:
 011011110000 longueur 100: 011011110100
 011011110000 longueur 10000: 011011100000

(Compter les bits à partir de la droite et de 0)
Groupes de paires: remarques
Chap. 9 43

En moyenne, la fragmentation interne est de 25%
par processus
 en moyenne pour chaque proc nous aurons
une partition pleine de la grandeur d`une
puissance de deux, plus une utilisée à moitié
 + il pourra y avoir aussi des blocs non utilisés
s’il n’y a pas de programmes en attente
pouvant les utiliser.

Pas besoin de compression
 simplifie la gestion de la mémoire
Allocation non contiguë
Chap. 9 44

A fin de réduire la fragmentation, tous les ordis
d’aujourd’hui utilisent l’allocation non contiguë
 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

Il y a deux techniques de base pour faire ceci: la pagination
et la segmentation
 la segmentation utilise des parties de programme qui ont
une valeur logique (des modules)
 la pagination utilise des parties de programme
arbitraires (morcellement du programmes en pages de
longueur fixe).
 elles peuvent être combinées

Je trouve que la segmentation est plus naturelle, donc
je commence par celle-ci
Chap. 9 45
Les segments sont des parties logiques du progr.
A
Progr.
Princ.
B
Données
D
Sous-
progr.
C
Données
JUMP(D, 100)
LOAD(C,250)
LOAD(B,50)
4 segments: A, B, C,
Les segments comme unités d’alloc
mémoire
0
2
1
3
0
3
1
2
espace usager mémoire physique
Étant donné que les segments sont plus petits que les programmes
entiers, cette technique implique moins de fragmentation (qui est
externe dans ce cas)
Chap. 9 46
Mécanisme pour la
segmentation

Un tableau contient l’adresse de début de tous les segments dans un
processus

Chaque adresse dans un segment est ajoutée à l ’adresse de début du
segment par la MMU
0
3
1
2
Adr de 3
Adr de 2
Adr de 1
Adr de 0
segment courant
Tableau de
descripteurs de
segments
m
Chap. 9 47
Détail
s
Chap. 9 48

L’adresse logique consiste d ’une paire:
<No de segm, décalage>
où décalage est l ’adresse dans le segment

Le tableau des segments contient: descripteurs de
segments
 adresse de base
 longueur du segment
 Infos de protection, on verra…

Dans le PCB du processus il y aura un pointeur à
l ’adresse en mémoire du tableau des segments

Il y aura aussi là dedans le nombre de segments
dans le processus

Au moment de la commutation de contexte, ces
infos seront chargées dans les registres
appropriés d’UCT
Chap. 9 49
1 seule copie en
mémoire du segm
Traduction d`adresses dans la
segmentation
(figure de Stallings: légère diff. par rapport à la terminologie de
Silberschatz)
Aussi, si d > longueur:
Chap. 9 50
Le mécanisme en détail (implanté dans le
matériel)
Stallings Adresse
Chap. 9 51
Dans le
programme
Chap. 9 52
Partage de segments: le segment 0 est
partagé
P
.ex: Programme Word utilisé pour éditer
différents
documents
DLL utilisé par plus
Mécanisme pour 2 processus qui exécutent un seul
programme sur données différentes
La même instruction, si elle est exécutée
 par le proc 1, son adresse est modifiée par le contenu du
registre 1
par le proc 2, son adresse est modif par le contenu du
registre 2 Ceci fonctionne même si l’instruction est exécutée par
plus. UCT au même instant, si les registres se trouvent dans des
Programme
Données
proc 1
Données
proc 2
Instruction
R1
Chap. 9 53
R2
+
+
Segmentation et protection
Chap. 9 54

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èsinterruption
 ces infos peuvent donc varier d
’usager à usager, par rapport au même
segment!
limite base read, write,
execute?
Évaluation de la segmentation simple
Chap. 9 55

Avantages: l’unité d’allocation de mémoire est
 plus petite que le programme entier
 une entité logique connue par le programmeur
 les segments peuvent changer de place en mémoire
 la protection et le partage de segments sont aisés
(en principe)

Désavantage: le problème des partitions
dynamiques:
 La fragmentation externe n’est pas éliminée:
 trous en mémoire, compression?

Une autre solution est d`essayer à simplifier le mécanisme
en utilisant unités d`allocation mémoire de tailles égales
 PAGINATION
Segmentation contre pagination
Chap. 9 56

Le pb avec la segmentation est que l’unité
d’allocation de mémoire (le segment) est
de longueur variable

La pagination utilise des unités
d’allocation de mémoire fixe, éliminant
donc ce pb
Pagination simple
Chap. 9 57

La mémoire est partitionnée en petits morceaux de
même taille: les pages physiques ou ‘cadres’ ou
‘frames’

Chaque processus est aussi partitionné en petits
morceaux de même taille appelés pages (logiques)

Les pages logiques d’un processus peuvent donc être
assignés aux cadres disponibles n’importe où en
mémoire principale

Conséquences:
 un processus peut être éparpillé n’importe où
dans la mémoire physique.
 la fragmentation externe est éliminée
Exemple de chargement de processus
Chap. 9 58

Supposons que le processus B se termine ou
est suspendu Stallings
Exemple de chargement de processus
(Stallings)

Nous pouvons maintenant
transférer en mémoire un
progr. D, qui demande 5
cadres
 bien qu`il n’y ait pas
5 cadres
contigus disponibles

La fragmentation externe
est limitée au cas que le
nombre de pages
disponibles n’est pas
suffisant pour exécuter un
programme en attente

Seule la dernière page d’un
progr peut souffrir de
fragmentation interne
(moy. 1/2 cadre par proc)
Chap. 9 59
Tableaux de pages
Les entrées dans le tableau
de pages sont aussi
appelées descripteurs de
pages
Chap. 9 60
Tableaux de
pages

Le SE doit maintenir une table de pages pour chaque
processus

Chaque descripteur de pages contient le numéro de cadre
où la page correspondante est physiquement localisée

Une table de pages est indexée par le numéro de la page
afin d’obtenir le numéro du cadre

Une liste de cadres disponibles est également
maintenue
(free frame list)
Stallings
Chap. 9 61
Traduction
d’adresses

L’adresse logique est facilement traduite
en adresse physique
 car la taille des pages est une
puissance de 2
 les pages débutent toujours à des
adresses qui sont puissances de 2
 qui ont autant de 0s à droite que la
longueur de l’offset
 donc ces 0s sont remplacés par
l’offset

Ex: si 16 bits sont utilisés pour les
adresses et que la taille d’une page = 1K:
on a besoins de 10 bits pour le décalage,
laissant ainsi 6 bits pour le numéro de
page

L’adresse logique (n,m) est traduite à
l ’adresse physique (k,m) en utilisant n
comme index sur la table des pages et
en le remplaçant par l ’adresse k trouvée
 m ne change pas
Stalling6
Chap. 9
Mécanisme: matériel
Chap. 9 63
Traduction d’adresse (logique-physique) pour
la pagination
Stallings
Chap. 9 64
Trad. d’adresses: segmentation et pagination
Chap. 9 65

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.

Cependant, dans la pagination, l’addition peut être
faite par simple concaténation:
11010000+1010
=
1101 1010
Deux petits problèmes
Chap. 9 66
A) Considérez un système de 4 cadres ou pages physiques, chacune de 4
octets. Les adresses sont de 4 bits, deux pour le numéro de page, et 2 pour
le décalage. Le tableau de pages du processus couramment en exécution
est:
Numéro
de page
Numéro
de cadre
00 11
01 10
10 01
11 00
.
Considérez l'adresse logique 1010. Quelle sera l'adresse
physique correspondante?
B) Considérez maintenant un système de segmentation, pas de
pagination. Le tableau des segments du processus en exécution est
comme suit:
Segmen
t
number
Base
00 110
01 100
10 000
Considérez l'adresse logique (no de seg, décalage)= (01, 01) , quelle
est l'adresse physique?
Adresse logique (pagination)
Chap. 9 67

Les pages sont invisibles au programmeur,
compilateur ou assembleur (seule les adresses
relatives sont employées)

Un programme peut être exécuté sur
différents matériels employant dimensions de
pages différentes
 Ce qui change est la manière dont l’adresse est
découpée
Problèmes d’efficacité
Chap. 9 68

La traduction d`adresses, y compris la recherche
des adresses des pages et de segments, est
exécutée par des mécanismes de matériel

Cependant, si la table des pages est en mémoire
principale, chaque adresse logique occasionne au
moins 2 références à la mémoire
 Une pour lire l’entrée de la table de pages
 L’autre pour lire le mot référencé

Le temps d`accès mémoire est doublé...
Pour améliorer l`efficacité
Chap. 9 69

Où mettre les tables des pages (les mêmes idées
s ’appliquent aussi aux tabl. de segm)

Solution 1: dans des registres de UCT.
 avantage: vitesse
 désavantage: nombre limité de pages par proc., la
taille de la mém. logique est limitée

Solution 2: en mémoire principale
 avantage: taille de la mém. logique illimitée
 désavantage: mentionné

Solution 3 (mixte): les tableaux de pages sont en
mémoire principale, mais les adresses les plus
utilisées sont aussi dans des registres d`UCT.
Chap. 9 v. Content-addressable memory dans Wikipedia
Régistres associatifs
TLB
TLB: Translation Lookaside Buffers, ou caches d’adressage

Recherche parallèle d ’une adresse:
 l ’adresse recherchée est cherchée dans la
partie gauche de la table en parallèle (matériel
spécial)

Traduction page  cadre
 Si la page recherchée a été utilisée récemment elle
se trouvera dans les registres associatifs
 recherche rapide
3 15
7 19
0 17
2 23
No Page No
Cadre
Recherche associative dans TLB
Chap. 9 71

Le TLB est un petit tableau de registres de
matériel où chaque ligne contient une paire:
 Numéro de page logique, Numéro de cadre

Le TLB utilise du matériel de mémoire
associative: interrogation simultanée de tous les
numéros logiques pour trouver le numéro
physique recherché

Chaque paire dans le TLB est fournie d ’un
indice de référence pour savoir si cette paire a
été utilisée récemment. Sinon, elle est
remplacée par la dernière paire dont on a besoin
Translation Lookaside Buffer (TLB)
Chap. 9 72

Sur réception d’une adresse logique, le processeur
examine le cache TLB

Si cette entrée de page y est , le numéro de cadre
en est extrait

Sinon, le numéro de page indexe la table de page
du processus (en mémoire)
 Cette nouvelle entrée de page est mise dans le TLB
 Elle remplace une autre pas récemment utilisée

Le TLB est vidé quand l’UCT change de proc

Les premières trois opérations sont faites par matériel
Schéma d’utilisation TLB
Dans
l’UCT
En mémoire
Dans le cas de ‘miss’, f est trouvé en mémoire, puis il es mis
dans le TLB
Chap. 9 73
7
Temps d’accès réel avec TLB

Recherche dans TLB =  unités de temps (normalement petit)

Supposons que le cycle de mémoire soit 1 microseconde

 = probabilité de touches (hit ratio) = probabilité qu’un numéro
de page soit trouvé dans les registres associatifs (quantité entre 0 et 1)
 ceci est en relation avec le nombre de registres associatifs disponibles

Temps effectif d’accès tea:
tea = (1 + )  + (2 + )(1 – )
= 2 +  – 
si  est près de 1 et  est petit, ce temps sera près de 1.

Dans plusieurs ordinateurs, il y a simultanéité entre ces opérations
et d’autres opérations de l’UCT donc le temps d’accès réel est plus
favorable

Généralisation de la formule prenant m comme temps d’accès à la mémoire
centrale: tea = (m+ )  + (2m+ )(1- ) = m  +  + 2m - 2m  +  -
 =
= 2m +  -m 
Cette formule peut être utilisée de différentes manières,
p.ex. étant connu un tea désiré, déterminer  nécessaire
Chap. 9
Tableaux de pages à deux niveaux
(quand les tableaux de pages sont très grands, ils peuvent être eux mêmes
paginés)
tableau de pages du
tableau de pages
Chap. 9 75
Tableaux de pages à deux niveaux

La partie de l ’adresse qui appartient au numéro
de page est elle-même divisée en 2
Chap. 9 76
Partage de pages:
3 proc. partageant un éditeur, sur des données privées à chaque
proc
1 seule copie de
l’éditeur en mémoire
au lieu de 3
Chap. 9 77
Segmentation simple vs Pagination
simple
Chap. 9 78

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
Pagination et segmentation combinées
Chap. 9 79

Les programmes sont divisés en segments
et les segments sont paginés

Donc chaque adresse de segment n`est
pas une adresse de mémoire, mais une
adresse au tableau de pages du segment

Les tableaux de segments et de pages
peuvent être eux-mêmes paginés
Méthode inventée pour le système Multics
de l’MIT, approx. 1965.
Adressage (sans considérer la pagination des tableaux
de pages et de segments)
segment table base
register: un registre de
l`UCT
s p d’
d
Chap. 9 80
Segmentation et pagination combinées avec
pagination des tableaux de pages et segments
Chap. 9 81
Utilisation de Translation Lookaside Buffer
Chap. 9 82

Dans le cas de systèmes de pagination à
plusieurs niveaux, l’utilisation de TLB
devient encore plus importante pour éviter
multiples accès en mémoire pour calculer
une adresse physique

Les adresses les plus récemment
utilisées sont trouvées directement dans la
TLB.
Conclusions sur Gestion Mémoire
Chap. 9 83

Problèmes de:
 fragmentation (interne et externe)
 complexité et efficacité des algorithmes

Méthodes
 Allocation contiguë
 Partitions fixes
 Partitions variables
 Groupes de paires
 Pagination
 Segmentation

Problèmes en pagination et segmentation:
 taille des tableaux de segments et pages
 pagination de ces tableaux
 efficacité fournie par Translation Lookaside Buffer

Les différentes méthodes décrites dans ce chapitre, et dans le
chapitre suivant, sont souvent utilisées conjointement, donnant
lieu a des systèmes complexes
Recapitulation sur la fragmentation
Chap. 9 84

Partition fixes: fragmentation interne car les partitions ne
peuvent pas être complèt. utilisées + fragm. externe s`il y
a des partitions non utilisées

Partitions dynamiques: fragmentation externe qui conduit
au besoin de compression.

Paires: fragmentation interne de 25% pour chaque
processus + fragm. externe s ’il y a des partit. non utilisées

Segmentation sans pagination: pas de fragmentation
interne, mais fragmentation externe à cause de segments
de longueur différentes, stockés de façon contiguë (comme
dans les partitions dynamiques)

Pagination:
 en moyenne, 1/2 cadre de fragm. interne par processus
 dans le cas de mémoire virtuelle, aucune
fragmentation externe (v. chap suivant)

Donc la pagination avec mémoire virtuelle offre la meilleure
solution au pb de la fragmentation
Par rapport au livre
Chap. 9 85

Tout à l’exception de la section 9.4.4
(tables de pages inversées)
DLL http://www.webopedia.com/TERM/D/DLL.html
Chap. 9 86

Short for Dynamic Link Library, a library of executable functions or data
that can be used by a Windows application. Typically, a DLL provides one
or more particular functions and a program accesses the functions by
creating either a static or dynamic link to the DLL. A static link remains
constant during program execution while a dynamic link is created by the
program as needed. DLLs can also contain just data. DLL files usually end
with the extension .dll,.exe., drv, or .fon.

A DLL can be used by several applications at the same time. Some DLLs
are provided with the Windows operating system and available for any
Windows application. Other DLLs are written for a particular application
and are loaded with the application. Short for Dynamic Link Library, a
library of executable functions or data that can be used by a Windows
application. Typically, a DLL provides one or more particular functions and
a program accesses the functions by creating either a static or dynamic link
to the DLL. A static link remains constant during program execution while a
dynamic link is created by the program as needed. DLLs can also contain
just data. DLL files usually end with the extension .dll,.exe., drv, or .fon.

A DLL can be used by several applications at the same time. Some DLLs
are provided with the Windows operating system and available for any
Windows application. Other DLLs are written for a particular application
and are loaded with the application.
Chap 10 1
Chapitre
10
Mémoire virtuelle
http://w3.uqo.ca/lui
gi
Mémoire Virtuelle
Chap 10 2

Pagination sur demande

Problèmes de performance

Remplacement de pages: algorithmes

Allocation de cadres de mémoire

Emballement

Ensemble de travail
Concepts importants du Chap. 10
Chap 10 3

Localité des références

Mémoire virtuelle implémentée par va-et-vient des pages,
mécanismes, défauts de pages

Adresses physiques et adresses logiques

Temps moyen d’accès à la mémoire
 Récriture ou non de pages sur mém secondaire

Algorithmes de remplacement pages:
 OPT, LRU, FIFO, Horloge
 Fonctionnement, comparaison

Écroulement, causes

Ensemble de travail (working set)

Relation entre la mémoire allouée à un proc et le nombre
d’interruptions

Relation entre la dimension de pages et le nombre
d’interruptions

Prépagination, post-nettoyage

Effets de l’organisation d’un programme sur l’efficacité de la
pagination
Chap 10 4
La mémoire virtuelle est une application du
concept de hiérarchie de mémoire

C’est intéressant de savoir que des
concepts très semblables s’appliquent
aux mécanismes de la mémoire cache
Cependant dans ce cas les mécanismes
sont surtout de matériel
magnetic
tapes
optical disk
magnetic disk
electronic disk
cache
main m e m o ry
registers
Mécanismes cache
Méc. mém. virtuelle
RAM
(flash)
La mémoire virtuelle
Chap 10 5

À fin qu’un programme soit exécuté, il ne doit pas
nécessairement être tout en mémoire centrale!

Seulement les parties qui sont en exécution ont
besoin d’être en mémoire centrale

Les autres parties peuvent être sur mém
secondaire (p.ex. disque), prêtes à être amenées
en mémoire centrale sur demande
 Mécanisme de va-et-vient ou swapping

Ceci rend possible l’exécution de programmes
beaucoup plus grands que la mémoire physique
 Réalisant une mémoire virtuelle qui est plus grande
que la mémoire physique
De la pagination et segmentation à la mémoire
virtuelle
 Mécanisme de va-et-vien ou
Chap 10 6

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émoire
virtuelle:
résultat d’un mécanisme qui combine
la mémoire principale et les mémoires
secondaires
Tableau de
pages
Chap 10 7
Localité et mémoire
virtuelle
Chap 10 8

Principe de localité des références: les
références à la mémoire dans un processus
tendent à se regrouper

Donc: seule quelques pièces d’un processus
seront utilisées durant une petite période de
temps (pièces: pages ou segments)

Il y a une bonne chance de “deviner” quelles
seront les pièces demandées dans un avenir
rapproché
Visualisation de la localité des références
Chap 10 9
Pages en RAM ou sur disque
Page A en RAM et
sur disque
Chap 10 10
Page E seulement
sur disque
Nouveau format du tableau des pages (la même idée peut
être appliquée aux tableaux de segments)
Adresse de
la page
Bit
présen
t
bit présent
1 si en mém.
princ., 0 si en
mém second.
Si la page est en mém.
princ., ceci est une adr. de
mém. Principale
sinon elle est une adresse
de mémoire secondaire
Au début, bit présent = 0 pour toutes les
pages
Chap 10 11
Avantages du chargement
partiel
Chap 10 12

Plus de processus peuvent être maintenus en exécution en
mémoire
 Car seules quelques pièces sont chargées pour chaque
processus
 L’usager est content, car il peut exécuter plusieurs
processus et faire référence à des gros données sans avoir
peur de remplir la mémoire centrale
 Avec plus de processus en mémoire principale, il est plus
probable d’avoir un processus dans l’état prêt, meilleure
utilisation d’UCT

Plusieurs pages ou segments rarement utilisés n’auront peut être
pas besoin d`être chargés du tout

Il est maintenant possible d’exécuter un ensemble de processus
lorsque leur taille excède celle de la mémoire principale
 Il est possible d’utiliser plus de bits pour l’adresse logique
que le nombre de bits requis pour adresser la mémoire
principale
 Espace d ’adressage logique >> esp. d ’adressage physique
Mémoire Virtuelle: Pourrait Être Énorme!
Chap 10 13

Ex: 16 bits sont nécessaires pour adresser une mémoire
physique 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, car toutes les pages ne
doivent pas ê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
 Dans quelques architectures, ces bits peuvent être inclus dans
des registres

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
Mémoire Virtuelle
Chap 10 14

Pour une meilleure performance, la mémoire
virtuelle se trouve souvent dans une région du
disque qui est n’est pas gérée par le système
de fichiers
 Mémoire va-et-vient, swap memory

La mémoire physique est celle qui est référencée
par une adresse physique
 Se trouve dans le RAM et cache

La traduction de l’adresse logique en adresse
physique est effectuée en utilisant les
mécanismes étudiés dans le chapitre précédent.
Mémoire virtuelle: le mécanisme de va-et-vient
Tableau de
pages
Chap 10 15
Exécution d’un Processus
Chap 10 16

Le SE charge la mémoire principale de quelques
pièces (seulement) du programme (incluant le point
de départ)

Chaque entrée de la table de pages (ou segments)
possède un bit présent qui indique si la page ou
segment se trouve en mémoire principale

L’ensemble résident (résident set) est la portion du
processus se trouvant en mémoire principale

Une interruption est générée lorsque
l’adresse logique réfère à une pièce qui n’est
pas dans l’ensemble résident
 défaut de pagination, page fault
Exécution d’une défaut de page: va-et-vient plus en
détail
Mémoir
e
virtuell
e
Chap 10 17
Séquence d’événements pour défaut de page
Chap 10 18

Trappe au SE: page demandée pas en RAM

Sauvegarder registres et état du proc dans PCB

Un autre proc peut maintenant gagner l ’UCT

SE détermine si la page demandée est légale
 sinon: terminaison du processus

et trouve la position de la page sur disque
 dans le descripteur de la page

lire la page de disque dans un cadre de mémoire
libre (supposons qu`il y en a!)
 exécuter les ops disque nécessaires pour lire la
page
Séquence d’événements pour défaut de page
(ctn.)
Chap 10 19

L ’unité disque a complété le transfert et
interrompt l’UCT
 sauvegarder les registres etc. du proc
exécutant

SE met à jour le contenu du tableau des pages du
proc. qui a causé le défaut de page

Ce processus devient prêt=ready

À un certain point, il retournera à exécuter
 la page désirée étant en mémoire, il pourra
maintenant continuer
Chap 10 20
Temps moyen d’accès à la
mémoire
Supposons que:
• accès en mémoire: 100 nanosecs
•temps de traitement de défaut de page: 25 millisecs =
25,000,000 nanosecs (inclut le temps de lecture-écriture disque)
• p: probabilité de trouver une page en mémoire (défaut)
(quantité entre 0 et 1)
Temps moyen d’accès mémoire:
p x 100 + (1-p) x 25,000,000 (pas de défaut +
défaut)
En utilisant la même formule, nous pouvons déterminer quel
est le nombre de défauts que nous pouvons tolérer
, si un
certain niveau deperformance est désiré (v. manuel).
P
.ex. avec ces params, si le ralentissement à cause de
pagination nepeut pas excéder 10%, 1 seul défaut de
pagination peut être toléré pour chaque 2,500,000 accès de
aujourd’hui= autour de
10ms)
Quand la RAM est pleine mais nous avons
besoin d`une page pas en RAM
Chap 10 21
La page victime...
Chap 10 22
Remplacement de pages
Chap 10 23

Quoi faire si un processus demande une nouvelle
page et il n’y a pas de cadres libres en RAM?

Il faudra choisir une page déjà en mémoire
principale, appartenant au même ou à un autre
processus, qu’il est possible d ’enlever de la
mémoire principale
 la victime!

Un cadre de mémoire sera donc rendu
disponible

Évidemment, plusieurs cadres de mémoire ne
peuvent pas être `victimisés`:
 p.ex. cadres contenant le noyau du SE,
tampons d ’E/S...
Bit de modification , dirty
bit
Chap 10 24

La ‘victime’ doit-elle être récrite en
mémoire secondaire?

Seulement si elle a été changée depuis
qu`elle a été amenée en mémoire principale
sinon, sa copie sur disque est encore fidèle

Bit de modif sur chaque descripteur
de page indique si la page a été
changée

Donc pour calculer le coût en temps d’une
référence à la mémoire il faut aussi
considérer la probabilité qu’une page soit
‘sale’ et le temps de récriture dans ce cas
Algorithmes de remplacement pages
Chap 10 25

Choisir la victime de façon à minimiser le
taux de défaut de pages
pas évident!!!

Page dont nous n`aurons pas besoin dans
le futur? impossible à savoir!

Page pas souvent utilisée?

Page qui a été déjà longtemps en
mémoire??

etc. nous verrons...
Critères d’évaluation des algorithmes
Chap 10 26

Les algorithmes de choix de pages à
remplacer doivent être conçus de façon à
minimiser le taux de défaut de pages à
long terme

Mais ils ne peuvent pas impliquer des
inefficacités

Ni l’utilisation de matériel
dispendieux
Critères d’efficacité
Chap 10 27

Il est intolérable d’exécuter un algorithme
complexe chaque fois qu’une opération de
mémoire est exécutée
Ceci impliquerait des accès additionnels
de mémoire

Cependant ceci peut se faire chaque fois
qu’il y a une faute de pagination

Les opérations qui doivent être faites à
chaque accès de mémoire doivent être
câblées dans le matériel
Explication et évaluation des algorithmes
Chap 10 28

Nous allons expliquer et évaluer les algorithmes
en utilisant la chaîne de référence pages suivante
(prise du livre de Stallings):
2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2

Attention: les séquences d’utilisation pages ne
sont pas aléatoires...
 Localité de référence

Ces références proviendront de plusieurs
processus

L’évaluation sera faite sur la base de cet exemple,
évidemment pas suffisant pour en tirer des
conclusions générales
Algorithmes pour la politique de
remplacement
Chap 10 29

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) mais sert de norme de comparaison
pour les autres algorithmes:
 Ordre chronologique d’utilisation (LRU)
 Ordre chronologique de chargement (FIFO)
 Deuxième chance ou Horloge (Clock)

Ordre chronologique d’utilisation (LRU)

Remplace la page dont la dernière
référence remonte au temps le plus lointain
(le passé utilisé pour prédire le futur)
En raison de la localité des références, il
s’agit de la page qui a le moins de
chanStcalleings d’être référencée
performance presque aussi bonne
que l’algo. OPT
Chap 10 30
Algorithmes pour la politique de
remplacement
Comparaison OPT-LRU
hap
C Stalling 31

Exemple: Un processus de 5 pages s’ìl n`y
a que 3 pages physiques disponibles.

Dans cet exemple, OPT occasionne 3+3
défauts, LRU 3+4.
Note sur le comptage des défauts de page
Chap 10 32

Lorsque la mémoire principale est vide,
chaque nouvelle page que nous ajoutons
est le résultat d’un défaut de page

Mais pour mieux comparer les algorithmes,
il est utile de garder séparés ces défauts
initiaux
car leur nombre est le même pour tous
les algorithmes
Implémentation problématique de LRU
Chap 10 33

Chaque page peut être marquée (dans le
descripteur dans la table de pages) du temps de la
dernière référence:
 besoin de matériel supplémentaire.

La page LRU est celle avec la + petite valeur de
temps (nécessité d’une recherche à chaque défaut
de page)

On pourrait penser à utiliser une liste de pages
dans l’ordre d ’utilisation: perte de temps à
maintenir et consulter cette liste (elle change à
chaque référence de mémoire!)

D’autres algorithmes sont utilisés:
 LRU approximations
Premier arrivé, premier sorti (FIFO)
Chap 10 34

Logique: une page qui a été longtemps en
mémoire a eu sa chance d ’exécuter

Lorsque la mémoire est pleine, la plus
vieille page est remplacée. Donc: “first-in,
first-out”

Simple à mettre en application

Mais: Une page fréquemment utilisée est
souvent la plus vielle, elle sera remplacée
par FIFO!
Comparaison de FIFO avec LRU (Stallings)

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
Chap 10 35
Implantation de FIFO
Chap 10 36

Facilement implantable en utilisant un
tampon circulaire 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)
Problème conceptuel avec FIFO
Chap 10 37

Les premières pages amenées en mémoire
sont souvent utiles pendant toute
l’exécution d’un processus!
variables globales, programme principal,
etc.

Ce qui montre un problème avec notre
façon de comparer les méthodes sur la
base d ’une séquence aléatoire:
les références aux pages dans un
programme réel ne seront pas vraiment
aléatoires
L’algorithme de l’horloge (deuxième
chance)
Chap 10 38

Semblable à FIFO, mais il tient compte de l’utilisation
récente de pages
 La structure à liste circulaire est celle de FIFO

Mais les cadres qui viennent d’être utilisés (bit=1) ne sont
pas remplacées (deuxième chance)
 Les cadres forment conceptuellement un tampon circulaire
 Lorsqu’une page est chargée dans un cadre, un pointeur
pointe sur le prochain cadre du tampon

Pour chaque cadre du tampon, un bit “utilisé” est mis à 1 (par
le matériel) lorsque:
 une page y est nouvellement chargée
 sa page est utilisée

Le prochain cadre du tampon à être remplacé sera le
premier rencontré qui aura son bit “utilisé” = 0.
 Durant cette recherche, tout bit “utilisé” = 1 rencontré sera
mis à 0
39
La page 727 est chargée dans le cadre 4.
La proch. victime est 5, puis 8.
Chap 10
Algorithme de l’horloge: un exemple (Stallings).
Chap 10 40
Comparaison: Horloge, FIFO et LRU (Stallings)

Astérisque indique que le bit utilisé est 1

L’horloge protège du remplacement les pages
fréquemment utilisées en mettant à 1 le bit “utilisé” à
chaque référence

LRU = 3+4, FIFO = 3+6, Horloge =
Détail sur le fonctionnement de l’horloge
Tous les bits étaient à 1. Nous avons
fait tout le tour et donc nous avons
changé le bit de toutes les pages à 0.
Donc la 1ère page est réutilisée
Chap 10 41
Matériel additionnel pour l’algo CLOCK
Chap 10 42

Chaque bloc de mémoire a
un bit ‘touché’ (use)

Quand le contenu du bloc
est utilisé, le bit est mis à 1
par le matériel

Le SE regarde le bit
 S’il est 0, la page peut
être remplacée
 S’il est 1, il le met à 0
1
0
0
0
1
Mémoir
e
Résumé des algorithmes le plus importants
Chap 10 43
OPTIMAL Le meilleur en principe mais pas
implantable, utilisé comme référence
LRU Excellent en principe, mais demande du
matériel dispendieux
FIFO Facile à implanter, mais peut écarter
des pages très utilisées
Horloge Modification de FIFO vers LRU:
évite d’écarter des pages récemment
utilisées
Les algorithmes utilisés en pratique sont des
variations et combinaisons de ces concepts
Algorithmes compteurs
Chap 10 44

Garder un compteur pour les références à chaque
page

LFU: Least Frequently Used: remplacer la pages
avec le plus petit compteur

MFU: Most Frequently Used: remplacer les pages
bien usées pour donner une chance aux nouvelles

Ces algorithmes sont d’implantation dispendieuse
et ne sont pas beaucoup utilisés
 Mise à jour de compteurs à chaque opération
de mémoire!
Utilisation d’une pile (stack)
Chap 10 45

Quand une page est utilisée, est mise au
sommet de la pile.
donc la page la plus récemment utilisée
est toujours au sommet,
la moins récemment utilisée est toujours
au fond

Bonne implémentation du principe de
localité, cependant…

La pile doit être mise à jour chaque fois
qu’une page est utilisée
Inefficace, pas pratique
Anomalie de Belady
Chap 10 46

Pour quelques algorithmes, dans quelques
cas il pourrait avoir plus de défauts avec
plus de mémoire!
p. ex. FIFO, mais pas LRU, OPT, CLOCK
Situation considérée normale
Chap 10 47
48
Anomalie de Belady (FIFO)
Chap 10
Cas d’intérêt + de mémoire, + de fautes (v.
Chap 10 49
Le Chapitre 10
continue…
Chap 10-2 1
Chapitre 10: 2ème
partie
Chap 10-2 2
Allocation de cadres RAM

Pour exécuter, un processus a besoin d’un nombre minimal
de cadres de mémoire RAM
 par exemple, quelques instructions pourraient avoir
besoin de plusieurs pages simultanément pour exécuter!

Il est aussi facile de voir que un proc qui reçoit très peu
de mémoire subira un nombre excessif de défauts de
pagination, donc il sera excessivement ralenti

Comment s`assurer qu’un proc soit alloué son minimum
 allocation égale: chaque processus a droit a une
portion égale de la mémoire physique
 allocation proportionnelle: chaque processus a droit à
une portion proportionnelle à sa taille
 le critère devrait plutôt être le besoin de pages: v.
working set
http://w3.uqo.ca/lui
Allocation globale ou locale
Chap 10-2 3

globale: la `victime`est prise de n`importe
quel processus

locale: la `victime`est prise du processus
qui a besoin de la page
Écroulement ou thrashing (liter.: défaite)

S ’il n`y a pas assez de mémoire pour
exécuter un proc sans trop de défauts de
pagination, le proc finira pour passer trop
de temps dans les files d`attente

Si cette situation se généralise à plusieurs
procs, l ’UCT se trouvera à être sous-
utilisée

Le SE pourra chercher de remédier à cette
situation en augmentant le niveau de
multiprogrammation
 plus de procs en mémoire!
 moins de mém par proc!
 plus de défauts de pagination!

Désastre: écroulement
 le système devient entièrement
occupé à faire des E/S de pages, il
ne réussit plus à faire de travail
utile
Chap 10-2 4
La raison de l`écroulement

Chaque processus a
besoin d ’un certain
nombre de pages pour
exécuter efficacement

Le nombre de pages
dont l’ensemble de
processus a besoin à
l’instant excède le
nombre de cadres de
mémoire RAM
disponible
 défaite du concept
de mémoire
virtuelle
Chap 10-2 5
Ensemble de travail (working set)
Chap 10-2 6

L’ensemble de travail d’un proc donné à un
moment d’exécution donné est l’ensemble
des pages dont le proc a besoin pour
exécuter sans trop de défauts de
pagination
Malheureusement, un concept flou
Chercher à prévoir les demandes de pages
sur la base des demandes passées
t1
WS(t1) = {1, 2, 5, 6, 7}


WS(t2) = {3, 4}
t2
… 2 6 1 5 7 7 7 7 5 1 6 2 3 4 1 2 3 4 4 4 3 4 3 4 4 4 1 3 2 3 4 4 4 3 4 4 4
…

Fixer un intervalle 

Les pages intéressées par les dernières 
operations de mémoire sont dans
l ’ensemble de travail déterminé par 

Comment choisir un  approprié?
Chaîne
Figure 10.16
Chap 10-2 7
Working-set model.
 =10
opér
de réf.
 = 4 donnerait le même résultat pour
t2!
Modèle de l’ensemble de
travail
Chap 10-2 8

  une fenêtre d’ensemble de travail
 = un nombre fixe de réf. de pages
 p.ex. 10.000 opérations de mémoire

SI trop petit, il contiendra pas tout l ’ensemble de pages
couramment utilisé par un proc

Si trop grand, il contiendra plusieurs ensembles de
pages
 WSSi (ensemble de travail du proc. i)
 D = ∑ WSSi nombre total de cadres demandés par tous les
procs en exéc

Si D > mémoire  Risque d’écroulement

S’assurer que ceci ne se vérifie pas
 si nécessaire, suspendre un des processus

Problème: choisir un bon 
 peut être fait par le gérant du système
Implémentation du concept de WS: difficile!
Chap 10-2 9

Minuterie et bits référence

Bit de référence qui est mis à 1 chaque fois
que une page est utilisée

Minuterie qui interrompt régulièrement
pour voir les pages qui ont été utilisées
dans un intervalle de temps
Le concept de WS en pratique
Chap 10-2 10

Deux types de difficultés:
 fixer le  de façon différente pour chaque
processus, pour représenter ses besoins

Du matériel spécial est nécessaire pour suivre le
WS d ’un proc à un moment donné
Pour chaque processus, il existe une
dimension de mémoire acceptable
Chap 10-2 11
ceci suggère une approche plus
pratique
Une méthode plus facile à implanter que WS
Chap 10-2 12

Le gérant du système détermine quelles sont les
nombres de défauts de pagination maximales et
minimales tolérables dans le système, et pour
chaque travail, selon ses caractéristiques

Si un travail en produit plus que sa juste
partie, lui donner plus de mémoire

Si un travail en produit moins, lui donner moins
de mémoire

Suspendre si possible des travaux qu`on ne peut
pas satisfaire

Ou amorcer d’autres travaux si les ressources
sont disponibles
Optimisations
Chap 10-2 13

Un grand nombre de techniques
d’optimisation ont été proposées et
implantées
Le manuel en discute plusieurs:
 Prépagination, post-nettoyage
 Stockage efficace
 Taille optimale des pages
Prépagination, post-nettoyage
Chap 10-2 14

Prépagination
 noter quelles pages paraissent être reliées les unes
aux autres
 quand une de ces pages est amenée en mémoire
RAM, y amener les autres en même temps
 ne pas amener une seule page, s’il n`y a pas assez d
’espace pour les autres
 éventuellement, stocker toutes ces pages dans des
secteurs contigus de disque, de façon qu ’elles puissent
être lues rapidement en séquence

Post-nettoyage (post-purging)
 enlever ensemble tout un groupe de pages reliées
(même localité)
Stocker les pages de façon efficace
Chap 10-2 15
Tailles de pages (un pb de conception matériel)
Chap 10-2 16

Grande variété de tailles de pages aujourd’hui
 en pratique: de 512B à 16MB

Avantages des petites pages:
 moins de fragmentation interne
 moins d’information inutile en mémoire

Avantages des grandes pages:
 tableaux de pages plus petits
 le temps de disque le plus important est le temps de
positionnement
 une fois le disque positionné, il vaut la peine de lire une grande
page

Tendance aujourd’hui vers grandes pages car nous avons des
grands RAMs
 4-8KB
Pages grandes ou
petites

Avec une petite taille
 grand nombre de pages en
mém. centrale
 chaque page contient
uniquement du code utilisé
 peu de défauts de page une
fois que toutes les pages
utiles sont chargées

En augmentant la taille
 moins de pages peuvent
être gardées dans RAM
 chaque page contient plus de
code qui n’est pas utilisé
 plus de défauts de page

Mais ils diminuent lorsque nous
approchons le point P où la taille
d’une page est celle d’un programme
entier
Stallings
Chap 10-2 17
Différentes tailles de
pages
Chap 10-2 18

Certains processeurs supportent plusieurs tailles.
Ex:
 Pentium supporte 2 tailles: 4KB ou 4MB
 R4000 supporte 7 tailles: 4KB à 16MB
 dimensions différentes peuvent être en
utilisation par des travaux différents, selon
leur caractéristiques de localité
 Travaux qui utilisent des grosses boucles et
grosses structures de données pourront utiliser
bien les grosses pages
 Des gros travaux qui ‘sautent’ un peu partout
sont dans la situation contraire
 L’UCT (ou MMU) contient un registre qui dit la
taille de page couramment utilisée
Effets de l’organisation du programme sur
l’efficacité de la pagination
Chap 10-2 19

En principe, la pagination est censée être invisible
au programmeur

Mais le programmeur peut en voir les
conséquences en termes de dégradation de
performance
 p.ex. quand il change d ’un contexte à l’autre

Le programmeur peut chercher à éviter la
dégradation en cherchant d ’augmenter la localité
des références dans son programme

En réalité, ce travail est fait normalement par le
compilateur
Effets de l’organisation du programme sur
l’efficacité de la pagination
Chap 10-2 20

Structure de programme
 Array A[1024, 1024]
 chaque ligne est stockée dans une page
différente,
 un cadre différent
 Programme 1: balayage par
colonnes: for j = 1 to 1024 do
for i = 1 to 1024 do
A[i,j] = 0;
1024 x 1024 défauts de pagination
 Programme 2: balayage par
lignes: for i = 1 to 1024 do
for j = 1 to 1024 do
A[i,j] = 0;
1024 défauts de pagination
Taille de pages et localité processus
Chap 10-2 21

Dans le cas de programmes qui exécutent
du code qui ’saute’ beaucoup, les petites
pages sont préférables (code OO est dans
cette catégorie)
Verrouillage de pages en mémoire
Chap 10-2 22

Certaines pages doivent être verrouillées
en mémoire, p.ex. celles qui contiennent le
noyau du SE

Il est aussi essentiel de verrouiller en
mémoire des pages sur lesquelles il y a
exécution d ’E/S

Ceci peut être obtenu avec un bit `verrou`
sur le cadre de mémoire
ce bit veut dire que ce cadre ne peut pas
être sélectionné comme `victime`
Systèmes en temps réel
Chap 10-2 23

Avec la mémoire virtuelle, les temps
d’exécution d’un processus deviennent
moins prévisibles
retards inattendus à cause de la
pagination

Donc les systèmes en temps réel
`durs` utilisent rarement la mémoire
virtuelle
Combinaison de techniques
Chap 10-2 24

Les SE réels utilisent les techniques que nous avons
étudiées en combinaison, e.g.
 Linux utilise le buddy system en combinaison avec la
pagination (la plus petite portion de mémoire
allouable est une page)
 d`autres systèmes utilisent les partitions fixes
avec la pagination, ce qui peut être fait de
plusieurs façons:
 diviser la mémoire réelle en partitions fixes, assigner chaque
partition à un ou plusieurs processus, puis paginer un
processus dans la partitions qui lui a été assignée
 diviser la mémoire virtuelle en partitions, assigner
chaque partition à un ou plus. processus, puis utiliser
la technique appropriée pour chaque processus dans
sa partition

Les SE réels sont complexes et variés, mais les principes
étudiés dans ce cours en constituent la base.
Conclusions 1
Chap 10-2 25

Il est fortement désirable que l`espace
d ’adressage de l ’usager puisse être beaucoup
plus grand que l ’espace d ’adressage de la
mémoire RAM

Le programmeur sera donc libéré de la
préoccupation de gérer son occupation de
mémoire
 cependant, il devra chercher à maximiser la localité
de son processus

La mémoire virtuelle aussi permet à plus de
processus d ’être en exécution
 UCT, E/S plus occupées
Conclusions 2
Chap 10-2 26

Le problème de décider la page victime
n’est pas facile.
Les meilleurs algorithmes sont impossibles
ou difficiles à implanter
Cependant en pratique l ’algorithme FIFO
est acceptable
Conclusions 3
Chap 10-2 27

Il faut s’assurer que chaque processus ait assez
de pages en mémoire physique pour exécuter
efficacement
 risque d ’écroulement

Le modèle de l’ensemble de travail exprime bien
les exigences, cependant il est difficile à implanter

Solution plus pragmatique, où on décide de
donner + ou - de mémoire aux processus selon
leur débit de défauts de pagination

À fin que ces mécanismes de gestion mémoire
soient efficaces, plusieurs types de mécanismes
sont désirables dans le matériel
Dans un système réel
Chap 10-2 28
Une lecture disque sur un PC prend approx
10ms
Donc la limite est autour de 100 fautes
de pagination par seconde
Dans un serveur avec mémoire secondaire
éléctronique (p.ex. flash memory)
le taux de pagination peut arriver à
milliers de pages par seconde
 http://bsd7.starkhome.cs.sunysb.edu/~samson
Concepts importants du Chap. 10
Chap 10-2 29

Localité des références

Mémoire virtuelle implémentée par va-et-vient des pages,
mécanismes, défauts de pages

Adresses physiques et adresses logiques

Temps moyen d’accès à la mémoire
 Récriture ou non de pages sur mém secondaire

Algorithmes de remplacement pages:
 OPT, LRU, FIFO, Horloge
 Fonctionnement, comparaison

Écroulement, causes

Ensemble de travail (working set)

Relation entre la mémoire allouée à un proc et le nombre
d’interruptions

Relation entre la dimension de pages et le nombre
d’interruptions

Prépagination, post-nettoyage

Effets de l’organisation d’un programme sur l’efficacité de la
pagination
Par rapport au manuel…
Chap 10-2 30

Section 10.6: intéressante, mais pas sujet
d’examen
Chap 11 1
Chapitre
11
Systèmes de fichiers
http://w3.uqo.ca/lui
gi/
Concepts importants du chapitre
Chap 11 2

Systèmes fichiers

Méthodes d’accès

Structures Répertoires

Protection

Structures de systèmes fichiers

Méthodes d’allocation

Gestion de l’espace libre

Implémentation de répertoires

Questions d’efficacité
Que c’est qu’un fichier
Chap 11 3

Collection nommée d’informations
apparentées, enregistrée sur un stockage
secondaire
Nature permanente

Les données qui se trouvent sur un
stockage secondaires doivent être dans un
fichier

Différents types:
Données (binaire, numérique, caractères….)
Programmes
Structures de fichiers
Chap 11 4

Aucune – séquences d’octets…

Texte: Lignes, pages, docs formatés

Source: classes, méthodes, procédures…

Etc.
Chap 11 5
Attributs d’un
fichier

Constituent les propriétés du fichiers et sont stockés dans
un fichier spécial appelé répertoire (directory). Exemples
d’attributs:
 Nom:
 pour permet aux personnes d’accéder au fichier
 Identificateur:
 Un nombre permettant au SE d’identifier le fichier
 Type:
 Ex: binaire, ou texte; lorsque le SE supporte cela
 Position:
 Indique le disque et l’adresse du fichier sur disque
 Taille:
 En bytes ou en blocs
 Protection:
 Détermine qui peut écrire, lire, exécuter…
 Date:
 pour la dernière modification, ou dernière utilisation
 Autres…
Opérations sur les fichiers: de base
Chap 11 6

Création

Écriture
 Pointeur d’écriture qui donne la position
d’écriture

Lecture
 Pointeur de lecture

Positionnement dans un fichier (temps de
recherche)

Suppression d’un fichier
 Libération d’espace

Troncature: remise de la taille à zéro tout en
conservant les attributs
Autres opérations
Chap 11 7

Ajout d’infos (p.ex. concaténation)

Rénommage

Copie
 peut être faite par rénommage: deux noms pour un
seul fichier

Ouverture d’un fichier: le fichier devient associé à
un processus qui en garde les attributs, position,
etc.

Fermeture

Ouverture et fermeture peuvent être explicites
(ops open, close)

ou implicites
Informations reliées à un fichier ouvert
Chap 11 8

Pointeurs de fichier
Pour accès séquentiel
P.ex. pour read, write

Compteur d’ouvertures

Emplacement
Types de fichiers
Chap 11 9

Certains SE utilisent l’extension du nom du fichier
pour identifier le type.
 Microsoft: Un fichier exécutable doit avoir
l’extension
.EXE, .COM, ou .BAT (sinon, le SE
refusera de l’exécuter)

Le type n’est pas défini pour certains SE
 Unix: l’extension est utilisée (et reconnue)
seulement par les applications

Pour certains SE le type est un attribut
 MAC-OS: le fichier a un attribut qui contient le nom
du programme qui l’a généré (ex: document Word
Perfect)
Types de fichiers
Chap 11 10
Chap 11 11
Structure logique des
fichiers

Le type d’un fichier spécifie sa structure
 Le SE peut alors supporter les différentes
structures correspondant aux types de fichiers
 Cela complexifie le SE mais simplifie les
applications

Généralement, un fichier est un ensemble
d’enregistrements (records)
 Chaque enregistrement est constitué d’un ensemble
de champs (fields)
 Un champ peut être numérique ou chaîne de chars.
 Les enregistrements sont de longueur fixe ou
variable (tout dépendant du type du fichier)

Mais pour Unix, MS-DOS et autres, un fichier est
simplement une suite d’octets « byte stream »
 Donc ici, 1 enregistrement = 1 octet
 C’est l’application qui interprète le contenu et
spécifie une structure
Méthodes
d’accès
Chap 11 12
Séquentielle
Indexée Séquentielle
Indexée
Directe
Méthodes d’accès: 4 de base
Chap 11 13

Séquentiel (rubans ou disques): lecture ou
écriture des enregistrements dans un ordre fixe

Indexé séquentiel (disques): accès séquentiel ou
accès direct (aléatoire) par l’utilisation d’index

Indexée: multiplicité d’index selon les besoins,
accès direct par l’index

Direct ou hachée: accès direct à travers tableau
d’hachage

Pas tous les SE supportent les méthodes
d’accès
 Quand le SE ne les supporte pas, c’est aux
librairies d’usager de les supporter
Méthodes d’accès aux fichiers
Chap 11 14

La structure logique d’un fichier détermine sa méthode
d’accès

Les SE sur les « mainframe » fournissent généralement
plusieurs méthodes d’accès
 Car ils supportent plusieurs types de fichiers

Plusieurs SE modernes (Unix, Linux, MS-DOS…) fournissent
une seule méthode d’accès (séquentielle) car les fichiers
sont tous du même type (ex: séquence d’octets)
 Mais leur méthode d’allocation de fichiers (voir + loin)
permet habituellement aux applications d’accéder aux
fichiers de différentes manières

Ex: les systèmes de gestions de bases de données
(DBMS) requièrent des méthodes d’accès plus efficaces
que juste séquentielle
 Un DBMS sur un « mainframe » peut utiliser une
structure fournie par le SE pour accès efficace aux
enregistrements.
 Un DBMS sur un SE qui ne fournit qu’un accès séquentiel
doit donc « ajouter » une structure aux fichiers de bases
de données pour accès directs plus rapides.
Chap 11 15
Fichiers à accès séquentiel (archétype: rubans)
bloc bloc
. . . . . .
La seule façon de retourner en
arrière est de retourner au début
(rébobiner, rewind)
En avant seulement, 1 seul enreg.
à la fois
. . .
enregistrements
Lecture physique et lecture logique dans un
fichier séquentiel
Chap 11 16

Un fichier séquentiel consiste en blocs d’octets enregistrés sur un
support tel que ruban, disque…

La dimension de ces blocs est dictée par les caractéristiques du
support

Ces blocs sont lus (lecture physique) dans un tampon en
mémoire

Un bloc contient un certain nombre d’enregistrements (records) qui
sont des unités d’information logiques pour l’application (un
étudiant, un client, un produit…)
 Souvent de longueur et contenu uniformes
 Triés par une clé, normalement un code (code d’étudiant,
numéro produit…)

Une lecture dans un programme lit le prochain enregistrement

Cette lecture peut être réalisée par
 La simple mise à jour d’un pointeur si la lecture logique
précédente ne s’était pas rendue à la fin du tampon
 la lecture du proch. bloc (dans un tampon d’E/S en
mémoire) si la lecture logique précédente s’était rendue à la
fin du tampon
 Dans ce cas le pointeur est remis à 0
Autres propriétés des fichiers séquentiels
Chap 11 17

Pour l’écriture, la même idée: une instruction
d’écriture dans un programme cause l’ajout d’un
enregistrement à un tampon, quand le tampon est
plein il y a une écriture de bloc

Un fichier séquentiel qui a été ouvert en lecture ne
peut pas être écrit et vice-versa (impossible de
mélanger lectures et écritures)

Les fichiers séquentiels ne peuvent être lus ou
écrits qu’un enregistrement à la fois et seulement
dans la direction ‘en avant’
Mise à jour de fichiers séquentiels
Vieux
maître
Fichie
r mise
à
jour
Nouvea
u
maître
Programme de
mise à
jour
Tous les
fichiers sont
triés par la
même clé
Chap 11 18
Mise à jour de fichiers séquentiels
triés:
exempl
e
02
05
12
17
21
26
02
12
17
20
21
26
27
Retirer 5
Modif 12
Ajout 20
Ajout 27
Vieux maître Mises à jour Nouveau maître
+ =
(12 a été modifié)
L’algorithme fonctionne lisant un enregistrement à la fois, en séquence, du vieux
maître et du fichier des mises à jour
À un moment donné il n’y a que trois enregistrements en mémoire, un par
fichier
Programme de
mise à
jour
Vieux
maître
Fichier
mise
à
jour
Nouvea
u
maître
Programme de mise
à jour
Chap 11 19
Accès direct ou haché ou
aléatoire:
Chap 11 20
accès direct à travers tableau
d’hachage

Une fonction d’hachage est une fonction qui
traduit une clé dans adresse,
 P.ex. Matricule étudiant  adresse disque

Rapide mais:
 Si les adresses générées sont trop
éparpillées, gaspillage d’espace
 Si les adresses ne sont pas assez éparpillées,
risque que deux clés soient renvoyées à la même
adresse
 Dans ce cas, il faut de quelques façon renvoyer une
des clés à une autre adresse
Problème avec les fonctions
d’hachage
Fonction d’hachage
dispersée qui n’utilise pas
bien l’espace disponible
Chap 11 21
Fonction d’hachage concentrée qui
utilise mieux l’espace mais introduit
des doubles affectations
clés
adr. disque
clés
adr. disque
Hachage:Traitement des doubles affectations

On doit détecter les doubles affectations,
et s’il y en a, un des deux enregistrements
doit être mis ailleurs
ce qui complique l’algorithme
adr. disque
clés
adr. alternative disque
Chap 11 22
Adressage Indexé séquentiel (index sequential)
Chap 11 23

Un index permet d’arriver directement à
l’enregistrement désiré, ou en sa proximité
 Chaque enregistrement contient un champ
clé
 Un fichier index contient des repères (pointeurs) à
certain points importants dans le fichier principal
(p.ex. début de la lettre S, début des Lalande, début des
matricules qui commencent par 8)
 Le fichier index pourra être organisé en niveaux
(p.ex. dans l’index de S on trouve l’index de tous
ceux qui commencent par S)
 Le fichier index permet d’arriver au point de repère
dans le fichier principal, puis la recherche est
séquentielle
Exemples d’index et fichiers relatifs
Pointe au début des Smiths (il y en aura plusieurs)
Le fichier index est à accès direct, le fichier relatif est à accès
séquentiel
Accès direct: voir ci-
Chap 11 24
Index et fichier principal (Stallings)
(Relative file)
Chap 11 25
Dans cette figure, l’index est
étendu à plusieurs niveaux,
donc il y a un fichier index qui
renvoie à un autre fichier
index, n niveaux
Pourquoi plusieurs niveaux d’index
Chap 11 26

Un premier niveau d’index pourrait
conduire au début de la lettre S

Un deuxième niveau au début des Smith,
etc.

Donc dans le cas de fichiers volumineux
plusieurs niveaux pourraient être justifiés.
Séquentiel et index séquentiel: comparaison
Chap 11 27

P.ex. Un fichier contient 1 million
d’enregistrements

En moyenne, 500.000 accès sont nécessaires pour
trouver un enregistrement si l’accès est
séquentiel!

Mais dans un séquentiel indexé, s’il y a un seul
niveau d’indices avec 1000 entrées (et chaque entrée
pointe donc à 1000 autres),

En moyenne, ça prend 1 accès pour trouver le
repère approprié dans le fichier index

Puis 500 accès pour trouver séquentiellement le
bon enregistrement dans le fichier relatif
Mais… besoin de fichier débordement
Chap 11 28

Les nouveaux enregistrements
seront ajoutés à un fichier
débordement

Les enregistrements du fichier
principal qui le précèdent dans
l’ordre de tri seront mis à jour
pour contenir un pointeur au
nouveau enregistrement

Donc accès additionnels au fichiers
débordement

Périodiquement, le fichier
principal sera fusionné avec le
fichier débordement
Indexed sequential
(Stallings)
Chap 11 29
Fichier indexé
Chap 11 30

Utilise des index multiples pour différentes
clés, selon les différents besoins de
consultation

Quelques uns pourraient être exhaustifs,
quelques uns partiels, et organisés de
façons différentes
Indexed File
(Stallings)
Chap 11 31
Utilisation des 4
méthodes
Chap 11 32

Séquentiel (rubans ou disques): applications périodiques qui
demandent la lecture ou écriture des enregistrements dans un
ordre fixe, ces applications sont appelées ‘batch’=‘par lots’

Salaires, comptabilité périodique, sauvegarde périodique
(backups)

Indexé séquentiel (disques): accès séquentiel ou accès direct par
l’utilisation d’index

Pour fichiers qui doivent être consultés parfois de façon séquentielle,
parfois de façon directe (p.ex. par nom d’étudiant)

Indexée: multiplicité d’index selon les besoins, accès direct par
l’index

Pour fichiers qui doivent être consultés de façon directe selon des
critères différents (p.ex. pouvoir accéder aux infos concernant les
étudiants par la côte du cours auquel ils sont inscrits)

Direct ou hachée: accès direct à travers tableau d’hachage

Pour fichiers qui doivent être consultés de façon directe par une clé
uniforme (p.ex. accès aux information des étudiants par matricule)
importa
nt
Répertoire
s
Chap 11 33
Structures de répertoires (directories)
F 1
Chap 11 34
F 2
F 3
F 4

Une collection de structures de données contenant
infos sur les fichiers.
Répertoires
F n

Tant les répertoires, que les fichiers, sont sur
disques

À l’exception d’un rép. racine en mém.
centrale
Fichiers
Organisation typique de système de fichiers
Deux répertoires dans un seul disque
Un répertoire dans deux
disques
Chap 11 35
Information dans un répertoire
Chap 11 36

Nom du fichier

Type

Adresse sur disque, sur ruban...

Longueur courante

Longueur maximale

Date de dernier accès

Date de dernière mise à jour

Propriétaire

Protection

etc
Opérations sur répertoires
Chap 11 37

Recherche de fichier

Création de fichier

Suppression de fichier

Lister un répertoire

Renommer un fichier

Traverser un système de fichier
Organisation de répertoires
Chap 11 38

Efficacité: arriver rapidement à un
enregistrement

Structure de noms: convenable pour
usager
deux usagers peuvent avoir le même
noms pour fichiers différents
Le même fichier peut avoir différents
noms

Groupement de fichiers par type:
tous les programmes Java
tous les programmes objet
Structure à un niveau

Un seul rép. pour tous les usagers

Ambiguïté de noms

Pas de groupement

Primitif, pas pratique
Chap 11 39
Répertoires à deux niveaux

Rép. séparé pour chaque usager

`path name`, nom de chemin

même nom de fichier pour usagers différents est
permis

recherche efficace

Pas de groupements
Chap 11 40
Répertoires à arbres (normal aujourd’hui)
Chap 11 41
Caractéristiques des répertoires à arbres
Chap 11 42

Recherche efficace

Possibilité de grouper

Repertoire courant (working directory)
cd /spell/mail/prog
Graphes sans cycles: permettent de partager
fichiers
Unix: un symbolic link donne un chemin à un fichier
ou sous- répertoire
Chap 11 43
Références multiples dans graphes
acycliques

Un nœud peut avoir deux noms
différents

Si dict supprime list donc
pointeur vers fichier inexistant
(dangling pointer). Solutions:
 Pointeurs en arrière,
effacent tous les pointeurs
 Compteurs de références (s’il
y a encore des refs au fichier,
il ne sera pas effacé)
 Ni Unix ni Microsoft
n’implémentent ces
politiques, donc messages
d’erreur
 Solutions impossibles à
gérer dans un système
fortement reparti (ex: www)
Chap 11 44
Graphes avec cycles (structure générale)
Chap 11 45
•Presque inévitables quand il est permis de pointer à un noeud
arbitraire de la structure
•Pourraient être détectés avec des contrôles appropriés au moment de
la création d ’un nouveau pointeur
•Contrôles qui ne sont pas faits dans les SE courants
Considérations dans le cas de cycles

En traversant le graphe, il est nécessaire de savoir si on
retombe sur un noeud déjà visité

Un noeud peut avoir compteur de ref != 0 en se trouvant
dans une boucle de noeuds qui n ’est pas accessible!

Des algorithmes existent pour permettre de traiter ces cas,
cependant ils sont compliqués et ont des temps d ’exécution
non négligeables, ce qui fait qu’ ils ne sont pas toujours
employés
 Ramasse-miettes = garbage collection
roo
t Un sous-arbre qui n’est pas
accessible à partir de la racine
mais il ne peut pas être effacé
en utilisant le critère ref=0 car il
fait ref à lui-meme!
Chap 11 46
Partage de fichiers
Chap 11 47

Désirable sur les réseaux

Nécessite de protection
Protection (détails dans un chap suivant)
Chap 11 48

Types d ’accès permis
lecture
écriture
exécution
append (annexation)
effacement
listage: lister les noms et les attributs d
’un fichier

Par qui
Listes et groupes d’accès - UNIX
Chap 11 49

Modes d ’accès: R W E

Trois classes d ’usager:
propriétaire
groupe
public

demander à l ’administrateur de créer un
nouveau groupe avec un certain usager et
un certain propriétaire

droit du propriétaire de régler les droits
d ’accès et d ’ajouter des nouveaux
usagers
Listes et groupes
d’accès
 Mode d’accès: read, write, execute
 Trois catégories d’usagers:
RWX
a) owner access 7  1 1 1
b) group access 6 
RWX
1 1 0
c) others access 1 
RWX
0 0 1

Demander au gestionnaire de créer un groupe, disons G, et
ajouter des usagers au groupe

Pour un fichier particulier, disons jeux, définir un accès
approprié
owner group
public
chmod 761
jeux
Changer le groupe d’un fichier
chgrp
G
Chap 11 50
jeux
Méthodes
d’allocation
Chap 11 51
Structures de systèmes de fichiers
Chap 11 52

Structure de fichiers: deux façons de voir un fichier:
 unité d’allocation espace
 collection d ’informations reliées

Le système de fichiers réside dans la
mémoire secondaire: disques, rubans...

File control block: structure de données
contenant de l ’info sur un fichier
Systèmes de fichiers à couches
Chap 11 53
Structure physique des fichiers
Chap 11 54

La mémoire secondaire est subdivisée en blocs et chaque
opération d’E /S s’effectue en unités de blocs
 Les blocs ruban sont de longueur variable, mais les
blocs disque sont de longueur fixe
 Sur disque, un bloc est constitué d’un multiple de
secteurs contigus (ex: 1, 2, ou 4)
 la taille d’un secteur est habituellement 512 bytes

Il faut donc insérer les enregistrements dans les blocs et
les extraire par la suite
 Simple lorsque chaque octet est un enregistrement
par lui- même
 Plus complexe lorsque les enregistrements possèdent
une structure (ex: « main-frame IBM » )

Les fichiers sont alloués en unité de blocs. Le dernier bloc
est donc rarement rempli de données
 Fragmentation interne
Trois méthodes d’allocation de fichiers
Chap 11 55
Allocation contiguë
Allocation
enchaînée
Allocation indexée
Allocation contiguë sur disque
répertoire
Chap 11 56
Allocation contiguë

Chaque fichier occupe
un ensemble de blocs
contigu sur disque

Simple: nous n’avons
besoin que d’adresses
de début et longueur

Supporte tant l’accès
séquentiel, que l’accès
direct

Moins pratique pour
les autres méthodes
Chap 11 57
Allocation contiguë

Application des
problèmes et
méthodes vus dans le
chapitre de l’alloc de
mémoire contiguë

Les fichiers ne
peuvent pas grandir

Impossible d’ajouter
au milieu

Exécution périodique
d’une compression
(compaction) pour
récupérer l’espace
libre
Chap 11 58
Allocation enchaînée

Le répertoire contient
l ’adresse du premier
et dernier bloc,
possibl. le nombre de
blocs

Chaque bloc contient
un pointeur à l’adresse
du prochain bloc:
pointeur
bloc =
Chap 11 59
Allocation enchaînée
répertoire
Chap 11 60
Tableau d’allocation de fichiers
Chap 11 61
Avantages - désavantages
Chap 11 62

Pas de fragmentation externe - allocation
de mémoire simple, pas besoin de
compression

L’accès à l ’intérieur d ’un fichier ne peut
être que séquentiel
Pas façon de trouver directement le
4ème enregistrement...
N’utilise pas la localité car les
enregistrements seront éparpillés

L’intégrité des pointeurs est essentielle

Les pointeurs gaspillent un peu d ’espace
Allocation indexée: semblable à la pagination

Tous les pointeurs sont regroupés dans un
tableau (index block)
index
table
Chap 11 63
Allocation indexée
-1: pointeur nul
Chap 11 64
Allocation indexée
Chap 11 65

À la création d ’un fichier, tous les
pointeurs dans le tableau sont nil (-1)

Chaque fois qu’un nouveau bloc doit
être alloué, on trouve de l ’espace
disponible et on ajoute un pointeur avec
son adresse
Allocation indexée
Chap 11 66

Pas de fragmentation externe, mais les
index prennent de l’espace

Permet accès direct (aléatoire)

Taille de fichiers limitée par la taille de
l’index block
Mais nous pouvons avoir plusieurs
niveaux d’index: Unix

Index block peut utiliser beaucoup de
mémoire
Chap 11
1024
x
1024
bloc
s de
UNIX BSD: indexé à niveaux (config. possible)
12 blocs disque de 4K
chaque
1024 blocs de
4K chaque
Bloc de 4K contient 1024
Ce répertoire est en mémoire,
tous les autres sont sur disque
UNIX BSD (v. manuel Section 20.7)

Les premiers blocs d’un fichier sont accessibles directement

Si le fichier contient des blocs additionnels, les premiers sont
accessibles à travers un niveau d’indices

Les suivants sont accessibles à travers 2 niveaux d’indices,
etc.

Donc le plus loin du début un enregistrement se trouve, le plus
indirect est son accès

Permet accès rapide à petits fichiers, et au début de tous les
fich.

Permet l’accès à des grands fichier avec un petit répertoire en
mémoire
Chap 11 68
Gestion de l’espace
libre
Chap 11 69
Gestion d’espace
libre
Solution 1: vecteur de bits (solution
Macintosh, Windows 2000)

Vecteur de bits (n blocs)
0 1 2
n-1
…
bit[i]
=
Chap 11 70
 1  block[i] libre
2  block[i]
occupé

Exemple d’un vecteur de bits où les blocs 3,
4, 5, 9, 10, 15, 16 sont occupés:
 00011100011000011…

L’adresse du premier bloc libre peut être
trouvée par un simple calcul
Gestion d’espace
libre
Solution 2: Liste liée de mémoire libre (MS-DOS, Windows
9x) Tous les blocs de mémoire libre sont
liés ensemble par des pointeurs
Chap 11 71
Comparaison
Chap 11 72

Bitmap:
 si la bitmap de toute la mémoire secondaire est
gardée en mémoire principale, la méthode est
rapide mais demande de l’espace de mémoire
principale
 si les bitmaps sont gardées en mémoire
secondaire, temps de lecture de mémoire
secondaire...
 Elles pourraient être paginées, p.ex.

Liste liée
 Pour trouver plusieurs blocs de mémoire libre,
plus. accès de disque pourraient être demandés
 Pour augmenter l’efficacité, nous pouvons garder
en mémoire centrale l ’adresse du 1er bloc libre
Amélioration de
performance
Chap 11 73
Implantation de répertoires (directories)
Chap 11 74

Liste linéaire de noms de fichiers avec
pointeurs aux blocs de données
accès séquentiel
simple à programmer
temps nécessaire pour parcourir la
liste

Tableaux de hachage: tableaux
calculés
temps de recherche rapide
mais problèmes de collisions
Efficacité et performance
Chap 11 75

L ’efficacité dépend de:
méthode d’allocation et
d’organisation répertoires

Pour augmenter la performance:
Rendre efficace l’accès aux blocs
souvent visités
 Dédier des tampons de mémoire qui
contiennent l’image des infos plus
souvent utilisées
Optimiser l’accès séquentiel s’il est
souvent utilisé: free behind and read
ahead
Disque RAM
fonctionne comme mémoire cache pour
le disque
Image (partielle?) du contenu du disque en mémoire
RAM
Le pilote de disque RAM accepte toutes les ops qui sont
acceptées par le disque
Chap 11 76
Le problème de la récupération, ou
cohérence
Chap 11 77

Parties des fichiers et des répertoires se
trouvent tant en mémoire principale, que
sur disque

Il faut donc des mécanisme qui assurent
leur cohérence, surtout après pannes dans
le système
Récupération: différentes méthodes
Chap 11 78

Contrôles de cohérence entre la structure
de répertoires en mémoire centrale et le
contenu des disques
Essaye de réparer les incohérences

Sauvegarder les données sur disque dans
autres supports auxiliaires (backups) (p.ex.
autres disques, rubans)

Restaurer les disques à partir de
ces supports quand nécessaire
Concepts importants du Chapitre 11
Chap 11 79

Fichiers: structures, attributs, opérations

Méthodes d’accès: séquentiel, séquentiel indexée,
indexée, direct ou hachée

Répertoires et leur structures: repertoires
arborescents, sans ou avec cycles

Partage de fichiers, protection, liste
d’accès

Allocation d’espace: contiguë,
enchaînée, indexée
 Application en UNIX

Gestion d’espace libre: bitmap, liste liée
Par rapport au manuel…
Chap 11 80

Nous n’avons pas discuté:
Section 11.1.6
Section 11.5.2
Section 11.6.4
Chapitre 12
Chap 12 1
Systèmes
d’entrée/sortie
http://w3.uqo.ca/lui
gi/
Concepts importants du chapitre
Chap 12 2
• Matériel E/S
• Communication entre UCT et contrôleurs
périphériques
• Interruptions et scrutation
• DMA
• Pilotes et contrôleurs de périphs
• E/S bloquantes ou non, synchrones ou asynch
• Sous-système du noyau pour E/S
– Tamponnage, cache, spoule
Chap 12 3
Structure typique de bus PC
PCI: Peripheral Component Interconnect
Communication entre UCT et
contrôleurs périphériques
• Différentes techniques:
– UCT et contrôleurs communiquent directement par des registres
– UCT et contrôleurs communiquent par des petites zones de mémoire
centrale d’adresse fixe pour chaque contrôleur (ports)
– Aussi, le SE utilise le RAM pour des tampons pour les données d’E/S
– Et combinaisons de ces techniques
RA
M
UCT
Contr.
Péripher.
tampon
Chap 12 4
Adresses des ports d’E/S
des périphériques PC
Chap 12 5
Quand communiquer entre
programme et périphérique?
Chap 12 6
• Deux méthodes principales:
– Scrutation (polling): l’initiative est au
programme
– Interruption: l’initiative est à la
périphérique
• Grande variété d’implémentations
Scrutation (polling)
Chap 12 7
• Bit dans le contrôleur E/S:
– 0 si si occupé à travailler
– 1 si libre - prêt à accepter commande
• Bit dans l’UCT: commande prête (command ready)
– 1 s’il y a une commande prête à exécuter par le contrôleur
• L’UCT continue de regarder le bit occupé du contrôleur
jusqu’à ce qu’il soit libre (c’est la scrutation)
• Elle positionne alors le bit commande prête
• Le contrôleur voit ceci et devient occupé
• Inefficacité de cette méthode si (comme normal) l’UCT se
trouve très souvent dans une boucle de scrutation
– Attente occupée
Interruption
• L’UCT fait son travail, jusqu’à ce qu’elle reçoit un
signal sur la ligne de requête d’interruption
(interrupt request line)
– Cette ligne est interrogée après l’exécution de
chaque instruction
• À moins que l’interruption ne soit masquée
• Souvent deux lignes d’interruptions: masquable, non
masquable
– Transfert à une adresse de mémoire où il y a
renvoi à la routine de traitement (dans le vecteur
d’interruption)
– Les interruptions ont différentes priorités
• Si une interruption d’haute priorité se présente lors que le
système est en train de traiter une int. de prio. faible, la
première est traitée avant
Chap 12 8
Cycle d’E/S par interruption
Chap 12 9
Table des vecteurs d’interruptions
Intel Pentium (partie non-masquable jusqu’à 31)
Chap 12 10
Appels système
• Quand un usager demande un service du
noyau, le SE exécute une instruction qui
cause une interruption logicielle ou
déroutement (trap)
• Le système passe en mode
superviseur et trouve dans
l’instruction les paramètres qui
déterminent quoi faire
• Plus basse priorité que p.ex. E/S
Chap 12 11
Accès direct en mémoire (DMA)
• Dans les systèmes sans DMA, l’UCT est
impliquée dans le transfert de chaque
octet
• DMA est utile pour exclure l’implication de
l’UCT surtout pour des E/S volumineuses
• Demande un contrôleur spécial
• Ce contrôleur a accès direct à la
mémoire centrale
Chap 12 12
Chap 12 13
DMA: six étapes Exemple: entrée disqmém
Vol de cycles
• Le D
M
A ralentit encore le traitement d’UCT car
quand le D
M
A utilise le bus mémoire,
l’UCT ne peut pas s’en servir
• Mais beaucoup moins que sans DMA, quand
l’UCT doit s’occuper de gérer le transfert
Mémoire <-> Périphérique
Mém
UCT
DM
A
c
Contr.
Contr UCT Mém
Chap 12 14
Interface E/S d’application
Chap 12 15
• Le système d’E/S encapsule le comportement
despériphériques dans classes génériques
• La couche pilote de périfs masque les
différences existantes entre périphs
spécifiques
• Ceci simplifie l’inter changement de
différentes périphériques
• Mais le constructeur d’une périph doit créer
autant depilotes qu’il y a de SE qui peuvent
utiliser la périph
Structure E/S d’un noyau (driver=pilote)
pilote
s
12
Chap 16
Caractéristiques des périphs E/S
Chap 12 17
Périphériques par blocs ou
caractères
Chap 12 18
• Périphériques par blocs: disques, rubans…
– Commandes: read, write, seek
– Accès brut (raw) ou à travers système fichiers
– Accès représenté en mémoire (memory-mapped)
• Semblable au concept de mémoire virtuelle ou cache:
– une certaine partie du contenu de la
périphérique est stocké en mémoire principale, donc
quand un programme fait une lecture de disque, ceci
pourrait être une lecture de mémoire principale
• Périphériques par caractère (clavier
, écran)
– Get, put traitent des caractères
– Librairies au dessus peuvent permettre édition de
lignes, etc.
Périphériques réseau
Chap 12 19
• Unix et Windows utilisent le concept de
socket
– Permet à l’application de faire
abstraction du protocole
– Fonctionnalité select: appel à select indique
en retour quelles sont les sockets prêts à
recevoir un paquet ou quelles peuvent
accepter un paquet à transmettre
• Grand nombre de solutions différentes:
pipes, FIFOs, streams, queues, mailboxes
Horloge et minuterie
Chap 12 20
• Fournit le temps courant, le temps
écoulé, déclenche des minuteries
• Peuvent être utilisées pour
interruptions périodiques, interruptions
après des périodes données
– Grand nombre d’applications
E/S bloquantes,synchrones et
non-bloquantes
Chap 12 21
• Bloquante: le processus qui demande une E/S est
suspendu jusqu’à la fin de l’E/S
– Facile à comprendre
– Mais le proc pourrait vouloir continuer pour faire d’autres
choses urgentes
• Asynchrone: l’E/S est demandée, et le processus
continue son exécution, il sera plus tard averti de la
terminaison
– Utilisée dans le passé, peu utilisée à présent car le temps de
terminaison est imprévisible
– Programmation difficile: quoi faire en attente de l’interruption?
• Non-bloquante: dans ce cas, le proc peut créer des
différentes tâches qui lui permettent de continuer avec
autres activités
Chap 12 22
E/S synchrones, asynch et
non-bloquantes
Synchrone:proc
suspendu pendant
E/S
Asynch:proc continue,
sera interrompu quand
E/S complétée
Non-bloquante:proc A crée proc B
pour faire une E/S synchrone,
continue pour
faire autre chose puis les
deux se
réunisse
A
B
Interr.
join
Sous-système E/S du noyau
Chap 12 23
• Fonctionnalités:
– Ordonnancement E/S
– Mise en tampon
– Mise en cache
– Mise en attente et réservation de
périphérique
– Gestion des erreurs
Sous-système E/S du noyau
Ordonnancement E/S
Chap 12 24
• Optimiser l’ordre dans lequel les E/S
sont exécutées
– Chapitre sur ordonnancement disque
Sous-système E/S du noyau
Chap 12 25
Mise en tampon
• Double tamponnage:
– P
.ex. en sortie: un processus écrit le prochain
enregistrement sur un tampon en
mémoire tant que l’enregistrement précédent
est en train d’être écrit
– Permet superposition traitement/E/S
Sous-système E/S du noyau
Mise en cache
Chap 12 26
• Quelques éléments couramment utilisés
d’une mémoire secondaire sont gardés
en mémoire centrale
• Donc quand un processus exécute une
E/S, celle-ci pourrait ne pas être une
E/S réelle: – Elle pourrait être un transfert
en mémoire, une
simple mise à jour d’un pointeur
, etc.
• V.disque RAM Chap. 11
Sous-système E/S du noyau
Chap 12 27
Mise en attente et réservation de
périphérique: spoule
• Spoule ou Spooling est un mécanisme par lequel des
travaux àfaire sont stockés dans un fichier
, pour être
ordonnancés plus tard
• Pour optimiser l’utilisation des périphériques lentes, le SE
pourrait diriger à un stockage temporaire les données
destinés àla périphérique (ou provenant d’elle)
– P
.ex. chaque fois qu’un programmeur fait une impression, les
données pourraient au lieu être envoyées à un disque,
pour être imprimées dans leur ordre de priorité
– Aussi les données en provenance d’un lecteur optique
pourraient être stockées pour traitement plus tard
Sous-système E/S du noyau
Gestion des erreurs
Chap 12 28
• Exemples d’erreurs à être traités par le
SE:
– Erreurs de lecture/écriture, protection,
périph non- disponible
• Les erreurs retournent un code ‘raison’
• Traitement différent dans les différents
cas…
Structures de données du noyau
• Le noyau garde toutes les informations
concernant les fichiers ouverts,
composants E/S, connections
• U
n grand nombre de structures de
données complexes pour garder
l’information sur les tampons,
l’allocation de mémoire, etc.
Chap 12 29
Gestion de requêtes E/S
Chap 12 30
• P
. ex. lecture d’un fichier de disque
– Déterminer où se trouve le fichier
– Traduire le nom du fichier en nom de
périphérique et location dans périphérique
– Lire physiquement le fichier dans le tampon
– Rendre les données disponibles au processus
– Retourner au processus
Cycle de vie d’une requête E/S
Si données
déjà en RAM
(cache)
Chap 12 31
Performance
Chap 12 32
• Ignorer cette
section
Concepts importants du chapitre
Chap 12 33
• Matériel E/S
• Communication entre UCT et contrôleurs
périfériques
• Interruptions et scrutation
• DMA
• Pilotes et contrôleurs de périfs
• E/S bloquantes ou non, asynchrones
• Sous-système du noyau pour E/S
– Tamponnage, cache, spoule
Concept de Cache
Chap 12 34
• Le mot cache est utilisé souvent dans situations
apparemmentdifférentes, p.ex:
– Entre l’UCT et la mémoire RAM nous pouvons avoir une
mémoire cache
– Le Translation Lookaside Buffer (TLB) utilisé pour contenir les
adresses de mémoire virtuelle les plus récemment utilisés est
souvent appelé cache
– La technique de charger en RAM certains données disque
qui sont beaucoup utilisées est aussi appelée ‘caching’
• En général, caching veut dire transférer dans une
mémoire plus rapide des informations normalement
contenues dans unemémoire plus lente, quand le SE croit
qu’elles seront demandéesbientôt
Chap. 13 1
Chapitre 13 (Seul. 13.1, 13.2,
13.4)
Structure de mémoire de masse (disques)
http://w3.uqo.ca/lui
gi/
Concepts importants du chapitre 13
Chap. 13 2

Fonctionnement et structure des unités
disque

Calcul du temps d’exécution d’une
séquence d’opérations

Différents algorithmes
d’ordonnancement
Fonctionnement, rendement

Gestion de l’espace de
permutation
Unix
Disques magnétiques
Chap. 13 3

Plats rigides couverts de matériaux
d ’enregistrement magnétique
surface du disque divisée en pistes (tracks)
qui sont divisées en secteurs
le contrôleur disque détermine
l`interaction logique entre l ’unité et l
’ordinateur
Beaucoup d’infos utiles dans:
http://www.storagereview.com/guide2000/ref/
hdd
/index.html
Nomenclature -
cylindre: l’ensemble de pistes qui se trouvent dans
la même position du bras de lecture/écriture
Chap. 13 4
Un disque à plusieurs surfaces
Chap. 13 5
http://computer.howstuffworks.com
Disques éléctroniques
Chap. 13 6

Aujourd’hui nous trouvons de plus en plus
des types de mémoires qui sont adressées
comme si elle étaient des disques, mais
sont complètement électroniques
P. ex. flash memory
Il n’y aura pas les temps de
positionnement, latence, etc. discutés
plus tard
Ordonnancement disques
Chap. 13 7

Problème: utilisation optimale du matériel

Réduction du temps total de lecture disque
étant donné une file de requêtes de
lecture disque, dans quel ordre les
exécuter?
Paramètres à prendre en considération

Temps de positionnement (seek
time):
 le temps pris par l`unité disque
pour se positionner sur le
cylindre désiré

Temps de latence de rotation
 le temps pris par l ’unité de
disque qui est sur le bon cylindre
pour se positionner sur le
secteur désirée

Temps de lecture
 temps nécessaire pour lire la
piste

Le temps de positionnement est
normalement le plus important, donc
il est celui que nous chercherons à
minimiser
Chap. 13 8
File d’attente disque
Chap. 13 9

Dans un système multiprogrammé avec mémoire virtuelle,
il y aura normalement une file d’attente pour l ’unité disque

Dans quel ordre choisir les requêtes d ’opérations disques
de façon à minimiser les temps de recherche totaux

Nous étudierons différents méthodes par rapport à une
file d ’attente arbitraire:
98, 183, 37, 122, 14, 124, 65, 67

Chaque chiffre est un numéro séquentiel de cylindre

Il faut aussi prendre en considération le cylindre de départ:
53

Dans quel ordre exécuter les requêtes de lecture de façon
à minimiser les temps totaux de positionnement cylindre

Hypothèse simpliste: un déplacement d`1 cylindre coûte 1
unité de temps
Chap. 13 10
Premier entré, premier sorti:
FIFO
axe de
rotation
45
85
146
85
108
110
59
2
Mouvement total: 640 cylindres = (98-53) + (183-98)+...
En moyenne: 640/8 = 80
SSTF: Shortest Seek Time
First
Chap. 13 11
Plus court d’abord

À chaque moment, choisir la requête avec
le temps de recherche le plus court à partir
du cylindre courant

Clairement meilleur que le précédent

Mais pas nécessairement optimal! (v.
manuel)

Peut causer famine
SSTF: Plus court servi
Mouvement total: 236 cylindres (680 pour le précédent)
En moyenne: 236/8 = 29.5 (80 pour le précédent)
Chap. 13 12
Problèmes commun à tous les algorithmes
qui sélectionnent toujours le plus voisin:
Chap. 13 13

Balaient efficacement un voisinage, puis
quand ils ont fini là dedans doivent faire
des déplacement plus importants pour
traiter ce qui reste

Famine pour les autres s’il y a apport
continu d’éléments dans le voisinage
SCAN: l’algorithme de l’ascenseur
Chap. 13 14

La tête balaye le disque dans une
direction, puis dans la direction opposée,
etc., en desservant les requêtes quand il
passe sur le cylindre désiré
Pas de famine
SCAN: l
’ascenseur
Mouvement total: 208 cylindres
En moyenne: 208/8 = 26 (29.5 pour
SSTF)
directio
n
Chap. 13 15
Problèmes du SCAN
Chap. 13 16

Peu de travail à faire après le renversement
de direction

Les requêtes seront plus denses à l’autre
extrémité

Arrive inutilement jusqu’à 0
C-SCAN
Chap. 13 17

Retour rapide au début (cylindre 0) du disque au
lieu de renverser la direction

Hypothèse: le mécanisme de retour est beaucoup
plus rapide que le temps de visiter les cylindres
 Comme si les disques étaient en forme de beignes!
C-LOOK

La même idée, mais au lieu de retourner au
cylindre 0, retourner au premier cylindre qui a une
requête
153 sans considérer le retour (19.1 en moyenne) (26 pour SCAN)
MAIS 322 avec retour (40.25 en moyenne)
Chap. 1N3 ormalement le retour sera rapide donc le coût réel sera entre 18
C-
LOOK
retour: 169 (??)
direction

C-LOOK avec direction initiale opposée
directio
n
Résultats très semblables:
157 sans considérer le retour
, 326 avec le
retour
Chap. 13 19
Retour
169
Exemple pratique…
Chap. 13 20

Si on doit ramasser des gens de Gatineau
Est à Aylmer, il pourrait être plus rapide de
faire le tour à Gatineau, puis prendre
l’autoroute jusqu’à Aylmer et ramasser le
reste, au lieu d’arriver à Aylmer par rues
régulières tout en ramassant des gens…
Comparaison
Chap. 13 21

Si la file souvent ne contient que très peu
d’éléments, l’algorithme du ‘premier servi ’ devrait
être préféré (simplicité)

Sinon, SSTF ou SCAN ou C-SCAN?

En pratique, il faut prendre en considération:
 Les temps réels de déplacement et retour au début
 L`organisation des fichiers et des répertoires
 Les répertoires sont sur disque aussi…
 La longueur moyenne de la file
 Le débit d ’arrivée des requêtes
Gestion de l’espace de permutation en
mémoire virtuelle (swap space) (13.4)
Chap. 13 22

Nous avons vu comment les systèmes de
mém virtuelle utilisent la mém secondaire

Grande variété d’implémentations de
systèmes d’espace de permutation dans
différents SE

L’esp permutation (swap)
peut être des fichiers normaux dans
l’espace disque utilisé par les autres
fichiers,
ou peut avoir sa propre partition disque

Peut être mis dans des disques plus
efficaces
Gestion d’espace de permutation (disque) en
Unix 4.3BSD
Chap. 13 23

Pour chaque processus, il y a
Un segment texte = le programme
 Ne change pas pendant exécution
Et il y a aussi un segment
données
 Sa taille peut changer pendant
exéc
Unix 4.3BSD: Tableau d’allocation du
segment de texte=programme

L’espace disque est alloué en morceaux
fixes de 512K
Dernier morceau
de programme
plus court
Chap. 13 24
Unix 4.3BSD: Tableau d’allocation du
segment données sur disque

Les données changent de taille plus
souvent que le programme

Chaque fois qu’un proc demande plus de
mémoire, on lui donne le double
Chap. 13 25
Autres mécanismes en Unix
Chap. 13 26

Les mécanismes sont différents dans
différentes versions de Unix

Les différentes versions fonctionnent avec
autres mécanismes, comme pagination,
systèmes compagnons (buddy) etc.
RAID: Redundant Array of Independent Disks
Stallings
En distribuant les données sur différents disques, il est probable
qu’une grosse lecture puisse être faite en parallèle (au lieu de
lire strip0 et strip1 en séquence, cette organisation permet de les
lire en même temps)
Chap. 13 27
Redondance dans RAID
Chap. 13 28
Stallings
Dupliquer les données pour incrémenter le parallélisme
et remédier aux pertes de données (coûteux mais
utilisé en pratique)
RAID: Correction d’erreurs par codes de
correction
Chap. 13 29
Stallings
Les codes de correction d’erreur pour des données
enregistrées sur un disque sont sauvegardés sur un autre
disque (plus de résistance aux erreurs)
Concepts importants du chapitre 13
Chap. 13 30

Fonctionnement et structure des unités
disque

Calcul du temps d’exécution d’une
séquence d’opérations

Différents algorithmes
d’ordonnancement
Fonctionnement, rendement

Gestion de l’espace de
permutation
Unix

RAID: réorganisation des fichiers pour
performance et résistance aux erreurs
Par rapport au livre
Chap. 13 31

Seulement 13.1, 13.2, 13.4

cours-complet-systemes-adexploitation.pptx

  • 1.
  • 2.
    Évaluation Chap 0 2  ExamenIntra (2h): 25% (le 25 octobre)  Examen Final (3h) 45% (le 13 décembre)  Examens à livre fermé – aucun doc permis  Le final sera sur toute la matière  Devs. théoriques et de programm. 30% 2-3 devs de programmation: 20% tous 3 devs théoriques: 10% tous
  • 3.
    Contenu du cours Chap0 3  PARTIE 0: INTRODUCTION  Revue des principales composantes d'un ordinateur.  Structure générale des systèmes d'exploitation.  PARTIE 1: PROCESSUS et GESTION d’UNITÉ CENTRALE  Description et contrôle des processus.  Fils (threads).  Parallélisme: exclusion mutuelle et synchronisation.  Ordonnancement des processus sur un uniprocesseur.  Parallélisme: interblocage et famine.  PARTIE 2: GESTION DE MÉMOIRE  Adressage et gestion de la mémoire.  Mémoire virtuelle.  PARTIE 3: FICHIERS, E/S ET PROTECTION  Systèmes de fichiers, systèmes d’E/S  Protection
  • 4.
     Accent en classesur les concepts théoriques de longue durée de vie  La programmation, l’application seront dans les sessions exercices Chap 0 4
  • 5.
    Manuel: Chap 0 5  Silberschatz,Galvin, Gagne.  Principes appliqués des systèmes d’exploitation, Vuibert  Avantages:  très clair dans la présentation  utilise Java  beaucoup de notions intéressantes et utiles  Désavantages:  beaucoup plus gros que nécessaire  Je le suivrai, mas pas toujours  Cependant la lecture du manuel est indispensable pour une bonne compréhension de la matière.  Les examens et les devoirs contiendront des questions prises du manuel  Livres de Stallings et Tanenbaum en réserve a la bibliothèque
  • 6.
    Les labos etJava Chap 0 6  1er labo la semaine prochaine sur Unix  Les devoirs de programmation se feront en Java  Pas un langage utilisé dans les SE d ’aujourd ’hui  Mais un langage qui facilite la programmation parallèle  Il commence à être utilisé utilisé dans les SE répartis expérimentaux  Les labos fourniront une introduction a Java, et de l’aide dans la programmation Java  Java ne sera pas utilisé en classe: pseudocode sera utilisé au lieu  Le test et l ’examen contiendront des questions sur Unix et Java
  • 7.
    Labos et devoirs Chap0 7  Les devoirs seront constitués de: 20%: 3 travaux de programmation (Unix et Java) sur:  Parallélisme  Synchronisation de processus 10%: Exercices écrits sur la théorie vue en classe (probabl. 3 ensembles d’exercices)
  • 8.
    1 Introduction Chapitre 1 Que c’estqu’un SE Développement historique des SE http://w3.uqo.ca/lui gi/
  • 9.
    Concepts importants duChapitre 1 Ch. 1 2  Que c’est que un SE  Évolution historique  Par lots  Multiprogrammés – balance de travaux  À partage de temps (time-sharing)  Parallèles:  Fortement couplés • Symétriques, • Asymétriques: maître-esclave  Faiblement couplés: • Répartis • Réseaux  Caractéristiques de matériel et logiciel requises pour cette évolution  Systèmes à temps réel: durs, souples
  • 10.
    Système d’exploitation (SE) Ch.1 3  Fournit l’interface usager/machine:  Masque les détails du matériel aux applications  Le SE doit donc traiter ces détails  Contrôle l’exécution des applications  Le fait en reprenant périodiquement le contrôle de l’UCT  Dit à l’UCT quand exécuter tel programme  Il doit optimiser l`utilisation des ressources pour maximiser la performance du système
  • 11.
  • 12.
    Ressources et leurgestion Ch. 1 5  Ressources: physiques: mémoire, unités E/S, UCT... Logiques = virtuelles: fichiers et bases de données partagés, canaux de communication logiques, virtuels... les ressources logiques sont bâties par le logiciel sur les ressources physiques  Allocation de ressources: gestion de ressources, leur affectation aux usagers qui les demandent, suivant certains critères
  • 13.
    Pourquoi étudier lesSE? Ch. 1 6  Logiciel très important… tout programme roule sur un SE interface usager-ordinateur  Les SE utilisent beaucoup d ’algorithmes et structures de données intéressants Les techniques utilisées dans les SE sont aussi utilisées dans nombreuses autres applications informatiques  il faut les connaître
  • 14.
    Développement de lathéorie des SE Ch. 1 7  La théorie des SE a été développée surtout dans les années 1960 (!!)  A cette époque, il y avait des machines très peu puissantes avec lesquelles on cherchait à faire des applications comparables à celles d’aujourd’hui (mémoire typique: 100-500K!)  Ces machines devaient parfois desservir des dizaines d’usagers!  Dont le besoin de développer des principes pour optimiser l’utilisation d ’un ordinateur.  Principes qui sont encore utilisés
  • 15.
    Évolution historique desSE Ch. 1 8  Le début: routines d`E/S, amorçage système  Systèmes par lots simples  Systèmes par lots multiprogrammés  Systèmes à partage de temps  Ordinateurs personnels  SE en réseau  SE répartis  Les fonctionnalités des systèmes simples se retrouvent dans les systèmes complexes.  Les problèmes et solutions qui sont utilisés dans les systèmes simples se retrouvent souvent dans les systèmes complexes.
  • 16.
    Phase 1: Lesdébuts Ch. 1 9  Au début, on a observé qu`il y avait des fonctionnalités communes à tous les programmes  il fallait les pré-programmer et les fournir au programmeur à moyen d`instructions d` appel: amorçage du système entrée/sortie
  • 17.
    Phase 2: Systèmesde traitement par lots (batch) simples Ch. 1 10  Sont les premiers SE (mi-50)  L’usager soumet une job à un opérateur  Programme suivi par données  L’opérateur place un lot de plusieurs jobs sur le dispositif de lecture  Un programme, le moniteur, gère l'exécution de chaque programme du lot  Le moniteur est toujours en mémoire et prêt à être exécuté  Les utilitaires du moniteur sont chargés au besoin  Un seul programme à la fois en mémoire, programmes sont exécutés en séquence  La sortie est normalement sur un fichier, imprimante, ruban magnétique…
  • 18.
    Ch. 1 11 Unordinateur principal (mainframe) du milieu des annnées ‘60 Musée de l’histoire de l’informatique http://www.computerhistory.org/ lecteur de cartes rubans disques UCT (mémoire probablem. autour de 250-500K) console opérateur
  • 19.
    Ch. 1 12 Oui,cartes perforées… Une ligne de données ou de programme était codée dans des trous qui pouvaient être lus par la machine
  • 20.
    Ch. 1 13 Opérateurlisant un paquet de cartes perforées Source: http://www.tietokonemuseo.saunalahti.fi/eng/kuva_32_
  • 21.
    Ch. 1 14 Langagede contrôle des travaux (JCL)  Utilisé pour contrôler l ’exec d ’une job  le compilateur à utiliser  indiquer où sont les données  Exemple d’une job:  paquet de cartes comme suit:  $JOB début  $FTN charge le compilateur FORTRAN et initie son exécution  $LOAD charge le pgm objet (à la place du compilateur)  $RUN transfère le contrôle au programme usager  les données sont lues par le moniteur et passées au progr. usager $JOB $FTN ... Programme FORTRAN ... $LOAD $RUN ... Données ... $END $JOB ... (job suivant)
  • 22.
    Ch. 1 15 Langagede contrôle des travaux (JCL)  L’E/S est déléguée au moniteur  Chaque instruction d’E/S dans pgm usager invoque une routine d’E/S dans le moniteur: s’assure de ne pas lire une ligne JCL un usager ne peu pas interférer avec les E/S d`un autre usager…  Quand le programme usager se termine, la prochaine ligne de JCL est lue et exécutée par le moniteur.
  • 23.
    Ch. 1 1 Lemoniteur par lots  Lecture de cartes perforées  Interprétation de commandes JCL  Lecture (load) d’une job (du lecteur de cartes)  Chargement en mémoire (dans la région de l’usager) de cette job  Transfère le contrôle au programme usager (job sequencing)  Exécution du programme usager jusqu’à:  fin du programme  E/S  erreur  À ce point, le moniteur reprend le contrôle  Pour le redonner plus tard au même programme ou à un autre Stallings
  • 24.
    Caractéristiques désirables dumatériel (1) Ch. 1 17  Protection de la mémoire ne pas permettre aux pgms usager d’altérer la région de la mémoire où se trouve le moniteur  Minuterie limite le temps qu`une job peut exécuter produit une interruption lorsque le temps est écoulé
  • 25.
    Caractéristiques désirables dumatériel (2) Ch. 1 18  Instructions privilégiées  exécutables seulement par le moniteur  une interruption se produit lorsqu’un programme usager tente de les exécuter  UCT peut exécuter en mode moniteur ou mode usager  Les instructions privilégiées ne peuvent être exécutées que en mode moniteur  l ’usager ne peut exécuter que en mode usager  seulement le SE ou une interruption peuvent changer de mode  Interruptions  facilitent le transfert de contrôle entre le système d ’exploitation, les opérations d`E/S et les programmes usagers  Le mode moniteur sera plus souvent appelé mode superviseur
  • 26.
    Les systèmes parlots Ch. 1 19  Ont été les premiers systèmes d`exploitation.  Ils sont associés aux concepts suivants:  langage de contrôle de travaux (JCL)  système d ’exploitation résident en mémoire  kernel = noyau  protection de mémoire  instructions privilégiées  modes usager-moniteur  interruptions  minuterie  Toutes ces caractéristiques se retrouvent dans les systèmes d’aujourd’hui  Encore aujourd’hui on parle de jobs ‘par lots’ quand ils sont exécutés séquentiellement sans intervention humaine  P.ex. salaires, comptabilité d’une compagnie
  • 27.
    Phase 2.5: Traitementpar lots multiprogrammé [Stallings] Ch. 1 20  Les opérations E/S sont extrêmement lentes (comparé aux autres instructions)  P. 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  Donc: pauvre utilisation de l’UCT lorsqu’un seul pgm usager se trouve en mémoire
  • 28.
    Traitement par lotsmultiprogrammé  Si la mémoire peut contenir +sieurs pgms, l’UCT peut exécuter un autre pgm lorsqu’un pgm attend après E/S  C’est la multiprogrammation [Stallings] Ch. 1 21
  • 29.
    Plusieurs programmes en mémoirepour la multiprogrammation Ch. 1 22
  • 30.
    Exigences pour multiprogrammation Ch. 123  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: • UCT, mémoire, unités E/S  Langage pour gérer l’exécution des travaux: interface entre usager et OS jadis JCL, maintenant shell, command prompt ou semblables
  • 31.
    Spoule ou spooling Ch.1 24  Au lieu d ’exécuter les travaux au fur et à mesure qu’ils sont lus, les stocker sur une mémoire secondaire (disque)  Puis choisir quels programmes exécuter et quand Ordonnanceur à long terme, à discuter
  • 32.
    Équilibre de travaux Ch.1 25  S`il y a un bon nombre de travaux à exécuter, on peut chercher à obtenir un équilibre  Travaux qui utilisent peu l`UCT, beaucoup l ’E/S, sont appelés tributaires de l`E/S  Nous parlons aussi de travaux tributaires de l ’UCT  Le temps d`UCT non utilisé par des travaux trib. de l ’E/S peut être utilisé par des travaux trib. de l ’UCT et vice- versa.  L ’obtention d`un tel équilibre est le but des ordonnanceurs à long terme et à moyen terme (à discuter).  Dans les systèmes de multiprog. on a souvent coexistence de travaux longs et pas urgents avec travaux courts et urgents  Le SE donne priorité aux deuxièmes et exécute les premiers quand il y a du temps de machine disponible.
  • 33.
    Phase 3: Systèmesà temps partagé (TSS) ordinateur principal (mainframe) Terminaux ‘stupides’ Ch. 1 26
  • 34.
    Chaque terminal asa propre partition de mémoire Ch. 1 27
  • 35.
    Systèmes à tempspartagé (TSS) Ch. 1 28  Le traitement par lots multiprogrammé ne supporte pas l’interaction avec les usagers  excellente utilisation des ressources mais frustration des usagers!  TSS permet à la multiprogrammation de desservir plusieurs usagers simultanément  Le temps d ’UCT est partagé par plusieurs usagers  Les usagers accèdent simultanément et interactivement au système à l’aide de terminaux
  • 36.
    Systèmes à tempspartagé (TSS) Ch. 1 29  Le temps de réponse humain est lent: supposons qu`un usager nécessite, en moyenne, 2 sec du processeur par minute d’utilisation  Environ 30 usagers peuvent donc utiliser le système sans délais notable du temps de réaction de l’ordinateur  Les fonctionnalités du SE dont on a besoin sont les mêmes que pour les systèmes par lots, plus  la communication avec usagers  le concept de mémoire virtuelle pour faciliter la gestion de mémoire  traitement central des données des usagers (partagées ou non)
  • 37.
    MULTICS et UNIX Ch.1 30  MULTICS a été un système TSS des années 60, très sophistiqué pour son époque  Ne réussit pas à cause de la faiblesse du matériel de son temps  Quelques unes de ses idées furent reprises dans le système UNIX
  • 38.
    Ordinateurs Personnels (PCs) Ch.1 31  Au début, les PCs étaient aussi simples que les premiers ordinateurs  Le besoin de gérer plusieurs applications en même temps conduit à redécouvrir la multiprogrammation  Le concept de PC isolé évolue maintenant vers le concept d ’ordinateur de réseau (network computer), donc extension des principes des TSS.
  • 39.
    Aujourd’hui ordinateur principal (mainframe ouserveur) Terminaux ‘intelligents’ (PCs)’ Ch. 1 32
  • 40.
    Retour aux conceptsde TSS  Plusieurs PC (clients) peuvent être desservis par un ordi plus puissant (serveur) pour des services qui sont trop complexes pour eux (clients/serveurs, bases de données, telecom)  Les grands serveurs utilisent beaucoup des concepts développés pour les systèmes TSS Ch. 1 33
  • 41.
    Et puis… Ch. 134  Systèmes d’exploitation répartis: Le SE exécute à travers un ensemble de machines qui sont reliées par un réseau  Pas discutés dans ce cours
  • 42.
    Ch. 1 35 Évolutiondes SE (fig. mise à jour par rapport à votre livre)
  • 43.
    Ch. 1 36 Unesynthèse historique Ordinateurs Personnels Mainframes et grands serveurs Multics et beaucoup d`autres (1960s) Unix (1970) MS-DOS (1981) Windows (1990) Linux (1991) Windows NT (1988) Windows 2000 Windows XP Solaris (1995) Mac/OS (1984)
  • 44.
  • 45.
    Systèmes parallèles (tightlycoupled) Ch. 1 38  Le petit coût des puces rend possible leur composition dans systèmes multiprocesseurs  Les ordinateurs partagent mémoire, horloge, etc.  Avantages: plus de travail fait (throughput) plus fiable:  dégradation harmonieuse (graceful degradation)
  • 46.
    Systèmes parallèles Ch. 139  Symétriques Tous les UCTs exécutent le même SE Elles sont fonctionnellement identiques  Asymétrique Les UCTs ont des fonctionnalités différentes, par exemple il y a un maître et des esclaves.  Aujourd’hui, tout ordinateur puissant est un système parallèle.
  • 47.
    Systèmes distribués (= répartis) Ch. 1 40  Les réseaux d ’ordinateurs sont en pleine émergence...  Systèmes multiprocesseurs faiblement couplés (loosely coupled) consistent d ’ordinateurs autonomes, qui communiquent à travers lignes de communication
  • 48.
    Systèmes distribués (= répartis) Ch. 1 41  SE répartis il y a un SE qui fonctionne entre ordinateurs l ’usager voit les ressources éloignées comme si elles étaient locales  SE en réseau (network operating systems) fournissent: partage de fichiers (systèmes client- serveur) patrons de communication (protocoles) autonomie des ordinateurs
  • 49.
    Systèmes à tempsréel  Doivent réagir à ou contrôler des événements externes (p.ex. contrôler une usine). Les délais de réaction doivent être bornés  systèmes temps réel souples:  les échéances sont importantes, mais ne sont pas critiques (p.ex. systèmes téléphoniques)  systèmes temps réel rigides (hard):  le échéances sont critiques, p.ex.  contrôle d’une chaîne d`assemblage  graphiques avec animation  (ma déf. de souple n’est pas la même que dans le livre) Ch. 1 42
  • 50.
    Concepts importants duChapitre 1 Ch. 1 43  Que c’est que un SE  Évolution historique  Par lots  Multiprogrammés – balance de travaux  À partage de temps (time-sharing)  Parallèles:  Fortement couplés • Symétriques, • Asymétriques: maître-esclave  Faiblement couplés: • Répartis • Réseaux  Caractéristiques de matériel et logiciel requises pour cette évolution  Systèmes à temps réel: durs, souples
  • 51.
    Dans le livre,pour ce chapitre, vous devez Ch. 1 44  Étudier le chapitre entier
  • 52.
    Terminologie: mémoire centraleet auxiliaire Ch. 1 45  La mémoire centrale est la mémoire RAM sur laquelle le CPU exécute les instructions  Le cache est étroitement lié à la mémoire centrale, donc il est considéré partie de cette dernière  Mémoires auxiliaires sont toutes les autres mémoires dans le système  Disques  Flash-memory  Rubans…  Les m. aux. sont des périphériques
  • 53.
    Terminologie Ch. 1 46  Opérationsd’E/S: Entrée ou Sortie, Input/Output  Les opérations de lecture ou écriture en ou de mémoire centrale  Peuvent être directement ou indirectement demandées par le programme  Exemple d’indirectement: E/S occasionnées par la pagination  Entrée:  Read dans un programme • Lecture de disque • Caractères lu du clavier • Click du souris • Lecture de courriel • Lecture de page web (à être affichée plus tard, p.ex.)  Sortie:  Write dans un programme • Affichage sur l’écran • Impression • Envoi de courriel • Sortie de page web demandée par une autre machine
  • 54.
    Terminologie Ch. 1 47  Travaux‘en lots’ (batch)  Travaux non-urgents qui sont soumis au système pour ramasser la réponse plus tard  Tri de fichier, calcul d’une fonction complexe, grosses impressions, sauvegarde régulière de fichiers usagers  Pour plus d’efficacité, peuvent être groupés et exécutés les uns après les autres  Interactifs  Sont les travaux qui demandent une interaction continue avec l’ordinateur:  Édition de documents ou d’un programme  Les premiers ordinateurs n’avaient pas de mécanismes de communication aisée entre usager et machine, donc normalement les travaux étaient ‘par lots’
  • 55.
    Annexe historique surles techniques de programmation  Les informaticiens d’aujourd’hui sont souvent surpris du fait qu’on pouvait faire quelque chose d’utile avec des ordinateurs aussi petits que ceux qui existaient dans les années ’60  Un exemple pourra aider à comprendre... Ch. 1 48
  • 56.
    Un programme HelloWorld du début des années ‘60 Ch. 1 49 110016#T OXXXXXX0 HELLO WORLD Ce programme consiste en 27 octets (en langage machine) Son adresse initiale est 0. La première ligne dit d’imprimer à partir de l’adresse 16 pour longueur 11. La deuxième ligne est l’instruction STOP. La 3ème ligne est la constante à imprimer
  • 57.
    50 Programmes Hello Worldd’aujourd’hui class HelloWorld { public static void printHello( ) { System.out.println("Hello, World"); } } class UseHello { public static void main(String[ ] args) { HelloWorld myHello = new HelloWorld( ); myHello.printHello( ); } } Dans l’article: C. Hu. Dataless objects considered harmful. Comm. ACM 48 (2), 99-101 http://portal.acm.org/citation.cfm?id=1042091.1042126# l’auteur présente deux versions orientées objet de programmes ‘Hello World’. Il critique la version ci- dessous disant qu’elle n’est pas vraiment orientée objet et qu’il faudrait vraiment utiliser la version à droite. Quelle est la mémoire demandée par ces class Message { String messageBody; public void setMessage(String newBody) { messageBody = newBody; } public String getMessage( ) { return messageBody; } public void printMessage( ) { System.out.println(messageBo dy); } } public class MyFirstProgram { public static void main(String[ ] args) { Message mine = new Message ( ); mine.setMessage("Hello, World"); Message yours = new Message ( ); yours.setMessage("This is my first program!"); mine.printMessage( ); System.out.println(yours.getMessage( ) + "—" + mine.getMessage( ) );
  • 58.
  • 59.
    Ch.2 2 Concepts importantsdu Chapitre 2  Registres d’UCT, tampons en mémoire, vecteurs d’interruption  Interruption et polling  Interruptions et leur traitement  Méthodes d’E/S avec et sans attente, DMA  Tableaux de statut de périphériques  Hiérarchie de mémoire  Protection et instructions privilégiées, modes d’exécution  Registres bornes  Appels de système
  • 60.
    Ch.2 3 Architecture d’ordinateurs Dansbeaucoup de systèmes, ce n ’est que l`UCT qui peut adresser la mémoire: les infos transférées entre les périphériques et la mémoire (ou même entre mémoire et mémoire) doivent passer à travers l ’UCT, dont le concept de `vol de cycles` (cycle stealing).
  • 61.
    Registres de l’UCT(mémoire rapide dans UCT) Ch.2 4  Registres de contrôle et statut  Généralement non disponibles aux programmes de l’usager  l’UCT en utilise pour contrôler ses opérations  Le SE en utilise pour contrôler l’exécution des programmes  Registres Visibles (aux usagers)  disponibles au SE et programmes de l’usager  visibles seulement en langage machine ou assembleur  contient données, adresses etc.
  • 62.
    Exemples de registresde contrôle et statut Ch.2 5  Le compteur d’instruction (PC) Contient l’adresse de la prochaine instruction à exécuter  Le registre d’instruction (IR) Contient l’instruction en cours d’exécution  Autres registres contenant, p.ex. bit d’interruption activé/désactivé bit du mode d’exécution superviseur/usager bornes de mémoire du programme en exec.  Registres de statut des périphériques
  • 63.
    Opération d`ordinateurs pourE/S Ch.2 6  Unités d’E/S et UCT peuvent exécuter en même temps  Chaque type d`unité a un contrôleur  Chaque contrôleur a un tampon ou registre en mémoire principale (buffer)  UCT transfère l ’information entre contrôleur et tampon (vol de cycles)  Le contrôleur informe l ’UCT que l’opération a terminé  L’UCT a des registres qui contiennent le statut des différentes unités E/S.
  • 64.
    Deux façons différentesde traiter la communication entre UCT et unités E/S Ch.2 7  Polling (E/S programmée, interrogation, scrutation): le programme interroge périodiquement les regs statut et détermine le statut de l ’unité E/S: pour les unités E/S lentes  Interruption: l ’UCT est interrompue entre instructions quand un événement particulier se produit (fin d ’E/S, erreur...) les interruptions peuvent être inhibées pendant l ’exécution de certaines parties critiques du programme (il y a une instruction pour faire ça).
  • 65.
    Exemple Ch.2 8  Courriel… J’utilise l’interruptionsi j’ai une sonnerie qui m’avertit quand un courriel arrive J’utilise la scrutation (polling) si au lieu je regarde le courriel périodiquement de mon initiative
  • 66.
    Registres, vecteurs d’interruptions,tampons Unité centrale Registre s Mémoir e Vect. interrupt Registre imprimante Registre disque Registre clavier E/S inuteri e xceptio n M E Les registres en mémoire sont aussi appelés tampons (buffers) Ch.2 9
  • 67.
    Le cycle d’instructionde base [Stallings] Ch.2 10 • L’UCT extrait l’instruction de la mémoire. • Ensuite l’UCT exécute cette instruction •Le compteur d’instruction (PC) contient l’adresse de la prochaine instruction à extraire • Le PC est incrémenté automatiquement après chaque extraction
  • 68.
    Le cycle d’instructionavec interruptions [Stallings]  Après chaque instruction, si les interruptions sont habilitées, l’UCT examine s’il y a eu une interruption  S’il n’y en a pas, il extrait la prochaine instruction du programme  S’il y en a, il suspend le pgm en cours et branche l’exécution à une position fixe de mémoire (déterminée par le type d ’interruption)  une partie de la mémoire et réservée pour ça Ch.2 11
  • 69.
  • 70.
    Le pgm degestion de l’interruption Ch.2 13 (interrupt handler)  Est un pgm qui détermine la nature d’une interruption et exécute les actions requises  L’exécution est transférée à ce pgm...  …et doit revenir au programme initial au point d’interruption pour que celui-çi continue normalement ses opérations  Le point d’interruption peut se situer n’importe où dans le pgm (excepté où les interruptions ne sont pas habilitées).  L’on doit donc sauvegarder l’état du programme  Registres UCT et autres infos nécessaires pour reprendre le programme après
  • 71.
    Interruptions causées parles périphériques ou par le matériel Ch.2 14  E/S lorsq’une opération E/S est terminée  Bris de matériel (ex: erreur de parité)
  • 72.
    Interruptions causées parle programme usager Ch.2 15  Exception Division par 0, débordement Tentative d’exécuter une instruction protégée Référence au delà de l’espace mémoire du progr.  Appels du Système Demande d’entrée-sortie Demande d’autre service du SE  Minuterie établie par programme lui- même
  • 73.
    Interruptions causées parle SE Ch.2 16  Minuterie établie par le SE  Préemption: processus doit céder l’UCT à un autre processus
  • 74.
    Terminologie d`interruptions Ch.2 17  Pasnormalisée, d’ailleurs les mécanismes de traitement sont pareils…  C’est une bonne idée de distinguer entre: trappes: causées par le pgm en exécution: division par 0, accès illégal, appels du système... interruptions: causées par événements indépendants: minuterie, fin d` E/S fautes: ce mot est utilisé surtout par rapport à la pagination et la segmentation.
  • 75.
    Ordre séquentiel desinterruptions [Stallings]  Interruption désactivée durant l’exécution d’un IH  Les interruptions sont en attente jusqu’à ce que l’UCT active les interruptions (file d’attente en matériel).  L’UCT examine s’il y a des interruptions en attente après avoir terminé d’exécuter l’IH Ch.2 18
  • 76.
    Interruptions avec priorités  L’IHd’une interruption de priorité faible peut se faire interrompre par une interruption de priorité élevée  Exemple: les données arrivant sur une ligne de communication doivent-être absorbées rapidement pour ne pas causer de retransmissions Ch.2 19
  • 77.
  • 78.
    La Multiprogrammation estpossible dans le cas de méthode (b) Ch.2 21  Après l’initiation d’une op d’E/S, le contrôle retourne à l’UCT  Qui peut utiliser le temps d’attente E/S pour exécuter un autre programme
  • 79.
    Ch.2 22 Pour gérererles unités d’E/S (plus. E/S peuvent être en cours) Tableau de statut des unités E/S Erreur dans la figure: imprimante devrait être
  • 80.
    Accès direct àla mémoire (DMA) Ch.2 23  Sans DMA, tous les accès de mémoire passent à travers l’UCT  Donc les E/S occupent une certaine portion du temps de l’UCT, même si l’UCT pourrait en même temps exécuter un processus (vol de cycles)  Avec DMA, les unités d’E/S transfèrent les données directement avec la mémoire  L’UCT est impliquée seulement pour initier et terminer les E/S  L’UCT est complètement libre d’exécuter d’autres processus (pas de vol de cycles)
  • 81.
    MEMOIRE MEMOIRE UNITÉS E/S UNITÉS E/S UCT UCT SansDMA Accès directe (DMA) transfert données Ch.2 24
  • 82.
    Hiérarchie de mémoire Ch.225  Différentes types de mémoire  Constituent une hiérarchie vitesse (de plus vite à moins vite) coût (de plus cher à moins cher) permanence ou non
  • 83.
    Hiérarchie de mémoire RAM Ch.226 p. ex. mémoire flash
  • 84.
    Important pour lacompréhension du concept de mémoire virtuelle Ch.2 27  L’UCT ne peut pas accéder à une instruction ou à une donnée que s’ils se trouvent En cache dans les ordinateurs où il y a de cache Ou sinon en mémoire centrale (RAM)  Donc ces données doivent être apportées en RAM ou cache au besoin
  • 85.
    Protection Ch.2 28  Plusieurs processuset le S/E partagent la mémoire, exécutant parfois les mêmes instructions  Il faut empêcher que l ’un fasse des choses réservées à l ’autre  Il faut les protéger les uns des autres  Protection d ’instructions  Protection de mémoire
  • 86.
    Instructions protégées =privilégiées Ch.2 29  Ne peuvent être exécutées que par le S/E, en mode superviseur  Exemples:  Les instructions d’E/S  Instructions pour traiter les registres non- visibles d’UCT  Instructions pour la minuterie  Instructions pour changer les limites de mémoire  Instructions pour changer de mode d’exécution (superviseur,usager)  Le programme usager peut demander au SE que ces opérations soient exécutées, mais il ne peut pas les exécuter directement
  • 87.
    Fonctionnement double mode superviseu r usage r setuser mode  Un registre d’UCT contient un bit qui dit si l ’UCT exécute couramment en mode superviseur ou en mode usager  ce bit est changé automatiquement à mode superviseur lors d’une interruption  certaines instructions ne peuvent être exécutées que en mode superviseur (instructions privilégiées):  des tentatives de les exécuter en mode usager causeront une interruption, et retour à mode superviseur  le mode superviseur peut être changé à mode usager par une instruction privilégiée  ces deux modes ont aussi des autres noms, v. livre Ch.2 30 Interrupt/ fault
  • 88.
    Protection de mémoire:chaque processus doit rester dans ses propres bornes de mémoire  Solution typique: deux registres dans l ’UCT  quand l ’UCT exécute un processus, elle sait quelle est la borne inférieure et supérieure de la zone de mémoire de ce processus  l ’adresse de chaque instruction est comparée à ces deux adresses avant l ’exécution  si un processus cherche à dépasser ses limites: interruption Ch.2 31
  • 89.
    Protection de mémoire  l’adressede chaque instruction est comparée à ces deux adresses avant l’exécution  seulement si le processus exécute en mode usager  si un processus cherche à dépasser ses bornes:  Interruption  mode superviseur  les instructions pour affecter les registres bornes sont privilégiées Ch.2 32
  • 90.
    Appels du système(system calls) Ch.2 33  Quand un processus usager a besoin d ’un service du SE, par ex. E/S, il exécute un appel du système  C’est une instruction qui cause une interruption (trap) et changement de mode (mode superviseur)  Est associée à des paramètres qui indiquent le type de service désiré  Le S/E prend la relève et exécute le service, il retourne puis au processus appelant avec des params qui indiquent le type de résultat  changement de mode (mode usager)
  • 91.
    Concepts importants duChapitre 2 Ch.2 34  Registres d’UCT, tampons en mémoire, vecteurs d’interruption  Interruption et polling  Interruptions et leur traitement  Méthodes d’E/S avec et sans attente, DMA  Tableaux de statut de périphériques  Hiérarchie de mémoire  Protection et instructions privilégiées, modes d’exécution  Registres bornes ou limites  Appels de système
  • 92.
    Dans le livre,pour ce chapitre, vous devez Ch.2 35  Étudier le chapitre entier  La section 2.3 n’a pas été discutée en classe, cependant son contenu est important pour la compréhension du fonctionnement des systèmes informatiques et sûrement elle est enseignée dans d’autres cours… SVP réviser à discuter plus tard (Chap. 13)
  • 93.
    Informations additionnelles Ch.2 36  Pourdes explics claires sur comment différents parties d’un ordinateur fonctionnent, je vous recommande hautement http://computer.howstuffworks.com/ Un site qui contient des explications très claires sur un grand nombre de sujets (malheureusement, aussi beaucoup de publicité)
  • 94.
    1 Structure des Systèmes d’Exploitation Chapitre3 Beaucoup de choses dans ce chap. sont faciles à lire et je vais pas les discuter en classe. Nous reviendrons sur plusieurs de ces concepts. Section 3.7 sera discutée dans le lab. http://w3.uqo.ca/luigi/
  • 95.
    Concepts importants duChapitre 3 Ch.3 2  Responsabilités et services d’un SE  Le noyau  Appels du système (system calls)  Communication entre processus Messagerie et mémoire partagée  Structure à couches  Machines virtuelles
  • 96.
    Gestion de processuset UCT Ch.3 3  Un processus=tâche est un programme en exécution  il a besoin de ressources pour exécuter (UCT, mémoire, unités E/S...)  Le SE est responsable pour:  allocation de ressources aux processus  création, terminaison des processus  suspension, reprise des processus  synchronisation, communication entre processus
  • 97.
    Gestion de mémoireprincipale (RAM) Ch.3 4  Le SE est responsable pour: savoir quels processus utilisent quelles parties de la mémoire savoir quels processus en demandent, et combien allouer la mémoire quand elle devient disponible libérer la mémoire
  • 98.
    Ch.3 5 Gestion demémoire virtuelle mag n etic tapes optical disk ma g n etic disk electro n ic disk cache ma i n m em o r y registers  La mémoire principale est souvent trop petite pour contenir tous les processus en exécution  La mémoire secondaire (disques, flash) est normalement utilisée pour contenir les parties d`un processus qui ne sont pas actives à l ’instant  La mémoire principale et la mémoire secondaire forment donc une unité logique appelée mémoire virtuelle  Pour implanter la mémoire virtuelle, le SE doit gérer de façon conjointe mémoire RAM et mémoire disque  Mécanisme de va-et-vient (swap) Hiérarchie de mémoire!
  • 99.
    Services primaires desSystèmes d’exploitation Ch.3 6  Exécution de programmes: chargement, exécution (load, run)  Opérations E/S  Manipulation fichiers  Communication et synchronisation entre processus  Détection et traitement d’erreurs
  • 100.
    Autres services importants Ch.37  Allocation de ressources  Protection de ressources  Comptabilité
  • 101.
    Le noyau (kernel)du SE Ch.3 8  La partie résidente (toujours en RAM) du SE est appelée Kernel = noyau  Les autres parties sont amenées en RAM au besoin  Contient les fonctionnalités critiques du SE: elles doivent toujours être prêtes à l ’utilisation  traitement d ’interruptions  gestion de UCT  gestion mémoire  communication entre processus  etc.  À part ça, quoi exactement mettre dans le kernel est une question pour les concepteurs des SE  La plupart des fonctionnalités discutées dans ce cours sont normalement dans le kernel
  • 102.
    Appels du système Ch.39  L’interface entre un processus et le SE directement disponibles dans les langages de programmation `bas niveau` (assembleur, C, C++) ils sont cachés dans les langages a haut niveau (Java, Ada...)  Utilisent des paramètres pour transmettre la définition exacte des besoins de l ’usager le résultat de l`appel (successful, unsuccessful...)
  • 103.
    Interpréteur de commandesen UNIX Le command interpreter (shell) peut démarrer et charger différents processus en mémoire, exécutant des appels de système appropriés (fork, exec). Lire détails dans le livre, aussi v. sessions exercices. Ch.3 10
  • 104.
    Deux modèles decommunication entre processus par appels de système a) transfert de messages entre processus (message passing) - utilisant le service de messagerie offert par le noyau b) à travers mémoire partagée entre processus (shared Ch.3 11
  • 105.
    Messagerie et mémoirepartagéé  Messagerie:  il faut établir une connexion entre processus (appels de système open connection, accept connection, close connection, read/send message)  les processus s ’envoient des messages utilisant des identificateurs préalablement établis  Mémoire partagée  il est nécessaire d ’établir une zone de communication entre processus  les processus doivent mutuellement synchroniser leur accès a cette zone  Pour ceci, il font appel au SE (Chap. 7) v. chap. 7: synchro de proc. Ch.3 12
  • 106.
    Programmes système Pas partiedu kernel, en augmentent la fonctionnalité. Voir discussion et exemples dans le livre Ch.3 13
  • 107.
    Partage de responsabilitésentre programmes de systèmes et noyau Ch.3 14  C’est en partie une décision de conception de SE de décider quelles fonctionnalités doivent être implémentées dans le kernel, et quelles dans les programmes de système.  Dans l ’évolution des SE il y a eu un transfert de fonctionnalités vers l ’extérieur de la figure précédente  Dans les SE modernes, les programmes de système sont l`interface entre usager et noyau
  • 108.
    Structure en couchesdans les SE modernes Ch.3 15  Un SE est divisé dans un certain nombre de couches, bâties les unes sur les autres la couche la plus basse est le matériel la plus élevée est l ’interface usagers  Les couches supérieures utilisent les fonctionnalités fournies par les niveaux inférieurs
  • 109.
    Structure à couches  opérationscréées dans une couche pour les couches extérieures  opérations fournies par une couche, utilisées par la prochaine couche, et cachées aux couches extérieures  opérations d ’une couche intérieure rendues disponibles à une couche extérieure  à éviter en principe, mais… v. après Ch.3 16
  • 110.
    Structure à couchesdans le système THE (1968) Ch.3 17  La structure à couches fut inventée dans le système THE (E.W. Dijkstra) qui avait les couches suivantes: Interface usager programmes usagers gestion E/S pilotage console opérateur gestion mémoire et tampons gestion UCT matériel
  • 111.
    L’autre possibilité seraitla structure réseau  Plus difficile à gérer, à cause des nombreuses interfaces possibles À couches Ch.3 18 Réseau
  • 112.
    Avantages, désavantages desuivre fidèlement une structure en couches Ch.3 19  Avantages:  Chaque couche ne doit connaître que les fonctionnalités fournies par la couche immédiatement sous-jacente  Chaque couche ajoute ses propres fonctionnalités  Les erreurs peuvent plus facilement être isolés dans une couche spécifique  Maison construite un étage à la fois… poser l’étage n seulement quand l’n-1 est solide  Désavantages:  Pas efficace car un appel des programmes usager à des ressources du matériel implique autant d’appels qu’il y a des couches intermédiaires  Excellent principe, pas toujours fidèlement suivi
  • 113.
    Structure de système- Approche simple Ch.3 20  MS-DOS - cherchait à obtenir une fonctionnalité maximale avec des ressources limitées  mono-tâche, mono-usager  pas très modularisé  manque de séparation claire entre couches  accès direct aux périphériques (écran, etc.) permis aux programmes d`application  manque de contrôles, vulnerabilité  malheureusement, il fut adapté à des fonctionnalités plus complexes...  Fut la prémière base de Windows et une grande partie de l’histoire de Windows a été un effort de dépasser les limitations de MS-DOS
  • 114.
  • 115.
    Structure UNIX Ch.3 22  Multi-tâches,multi-usagers depuis le début  Le système UNIX initial était aussi préoccupé par les limitation du matériel  Distinction entre:  programmes du système  noyau  tout ce qu’il y a entre l ’interface des appels de système et le matériel  fournit dans une seule couche un grand nombre de fonctionnalités • système fichiers, ordonnancement UCT, gestion mémoire...  Plus modulaire et protégé que MS-DOS
  • 116.
    Structure UNIX: peude couches Ch.3 23
  • 117.
    Micronoyaux (microkernels) Ch.3 24  Dansles premiers SE, aussi UNIX, tout était dans le noyau  Après, un effort fut fait pour laisser dans le noyau UNIX seulement les fonctionnalités absolument nécessaires  Une des fonctionnalités du micronoyau UNIX est la communication par échange de messages utilisé pour la communication entre programme client et service
  • 118.
    25 Structure à couchesdans OS/2 (IBM) suit les idées d’unix L ’OS/2 était beaucoup mieux organisé que MS-DOS, et donc moins vulnérable. Cependant il était peu performant. Win-NT a cherché à utiliser des principes semblables, mais avec une
  • 119.
    Structure client-serveur dansnoyau Win-NT Win-NT a un petit noyau qui fournit une structure client- serveur , enutilisant échanges de messages Supporte différents SE: Win, OS/2, Posix Ch.3 26
  • 120.
    Machines virtuelles: leproblème et la solution Ch.3 27  Comment permettre de rouler différents SE sur une seule machine physique?  Pas évident, car chaque SE demande accès direct au matériel  SOLUTION: Un programme qui crée une couche qui met à disposition plusieurs machines physiques virtuelles  Chaque machine se comporte comme une machine physique séparée  Sur chacune, nous pouvons rouler un SE différent
  • 121.
    Machines Virtuelles Ch.3 28  Virtuelen informatique dénote quelque chose qui n ’est pas réel, n ’est pas du matériel: il est construit par le logiciel sur la base des ressources fournies par le matériel  Une machine virtuelle est une machine créée par des couche de logiciel  Elle peut avoir des caractéristiques identiques à la machine physique du système:  mêmes instructions, etc.  Ou elle peut ‘simuler’ une autre machine physique  p.ex.pour exécuter Microsoft sur Apple  Plusieurs machines virtuelles peuvent être créées sur une machine physique donnée!
  • 122.
    (a) Une seulemach. réelle et un seul noyau Ch.3 29 (b) plus. mach. virtuelles et plus. noyaux
  • 123.
    Fonctionnement typique  Le systèmeVM laisse exécuter normalement les instructions non privilégiées  Les appels au système sont exécutés par le système VM et les résultats sont passés à la machine virtuelle sur laquelle le processus exécute Ch.3 30
  • 124.
    Avantages  Chaque machine virtuellepeut utiliser un SE différent!  En théorie, on peut bâtir des machines virtuelles sur des machines virtuelles!  Protection complète, car les machines virtuelles sont complètement isolées les unes des autres  Un nouveau SE peut être développé sur une machine virtuelle sans déranger les autres Ch.3 31
  • 125.
    Implémentations Ch.3 32  Le conceptde VM est très utilisé pour permettre de rouler un SE sur un autre  P.ex. SUN, Apple, Linux permettent de rouler Windows sur leur plateforme,  Ils doivent fournir à Windows un environnement que Windows reconnaît comme son environnement Intel usuel
  • 126.
    Concepts importants duChapitre 3 Ch.3 33  Responsabilités et services d’un SE  Le noyau  Appels du système (system calls)  Communication entre processus Messagerie et mémoire partagée  Structure à couches  Machines virtuelles
  • 127.
    Par rapport aumanuel… Ch.3 34  Étudier sections 3.1 jusqu’à 3.6.  La section 3.7 n’a pas été discutée en classe mais elle contient des concepts importants concernant Java donc c’est une excellente idée de la lire  Les sections 3.8 et 3.9 ne sont pas sujet d’examen cependant il est utile de les lire.
  • 128.
  • 129.
    Concepts importants duChapitre 4 Ch.4 2  Processus  Création, terminaison, hiérarchie  États et transitions d’état des processus  Process Control Block  Commutation de processus  Sauvegarde, rechargement de PCB  Files d’attente de processus et PCB  Ordonnanceurs à court, moyen, long terme  Processus communicants  Producteurs et consommateurs
  • 130.
    Processus et terminologie Ch.4 3 (aussiappelé job, task, user program)  Concept de processus: un programme en exécution  Possède des ressources de mémoire, périphériques, etc  Ordonnancement de processus  Opérations sur les processus  Processus coopérants  Processus communicants
  • 131.
    Création de processus Ch.44  Les processus peuvent créer d’autres processus, formant une hiérarchie (instruction fork ou semblables)
  • 132.
    Terminaison de processus Ch.45  Un processus exécute sa dernière instruction pourrait passer des données à son parent ses ressources lui sont enlevées  Le parent termine l’exécution d’un fils (avortement) pour raisons différentes le fils a excédé ses ressources le fils n`est plus requis  etc.
  • 133.
    Arbre de processusen UNIX Ch.4 6
  • 134.
    État de processusIMPORTANT Ch.4 7  Au fur et a 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 l ’UCT 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 ’UCT terminated: fin d ’exécution
  • 135.
    Ch.4 8 Diagramme detransition d`états d`un processus Ordonnanceur = angl.
  • 136.
    États Nouveau, Terminé:  Nouveau  LeSE a créé le processus  a construit un identificateur pour le processus  a construit les tableaux pour gérer le processus  mais ne s’est pas encore engagé à exécuter le processus (pas encore admis)  pas encore alloué des ressources  La file des nouveaux travaux est souvent appelée spoule travaux (job spooler)  Terminé:  Le processus n ’est plus exécutable, mais ses données sont encore requises par le SE (comptabilité, etc.) Ch.4 9
  • 137.
    Transitions entre processus  Prêt Exécution Lorsque l ’ordonnanceur UCT 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’UCT • Cas important: le processus à épuisé son intervalle de temps (minuterie) Ch.4 10
  • 138.
    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 Ch.4 11
  • 139.
    Sauvegarde d’informations processus Ch.412  En multiprogrammation, un processus exécute sur l ’UCT de façon intermittente  Chaque fois qu’un processus reprend l ’UCT (transition prêt  exécution) il doit la reprendre dans la même situation où il l’a laissée (même contenu de registres UCT, etc.)  Donc au moment où un processus sort de l’état exécution il est nécessaire de sauvegarder ses informations essentielles, qu’il faudra récupérer quand il retourne à cet état
  • 140.
    PCB = ProcessControl Block: Représente la situation actuelle d ’un processus, pour le reprendre plus tard Registres UCT Ch.4 13
  • 141.
    Process Control Block(PCB) IMPORTANT pointeur: les PCBs sont rangés dans des listes enchaînées (à voir) état de processus: ready, running, waiting… compteur programme: le processus doit reprendre à l ’instruction suivante autres registres UCT bornes de mémoire fichiers qu’il a ouvert etc., v. manuel Ch.4 14
  • 142.
    Commutation de processeur Ch.4 15 Aussiappélé commutation de contexte ou context switching  Quand l’UCT passe de l’exécution d ’un processus 0 à l ’exécution d`un proc 1, il faut mettre à jour et sauvegarder le PCB de 0 reprendre le PCB de 1, qui avait été sauvegardé avant remettre les registres d ’UCT tels que le compteur d ’instructions etc. dans la même situation qui est décrite dans le PCB de 1
  • 143.
    Ch.4 16 Commutation deprocesseur (context switching) Il se peut que beaucoup de temps passe avant le retour au processus 0, et que beaucoup d’autres proc soient exécutés entre temps
  • 144.
    Le PCB n’est pas la seule information à sauvegarder... (le manuel n’est pas clair ici) Ch.4 17  Il faut aussi sauvegarder l ’état des données du programme  Ceci se fait normalement en gardant l ’image du programme en mémoire primaire ou secondaire (RAM ou disque)  Le PCB pointera à cette image
  • 145.
    La pile d’unprocessus (v. Stallings App. 1B) aussi à sauvegarder Ch.4 18  Quand un processus fait appel à une procédure, à une méthode, etc., il est nécessaire de mettre dans une pile l’adresse à laquelle le processus doit retourner après avoir terminé cette procédure, méthode, etc.  Aussi on met dans cette pile les variables locales de la procédure qu’on quitte, les paramètres, etc., pour les retrouver au retour  Chaque élément de cette pile est appelé stack frame ou cadre de pile  Donc il y a normalement une pile d’adresses de retour après interruption et une pile d’adresses de retour après appel de procédure  Ces deux piles fonctionnent de façon semblable, mais sont indépendantes  Les informations relatives à ces piles (base, pointeur…) doivent aussi être sauvegardées au moment de la commutation de contexte
  • 146.
    La Pile d’unprocessus Appel A Appel B Ch.4 19 P A B Données B Données A Données P PIL E
  • 147.
    Ch.4 Pointeurs de pileprocessus à sauvegarder: base et borne cadre 4 cadre 3 cadre 2 cadre 1 pointeur de base pointeur de borne La pile fait normal. partie de l’image du programme, mais les pointeurs sont normal. des registres d’UCT donc il sont
  • 148.
    Ch.4 21 Rôle dumatériel et du logiciel dans le traitement d’interruptions MATÉRIEL LOGICIEL Signal d’interruption généré UCT termine l’instruction courante et détecte interruption Registres d’UCT sont sauvegardés dans une pile UCT saute à l’adresse trouvée dans le vecteur d’interruption Infos mises à jour et sauvegardées dans PCB Le code de traitement de l’interruption est exécuté L’ordonnanceur choisit un processus dans la file prêt Les registres d’UCT sont rechargés avec ce qu’on avait sauvegardé dans PCB pour ce processus, Les infos relatives à ce processus sont rétablies à partir de son PCB dispatche r
  • 149.
    Files d’attente IMPORTANT Ch.422  Les ressources d ’ordinateur sont souvent limitées par rapport aux processus qui en demandent  Chaque ressource a sa propre file de processus en attente  À un moment donné, un proc ne peut se trouver que dans une seule des différentes files du SE  En changeant d’état, les processus se déplacent d ’une file à l`autre  File prêt: les processus en état prêt=ready  Files associés à chaque unité E/S  etc.
  • 150.
    Ce sont lesPCBs qui sont dans les files d’attente (dont le besoin d ’un pointeur dans le PCB) file prêt Nous ferons l’hypothèse que le premier processus dans une file est celui qui utilise la ressource: ici, proc7 exécute, proc3 utilise disque 0, etc. Ch.4 23
  • 151.
    Ch.4 Cet ensemble defiles inclut donc la table de statut périphériques (fig. au Chap. 2) 2 fois la même erreur ici: imprimante devrait être
  • 152.
    Une façon plussynthétique de décrire la mêmesituation (pour les devoirs et les examens) prêt  7  2 bandmag0  bandmag1  Ch.4 25
  • 153.
    Les PCBs nesont pas déplacés en mémoire pour être mis dans les différentes files: ce sont les pointeurs qui changent. ready disk unit 0 . . . . . . PCB2 PCB3 PCB4 PCB5 PCB6 PCB7 PCB14 term. unit 0 Ch.4 26
  • 154.
    Ordonnanceurs (schedulers) Ch.4 27  Programmesqui gèrent l ’utilisation de ressources de l`ordinateur  Trois types d`ordonnanceurs : À court terme = ordonnanceur processus: sélectionne quel processus doit exécuter la transition prêt  exécution À long terme = ordonnanceur travaux: sélectionne quels processus peuvent exécuter la transition nouveau  prêt (événement admitted) (de spoule travaux à file prêt) À moyen terme: nous verrons
  • 155.
    Ordonnanceur travaux =long terme et ordonnanceur processus = court terme Ch.4 28 Ordonnanceur travaux Ordonnanceur processus
  • 156.
    Ordonnanceurs Ch.4 29  L`ordonnanceur àcourt terme est exécuté très souvent (millisecondes) doit être très efficace  L`ordonnanceur à long terme doit être exécuté beaucoup plus rarement: il contrôle le niveau de multiprogrammation Un des ses critères pourrait être la bonne utilisation des ressources de l’ordinateur P.ex. établir une balance entre travaux liés à l’UCT et ceux liés à l ’E/S
  • 157.
    Ordonnancement de processus(court terme) Ch.4 30 Disponibilité Ress.
  • 158.
    Ordonnanceur à moyenterme Ch.4 31  Le manque de ressources peut parfois forcer le SE à suspendre des processus ils seront plus en concurrence avec les autres pour des ressources ils seront repris plus tard quand les ressources deviendront disponibles  Ces processus sont enlevés de mémoire centrale et mis en mémoire secondaire, pour être repris plus tard `swap out`, `swap in` , va-et-vien
  • 159.
    Ordonnanceurs à courtet moyen terme Ch.4 32 cour t moye n
  • 160.
    États de processusdans UNIX SVR4 (Stallings) Un exemple de diagramme de transitions d’états pour un SE réel Kernel, user mode =monitor , user mode 3 Ch.4 3
  • 161.
    Processus coopérants Ch.4 34  Lesprocessus coopérants peuvent affecter mutuellement leur exécution  Avantages de la coopération entre processus: partage de l ’information efficacité en faisant des tâches en parallèle modularité la nature du problème pourrait le demander  P.ex. gestion d’événements indépendants
  • 162.
    Ch.4 35 Le pbdu producteur - consommateur  Un problème classique dans l ’étude des processus communicants un processus producteur produit des données (p.ex.des enregistrements d ’un fichier) pour un processus consommateur un pgm d’impression produit des caractères -- consommés par une imprimante un assembleur produit des modules objet qui seront consommés par le chargeur  Nécessité d’un tampon pour stocker les items produits (attendant d’être
  • 163.
    Ch.4 36 Tampons decommunication Prod 1 donn Cons Prod Cons 1 donn 1 donn 1 donn Si le tampon est de longueur 1, le producteur et consommateur doivent forcement aller à la même vitesse Des tampons de longueur plus grandes permettent une certaine indépendance. P .ex. à droite le
  • 164.
    Le tampon borné(bounded buffer) une structure de données fondamentale dans les SE b[0] b[1] b[7] b[2] b[6] b[3] b[5] b[4] ou in: 1ère pos. libre out: 1ère pos. pleine Le tampon borné se trouve dans la mémoire partagée entre consommateur et usager b[0] b[1] b[2] b[3] b[4] b[5] b[6] b[7] in: 1ère pos. libre Ch.4 37 out: 1ère pos. pleine bleu: plein, blanc: libre À l’écriture d’une nouvelle info dans le tampon, le producteur met à jour le pointeur in Si le tampon est plein, le prod devra s’endormir, il sera plus tard réveillé par le consommateur Le rôle du consommateur est symétrique (v. Chap. 7)
  • 165.
    Utilisation du conceptdu tampon borné Ch.4 38  Les tampons bornés sont partout en informatique, et partout dans les SE  Les files utilisées dans un SE sont des tampons bornés:  ‘pipes’ dans Unix  files d’attente pour ressources: file prêt, files pour imprimante, pour disque, etc.  Les protocoles de communications utilisent des tampons bornés: TCP, et autres  Un client communique avec un serveur par des tampons bornés, etc.
  • 166.
    Concepts importants duChapitre 4 Ch.4 39  Processus Création, terminaison, hiérarchie  États et transitions d’état des processus  Process Control Block PCB  Commutation de processus Sauvegarde, rechargement de PCB  Files d’attente de processus et PCB  Ordonnanceurs à court, moyen, long terme  Processus communicants Producteurs et consommateurs
  • 167.
    Par rapport aumanuel… Ch.4 40  Tout à étudier à l’exception des sections 4.5.1, 4.5.2, 4.5.3, 4.5.6 et 4.5.7  Les exemples contenant du code Java et C seront expliqués aux sessions d’exercices
  • 168.
    Threads et Lightweight Processes Chapitre5 En français on utilise parfois ‘flots’ ou ‘fils’ pour ‘threads’. Votre manuel préfère le mot anglais http://w3.uqo.ca/lui gi/
  • 169.
    Concepts importants duChap. 5 Ch.5 2  Threads et processus: différence  Threads de noyau et d’usager: relations  LWP: lightweight processes, threads légers
  • 170.
    Flots = threads= lightweight processes Ch.5 3  Un thread est une subdivision d`un processus Un fil de contrôle dans un processus  Les différents threads d ’un processus partagent l’espace adressable et les ressources d’un processus  lorsqu’un thread modifie une variable (non locale), tous les autres threads voient la modification un fichier ouvert par un thread est accessible aux autres threads (du même processus)
  • 171.
    Exemple Ch.5 4  Le processusMS-Word implique plusieurs threads: Interaction avec le clavier Rangement de caractères sur la page Sauvegarde régulière du travail fait Contrôle orthographe Etc.  Ces threads partagent tous le même document
  • 172.
    Processus à unthread et à plusieurs threads Ch.5 5
  • 173.
    Threads et processus[Stallings] Ch.5 6
  • 174.
    Processu s Ch.5 7  Possède samémoire, ses fichiers, ses ressources, etc.  Accès protégé à la mémoire, fichiers, ressources d’autres processus
  • 175.
    Thread Ch.5 8  Possède unétat d’exécution (prêt, bloqué…)  Possède sa pile et un espace privé pour variables locales  A accès à l’espace adressable, fichiers et ressources du processus auquel il appartient En commun avec les autres threads du même proc
  • 176.
    Pourquoi les threads Ch.59  Reactivité: un processus peut être subdivisé en plusieurs threads, p.ex. l’un dédié à l’interaction avec les usagers, l’autre dédié à traiter des données L’un peut exécuter tant que l’autre est bloqué  Utilisation de multiprocesseurs: les threads peuvent exécuter en parallèle sur des UCT différentes
  • 177.
    La commutation entrethreads est moins dispendieuse que la commutation entre processus  Un processus possède mémoire, fichiers, autres ressources  Changer d`un processus à un autre implique sauvegarder et rétablir l’état de tout ça  Changer d’un thread à un autre dans le même proc est bien plus simple, implique sauvegarder les registres de l ’UCT, la pile, et peu d ’autres choses Ch.5 10
  • 178.
    La communication aussiest moins dispendieuse entre threads que entre processus Ch.5 11  Étant donné que les threads partagent leur mémoire, la communication entre threads dans un même processus est plus efficace que la communication entre processus
  • 179.
    La création estmoins dispendieuse Ch.5 12  La création et terminaison de nouveaux threads dans un proc existant est aussi moins dispendieuse que la création d’un proc
  • 180.
    Threads de noyau(kernel) et d’utilisateur Ch.5 13  Où implémenter les threads: Dans les bibliothèques d’usager  contrôlés par l’usager Dans le noyau du SE:  contrôlés par le noyau Solutions mixtes
  • 181.
    Threads d’utilisateur etde noyau (kernel) Ch.5 14  threads d’utilisateur: supportés par des bibliothèques d’usager ou langage de prog  efficace car les ops sur les threads ne demandent pas des appels du système  désavantage: le noyau n ’est pas capable de distinguer entre état de processus et état des threads dans le processus  blocage d ’un thread implique blocage du processus  threads de noyau: supportés directement par le noyau du SE (WIN NT, Solaris)  le noyau est capable de gérer directement les états des threads  Il peut affecter différents threads à différentes UCTs
  • 182.
    Solutions mixtes: threadsutilisateur et noyau Ch.5 15  Relation entre threads utilisateur et threads noyau  plusieurs à un  un à un  plusieurs à plusieurs  Nous devons prendre en considération plusieurs niveaux:  Processus  Thread usager  Thread noyau  Processeur (UCT)
  • 183.
    Plusieurs threads utilisateurpour un thread noyau: l’usager contrôle les threads Ch.5 16 usage r noya u  Le SE ne connaît pas les threads utilisateur  v. avantages et désavantages mentionnés avant
  • 184.
    Un vers un:le SE contrôle les threads  Les ops sur les threads sont des appels du système  Permet à un autre thread d’exécuter lorsqu’un thread exécute un appel de système bloquant  Win NT, XP, OS/2 usage r noya u Ch.5 17
  • 185.
    Plusieurs à plusieurs:solution mixte Ch.5 18 usager noyau  Flexibilité pour l ’usager d ’utiliser la technique qu’il préfère  Si un thread utilisateur bloque, son kernel thread peut être affecté à un autre  Si plus. UCT sont disponibles, plus. kernel threads peuvent exécuter en même temps  Quelques versions d’Unix, dont Solaris
  • 186.
    Ch.5 19 Threads dansSolaris 2 (une version de Unix) Plusieurs à plusieurs, usager et Tâche = processus
  • 187.
    Processus légers (lightweight,LWP)  Fonctionnent comme des UCT virtuelles, pouvant exécuter des threads niveau usager  Sont entre les threads usager et les threads noyau  Il y a un thread noyau pour chaque LWP, chaque LWP est lié à son propre thread noyau  Chaque processus doit contenir au moins un LWP  La bibliothèque des threads exécute les threads utilisateur sur les LWP disponibles  Seulement les threads qui sont associés à un LWP peuvent exécuter, les autres sont en attente d ’exécuter (bloqués)  similarité avec ordonnancement UCT Ch.5 20
  • 188.
    Threads à niveauusager: liés et libres Ch.5 21  Un thread à niveau usager est lié s’il est attaché à un LWP de façon permanente  Est non lié sinon
  • 189.
    Utilisation des L WP Ch.522  Les LWP sont demandés quand un thread usager a besoin de communiquer avec le noyau  Appel système (E/S…)  car dans ce cas un nouveau thread peut exécuter tant que l’autre est bloqué en attente  Il y a besoin d ’un LWP pour chaque thread qui devient bloqué pour un appel de système  p.ex. s ’il y a 5 threads qui demandent de l ’E/S, nous avons besoin de 5 LWP  s`il y a seul. 4 LWP, une des demandes d ’E/S doit attendre qu ’un LWP devienne libre ou soit créé
  • 190.
    Exécution des L WP  Lesthreads de noyau qui implémentent les LWP exécutent sur les UCT qui deviennent disponibles  Si un thread noyau se bloque, son LWP se bloque aussi,  mais un processus (tâche) peut en obtenir un autre, ou un nouveau LWP peut être créé  Si un LWP devient bloqué, l’UCT qui l’exécute peut être affectée à un autre thread Ch.5 23
  • 191.
    Création et terminaisondynamique de L WP Ch.5 24  La biblio. de threads à niveau usager crée automatiquement des nouveaux LWP au besoin  Termine les LWP qui ne sont plus demandés
  • 192.
    Structures de données:Solaris  Une tâche=processus Solaris peut être associée à plusieurs LWP  Un LWP contient un ensemble de registres, des infos de mémoire et de comptabilisation  Les structures des données sont essentiellement des PCBs enchaînés Ch.5 25
  • 193.
    Les Java threadsimplémentent ces idées Ch.5 26 Il y aura discussion sur les Java threads dans le lab
  • 194.
    Multithreads et monothreads Ch.527  MS-DOS supporte un processus usager à monothread  UNIX SVR4 supporte plusieurs processus à monothread  Solaris, Widows NT, XP et OS2 supportent plusieurs processus multithreads
  • 195.
    Concepts importants duChap. 5 Ch.5 28  threads et processus: différence  threads de noyau et d’usager: relations  LWP: lightweight processes, threads légers  Implémentation en utilisant UCT physiques
  • 196.
    Quoi lire dansle livre Ch.5 29  En classe, nous avons vu seulement 5.1- 5.5  Mais pendant les sessions exercices vous verrez la partie Java  Donc tout le chapitre…
  • 197.
  • 198.
    Aperçu du chapitre Ch.6 2  Concepts de base  Critères d’ordonnancement  Algorithmes d’ordonnancement  Ordonnancement de multiprocesseurs  Ordonnancement temps réel  Évaluation d’algorithmes
  • 199.
    Diagramme de transitiond`états d`un processus Ch. 6 3
  • 200.
    Files d’attente deprocessus pour ordonnancement Ch. 6 4 file prêt Nous ferons l’hypothèse que le premier processus dans une file est celui qui utilise la ressource: ici, proc7 exécute
  • 201.
    Concepts de base Ch.6 5  La multiprogrammation vise à obtenir une  utilisation optimale des ressources, surtout l’UCT  et aussi à un bon temps de réponse pour l’usager  L`ordonnanceur UCT est la partie du SE qui décide quel processus dans la file ready/prêt obtient l ’UCT quand elle devient libre  L ’UCT est la ressource la plus précieuse dans un ordinateur, donc nous parlons d’elle  Cependant, les principes que nous verrons s ’appliquent aussi à l ’ordonnancement des autres ressources (unités E/S, etc).
  • 202.
    Les cycles d’unprocessus  Cycles (bursts) d’UCT et E/S: l’exécution d’un processus consiste de séquences d’exécution sur UCT et d’attentes E/S Ch. 6 6
  • 203.
    Ch. 6 7  Observationexpérimentale:  dans un système typique, nous observerons un grand nombre de court cycles, et un petit nombre de long cycles  Les programmes tributaires de l ’UCT auront normalm. un petit nombre de long cycles UCT  Les programmes tributaires de l’E/S auront normalm. un grand nombre de court cycles UCT Histogramme de durée des cycles UCT
  • 204.
    Quand invoquer l’ordonnanceur UCT  L’ordonnanceur UCT doit prendre sa décision chaque fois que le processus exécutant est interrompu, c’e-à.-d. 1. un processus se se présente en tant que nouveau ou se termine 2. un processus exécutant devient bloqué en attente 3. un processus change d’exécutant/running à prêt/ready 4. un processus change de attente à prêt/ready • • en conclusion, tout événement dans un système cause une interruption de l’UCT et l’intervention de l’ordonnanceur, qui devra prendre une décision concernant quel proc ou thread aura l’UCT après   Préemption: on a préemption si on enlève l’UCT à un processus qui l’avait et ne l’a pas laissée de propre initiative  P.ex. préemption dans le cas 3, pas de préemption dans le cas 2 Plusieurs pbs à résoudre dans le cas de préemption, v. manuel Ch. 6 8
  • 205.
    Dispatcheur Ch. 6 9  Leprocessus qui donne le contrôle au processus choisi par l’ordonnanceur. Il doit se préoccuper de: changer de contexte changer à mode usager réamorcer le processus choisi  Attente de dispatcheur (dispatcher latency) le temps nécessaire pour exécuter les fonctions du dispatcheur il est souvent négligé, il faut supposer qu’il soit petit par rapport à la longueur d’un cycle
  • 206.
    Critères d’ordonnancement Ch. 610  Il y aura normalement plusieurs processus dans la file prêt  Quand l’UCT devient disponible, lequel choisir?  Critères généraux:  Bonne utilisation de l’UCT  Réponse rapide à l’usager  Mais ces critères peuvent être jugés différemment...
  • 207.
    Critères spécifiques d’ordonnancement Ch.6 11  Utilisation UCT: pourcentage d ’utilisation  Débit = Throughput: nombre de processus qui complètent dans l ’unité de temps  Temps de rotation = turnaround: le temps pris par le proc de son arrivée à sa termin.  Temps d’attente: attente dans la file prêt (somme de tout le temps passé en file prêt)  Temps de réponse (pour les systèmes interactifs): le temps entre une demande et la réponse
  • 208.
    Critères d’ordonnancement: maximiser/minimiser Ch.6 12  Utilisation UCT: pourcentage d’utilisation  ceci est à maximiser  Débit = Throughput: nombre de processus qui complètent dans l ’unité de temps  ceci est à maximiser  Temps de rotation (turnaround): temps terminaison moins temps arrivée  à minimiser  Temps d’attente: attente dans la file prêt  à minimiser  Temps de réponse (pour les systèmes interactifs): le temps entre une demande et la réponse 
  • 209.
    Examinons maintenant plusieursméthodes d’ordonnancement et voyons comment elles se comportent par rapport à ces critères Ch. 6 13 nous étudierons des cas spécifiques l’étude du cas général demanderait recours à techniques probabilistes ou de simulation
  • 210.
    Premier arrive, premierservi (First come, first serve, FCFS) Ch. 6 14 Exemple : Processu s P1 P2 P 3 Temps de cycle 24 3 3 Si les processus arrivent au temps 0 dans l’ordre: P1 , P2 , P3Le diagramme Gantt est: P1 P2 P3 30 0 24 27 Temps d’attente pour P1= 0; P2= 24; P3= 27Temps attente moyen: (0 + 24 + 27)/3 = 17
  • 211.
    Premier arrive, premierservi Ch. 6 15  Utilisation UCT = 100%  Débit = 3/30 = 0,1  3 processus complétés en 30 unités de temps  Temps de rotation moyen: (24+27+30)/3 = 27 P1 P2 P3 24 27 30 0
  • 212.
    Tenir compte dutemps 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  Donc P1 attend 0 comme avant  Mais P2 attend 24-2, etc. P1 P2 P3 24 27 30 0 arrivée P2 Ch. 6 16
  • 213.
    FCFS Scheduling (Cont.) Ch.6 17 Si les mêmes processus arrivent à 0 mais dans l’ordre P2 , P3 , P1 . Le diagramme de Gantt est:  Temps moyen d’attente: (6 + 0 + 3)/3 = 3  Temps de rotation moyen: (3+6+30)/3 = 13  Beaucoup mieux!  Donc pour cette technique, les temps peuvent varier grandement par rapport à l’ordre d’arrivée de différent processus  Exercice: calculer aussi le débit, etc. P2 P3 P1 30 0 3 6  Temps d’attente pour P1 = 6 P2 = 0 P3 = 3
  • 214.
    Effet d’accumulation (convoyeffect) dans FCFS Ch. 6 18  Supposons un processus tributaire de l’UCT et plusieurs tributaires de l`E/S (situation assez normale)  Les processus tributaires de l’E/S attendent pour l ’UCT: E/S sous- utilisée (*)  Le processus tributaire de l’UCT fait une E/S: les autres proc exécutent rapidement leur cycle UCT et retournent sur l’attente E/S: UCT sous-utilisée  Processus tributaire de l’UCT fini son E/S, puis les autres procs aussi : retour à la situation (*)  Donc dans ce sens FCFS favorise les procs tributaires de l’UCT  Et peut conduire à une très mauvaise utilisation des ressources  Tant d’UCT que de périphériques  Une possibilité: interrompre de temps en temps les proc tributaires de l’UCT pour permettre aux autres procs d’exécuter (préemption)
  • 215.
    Plus Court d’abord= Shortest Job First (SJF)  Le processus qui demande moins d’UCT part le premier  Optimal en principe du point de vue du temps d’attente moyen (v. le dernier exemple)  Mais comment savons-nous quel processus demande moins d’UCT! Ch. 6 19
  • 216.
    SJF avec préemptionou non Ch. 6 20  Avec préemption: si un processus qui dure moins que le restant du processus courant se présente plus tard, l’UCT est enlevée au proc courant et donnée à ce nouveau processus  SRTF: shortest remaining-time first  Sans préemption: on permet au processus courant de terminer son cycle  Observation: SRTF est logique pour l’UCT car le processus exécutant sera interrompu par l’arrivée du nouveau processus  Il est retourné à l’état prêt  Il est impossible pour les unités qui ne permettent pas de préemption  p.ex. une unité disque, imprimante…
  • 217.
    Ch. 6 21 ProcessusArrivée Cycle 7 4 1 4 P1 P2 P3 P4 0 2 4 5  SJF (sans préemption)  Temps d’attente moyen = (0+(8-2)+(7-4)+(12-5))/4 (0 + 6 + 3 + 7)/4 = 4 –  Temps de rotation moyen = 7+(12-2)+(8-4)+(16-5) = 8 Example de SJF sans préemption 3 16 0 P1 P3 P2 P4 7 8 12 P2 arr. P3 arr. P4 arr
  • 218.
    Ch. 6 22 Exemplede SJF avec préemption Processus Arrivée Cycle P1 0 7 P2 2 4 P3 4 1 P4 5 4  SJF (préemptive)  Temps moyen d`attente = (9 + 1 + 0 +2)/4 = 3  P1 attend de 2 à 11, P2 de 4 à 5, P4 de 5 à 7  Temps de rotation moyen = 16+ (7-2) + (5-4) + (11-5) = 7 11 0 4 5 7 P1 P2 P3 P2 P4 P1 16 2 P2 arr. P3 arr. P4 arr
  • 219.
    Comment déterminer lalongueur des cycles à l’avance? Ch. 6 23  Quelques méthodes proposent de déterminer le comportement futur d ’un processus sur la base de son passé p.ex. moyenne exponentielle
  • 220.
    Estimation de ladurée du prochain cycle Ch. 6 24  Ti : la durée du ième cycle de l’UCT pour ce processus  Si : la valeur estimée du le ième cycle de l’UCT pour ce processus. Un choix simple est: S n+1 = (1/n) _{i=1 to n} Ti (une simple moyenne)  Nous pouvons éviter de recalculer la somme en récrivant: Sn+1 = (1/n) Tn + ((n-1)/n) Sn  Ceci donne un poids identique à chaque cycle
  • 221.
    Estimation de ladurée du prochain cycle Ch. 6 25  Mais les cycles récents peuvent être plus représentatifs des comportements à venir  La moyenne exponentielle permet de donner différents poids aux cycles plus ou moins récents: Sn+1 =  Tn+ (1-) Sn ; 0 <=  <= 1  Par expansion, nous voyons que le poids de chaque cycle décroît exponentiellement  Sn+1 = Tn + (1-)Tn-1 + ... (1-)i Tn-i + ... + (1-)n S1  la valeur estimée S1 du 1er cycle peut être fixée à 0 pour donner priorité max. aux nouveaux processus
  • 222.
    Importance de différentsvaleurs de coefficients [Stallings] Peu d’import. aux cycles récents Beaucoup d’import aux cycles récs Ch. 6 26 Stallings
  • 223.
    Importance de différentsvaleurs de coefficients [Stallings]  S1 = 0 (priorité aux nouveaux processus)  Un coefficient plus élevé réagit plus rapidement aux changements de comportement Ch. 6 27 Stallings
  • 224.
    Un deuxième exemple[Stallings] Stallings Ch. 6 28
  • 225.
    Comment choisir lecoefficient  Ch. 6 29  Un petit coefficient est avantageux quand un processus peut avoir des anomalies de comportement, après lesquelles il reprend son comportement précédent (il faut ignorer son comportement récent)  cas limite:  = 0 on reste sur l ’estimée initiale  Un coefficient élevé est avantageux quand un processus est susceptible de changer rapidement de type d’activité et il reste sur ça  cas limite:    S n+1 = Tn  Le dernier cycle est le seul qui compte
  • 226.
    Le plus courtd’abord SJF: critique Ch. 6 30  Difficulté d’estimer la longueur à l’avance  Plus pratique pour l’ordonnancement travaux que pour l’ordonnancement processus  on peut plus facilement prévoir la durée d’un travail entier que la durée d’un cycle  Il y a assignation implicite de priorités: préférences aux travaux plus courts
  • 227.
    Difficultés majeures avecles méthodes discutées Ch. 6 31  Un processus long peut monopoliser l’UCT s’il est le 1er à entrer dans le système et il ne fait pas d’E/S  Dans le cas de SJF, les processus longs souffriront de famine lorsqu’il y a un apport constant de processus courts
  • 228.
    Tourniquet = Round-Robin (RR) P[0]P[1] P[7] P[2] P[6] P[3] P[5] P[4] Le plus utilisé en pratique  Chaque processus est alloué une tranche de temps (p.ex. 10-100 millisecs.) pour exécuter  Tranche aussi appelée quantum  S’il exécute pour tranche entière sans autres interruptions, il est interrompu par la minuterie et l ’UCT est donnée à un autre processus  Le processus interrompu redevient prêt (à la fin de la file)  Méthode préemptive La file prêt est un cercle (dont RR) Ch. 6 32
  • 229.
    Performance de tourniquet Ch.6 33  S ’il y a n processus dans la file prêt et la tranche est t, alors chaque processus reçoit 1/n du temps UCT dans unités de durée max. t  Si t grand  FIFO  Si t petit... nous verrons
  • 230.
    Ch. 6 34 Exemple:Tourniquet tranche = 20 Processus Cycle P1 53 P2 17 P3 68 P4 24 0 20 37 57 77 97 117 121 134 154 162  Observez  temps de rotation et temps d’attente moyens beaucoup plus élevés que SJF  mais aucun processus n’est P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
  • 231.
    Une petite trancheaugmente les commutations de contexte (temps de SE) Ch. 6 35
  • 232.
    Exemple pour voirl’importance d’un bon choix de tranche (à développer comme exercice) Ch. 6 36  Trois cycles: A, B, C, toutes de 10  Essayer avec: t=1 t=10  Dans ce deuxième cas, tourniquet fonctionne comme FIFO et le temps de rotation moyen est meilleur
  • 233.
    Ch. 6 37 Letemps de rotation (turnaround) varie avec la tranche Exemple qui montre que le temps de rotation moyen n ’améliore pas nécessairement en augmentant la tranche (sans considérer les temps de commutation contexte) = FIFO
  • 234.
    Ch. 6 38 Choixde la tranche pour le tourniquet [Stallings]  doit être beaucoup plus grande que le temps requis pour exécuter le changement de contexte  doit être un peu plus grand que le cycle typique (pour donner le temps à la plupart des proc de terminer leur cycle, mais pas trop pour éviter de pénaliser les processus courts) Stallings v. ex. prec. où les point optimaux sont 6 et 7, et il y a deux cycles
  • 235.
    Priorités Ch. 6 39  Affectationd’une priorité à chaque processus (p.ex. un nombre entier) souvent les petits chiffres dénotent des hautes priorités  0 la plus haute  L’UCT est donnée au processus prêt avec la plus haute priorité avec ou sans préemption il y a une file prêt pour chaque priorité
  • 236.
    Problème possible avecles priorités Ch. 6 40  Famine: les processus moins prioritaires n’arrivent jamais à exécuter  Solution: vieillissement: modifier la priorité d ’un processus en fonction de son âge et de son historique d ’exécution le processus change de file d`attente  Plus en général, la modification dynamique des priorités est une politique souvent utilisée (v. files à rétroaction ou retour)
  • 237.
    Files à plusieursniveaux (multiples) Ch. 6 41  La file prêt est séparée en plusieurs files, p.ex.  travaux `d’arrière-plan` (background - batch)  travaux `de premier plan` (foreground - interactive)  Chaque file a son propre algorithme d ’ordonnancement, p.ex.  FCFS pour arrière-plan  tourniquet pour premier plan  Comment ordonnancer entre files?  Priorité fixe à chaque file  famine possible, ou  Chaque file reçoit un certain pourcentage de temps UCT, p.ex.  80% pour arrière-plan  20% pour premier plan
  • 238.
    Ordonnancement avec filesmultiples Ch. 6 42
  • 239.
    Files multiples età retour Ch. 6 43  Un processus peut passer d ’une file à l ’autre, p.ex. quand il a passé trop de temps dans une file  À déterminer:  nombre de files  algorithmes d ’ordonnancement pour chaque file  algorithmes pour décider quand un proc doit passer d ’une file à l`autre  algorithme pour déterminer, pour un proc qui devient prêt, sur quelle file il doit être mis
  • 240.
    Files multiples età retour PRIO = 0 la + élevée Ch. 6 44 PRIO = 1 PRIO = 2
  • 241.
    Exemple de filesmultiples à retour  Trois files:  Q0: tourniquet, tranche = 8 msecs  Q1: tourniquet, tranche = 16 msecs  Q2: FCFS  Ordonnancement:  Un nouveau processus entre dans Q0, il reçoit 8 msecs d ’UCT  S ’il ne finit pas dans les 8 msecs, il est mis dans Q1, il reçoit 16 msecs additionnels  S ’il ne finit pas encore, il est interrompu et mis dans Q2  Si plus tard il commence à avoir des cycles plus courts, il pourrait retourner à Q0 ou Q1 Ch. 6 45
  • 242.
    En pratique... Ch. 646  Les méthodes que nous avons vu sont toutes utilisées en pratique (sauf plus court servi pur qui est impossible)  Les SE sophistiqués fournissent au gérant du système une librairie de méthodes, qu’il peut choisir et combiner au besoin après avoir observé le comportement du système  Pour chaque méthode, plusieurs params sont disponibles: p.ex. durée des tranches, coefficients, etc.  Ces méthodes évidemment sont importantes seulement pour les ordis qui ont des fortes charges de travail
  • 243.
    Aussi… Ch. 6 47  Notreétude des méthodes d’ordonnancement est théorique, ne considère pas en détail tous les problèmes qui se présentent dans l’ordonnancement UCT  P.ex. les ordonnanceurs UCT ne peuvent pas donner l’UCT à un processus pour tout le temps dont il a besoin  Car en pratique, l’UCT sera souvent interrompue par quelque événement externe avant la fin de son cycle  Cependant les mêmes principes d’ordonnancement s’appliquent à unités qui ne peuvent pas être interrompues, comme une imprimante, une unité disque, etc.  Dans le cas de ces unités, on pourrait avoir des infos complètes concernant le temps de cycle prévu, etc.  Aussi, cette étude ne considère pas du tout les temps d’exécution de l’ordonnanceur, du dispatcheur, etc.
  • 244.
    Ordonnancement avec plusieurs UCT s identiques:homogénéité  Méthodes symétriques: chaque UCT peut exécuter l’ordonnancement et la répartition  Une seule liste prêt pour toutes les UCTs (division travail = load sharing)  Méthodes asymétriques: certaines fonctions sont réservées à une seule UCT  Files d’attentes séparées pour chaque UCT UCT UCT UCT UCT UCT UCT UCT UCT Ch. 6 48
  • 245.
    Systèmes temps réel  systèmestemps réel rigides (hard):  les échéances sont critiques (p.ex. contrôle d’une chaîne d`assemblage, animation graphique)  il est essentiel de connaître la durée des fonctions critiques  il doit être possible de garantir que ces fonctions sont effectivement exécutées dans ce temps (réservation de ressources)  ceci demande une structure de système très particulière  systèmes temps réel souples (soft):  les échéances sont importantes, mais ne sont pas critiques (p.ex. systèmes téléphoniques)  les processus critiques reçoivent la priorité Ch. 6 49
  • 246.
    Systèmes temps réel: Problèmesd’attente dans plus. systèmes (ex. UNIX) Ch. 6 50  Dans UNIX ‘classique’ il n ’est pas permis d ’effectuer changement de contexte pendant un appel du système - et ces appels peuvent être longs  Pour le temps réel il est nécessaire de permettre la préemption des appels de systèmes ou du noyau en général  Donc ce système n’est pas considéré approprié pour le temps réel  Mais des variétés appropriées de UNIX ont été conçues (p.ex. Solaris)
  • 247.
    Inversion de prioritéet héritage de priorités Ch. 6 51  Quand un processus de haute priorité doit attendre pour des processus de moindre priorité (p.ex. a besoin de données produites par ces derniers)  Pour permettre à ces derniers de finir rapidement, on peut lui faire hériter la priorité du processus plus prioritaire
  • 248.
    Ordonnancement de threads Ch.6 52  Local: la librairie des threads pour une application donnée décide quel thread usager obtient un LWP disponible  Global: le noyau décide quel thread de noyau exécute sur l’UCT
  • 249.
    Ordonnancement et prioritésen Solaris 2 Ch. 6 53
  • 250.
    Solaris 2: liredans le manuel pour voir l’application pratique de plusieurs concepts discutés Ch. 6 54  Priorités et préemption  Files multiniveau à retour avec changement de priorité  Tranches plus grandes pour les processus moins prioritaires  Les procs interactifs sont plus prioritaires que les les procs tributaires de l’UCT  La plus haute priorité aux procs temps réel  Tourniquet pour les fils de priorités égales
  • 251.
    Méthode d’évaluation etcomparaison d’algorithmes (section plutôt à lire) Ch. 6 55  Modélisation déterministe  Modèles de files d’attente (queuing theory)  Simulation  Implantation
  • 252.
    Modélisation déterministe Ch. 656  Essentiellement, ce que nous avons déjà fait en étudiant le comportement de plusieurs algorithmes sur plusieurs exemples
  • 253.
    Utilisation de lathéorie des files (queuing th.) Ch. 6 57  Méthode analytique basée sur la théorie des probabilités  Modèle simplifié: notamment, les temps du SE sont ignorés  Cependant, elle rend possibles des estimées
  • 254.
    Théorie des files:la formule de Little Ch. 6 58  Un résultat important: n =  W  n: longueur moyenne de la file d ’attente   : débit d ’arrivée de travaux dans file  W: temps d ’attente moyen dans la file (temps de service)  P. ex.  si les travaux arrivent 3 par sec.  W et il restent dans la file 2 secs
  • 255.
    Simulation Ch. 6 59  Construireun modèle (simplifié...) de la séquence d’événements dans le SE  Attribuer une durée de temps à chaque événement  Supposer une certaine séquence d’événements extérieurs (p.ex. arrivée de travaux, etc.)  Exécuter le modèle pour cette séquence afin d’obtenir des stats
  • 256.
    Implémentation  Implémenter l’algorithme  Exécuter dansle système réel ou des mélanges de travaux typiques (benchmark)  Obtenir des statistiques, en tirer des conclusions... Ch. 6 60
  • 257.
    Tableau de comparaison Ch. 661 Le tableau suivant fait une comparaison globale des différentes techniques étudiées
  • 258.
    62 Critère sélection Préempt Motivation Tempsde rotat. et att. Temps de système Effect sur processus Famine FCFS Max [w] non Simplicité Variable Minim. Favor. proc. trib. UCT Non Tourniq. Tour fixe oui Equité Variable selon tranche, Normalement élevé Élevé pour tranche courte Équitable Non SJF Min[s] non Optimisatio n des temps Optimal, mais souffre si des procs longs arrivent au début Peut être élevé (pour estimer les longs. des trames) Bon pour proc. courts, pénalise proc. longs Possible SJF préemp. Min[s-e] oui Évite le problème de procs longs au début Meilleur, même si des procs longs arrivent au début Peut être élevé Pénalise plus encore proc. longs Possible Files multiniv. v. détails oui Varie la longueur des tranches en fonction des besoins Variable Peut être élévé Variable Possible w: temps total dans système jusqu’à présent; Chs. :6temps e: temps en exec jusqu’à présent Famine est ‘renvoi
  • 259.
    Ch. 6 63 Pointsimportants dans ce chapitre  Files d ’attente pour UCT  Critères d ’ordonnancement  Algorithmes d ’ordonnancement FCFS: simple, non optimal SJF: optimal, implantation difficile  moyennage exponentiel Priorités Tourniquet: sélection du quantum  Évaluation des méthodes, théorie des files, formule de Little
  • 260.
    Chap. 7 1 Synchronisationde Processus (ou threads, ou fils ou tâches) Chapitre 7 http://w3.uqo.ca/lui gi/
  • 261.
    Problèmes avec concurrence= parallélisme Chap. 7 2  Les threads concurrents doivent parfois partager données (fichiers ou mémoire commune) et ressources  On parle donc de tâches coopératives  Si l’accès n’est pas contrôlé, le résultat de l’exécution du programme pourra dépendre de l’ordre d’entrelacement de l’exécution des instructions (non-déterminisme).  Un programme pourra donner des résultats différents et parfois indésirables de fois en fois
  • 262.
    Un exemple Chap. 73  Deux threads exécutent cette même procédure et partagent la même base de données  Ils peuvent être interrompus n’importe où  Le résultat de l ’exécution concurrente de P1 et P2 dépend de l`ordre de leur entrelacement M. X demande une réservation d’avion Base de données dit que fauteuil A est disponible Fauteuil A est assigné à X et marqué occupé
  • 263.
    Vue globale d’uneexécution possible M. Guy demande une réservation d’avion Base de données dit que fauteuil 30A est disponible Fauteuil 30A est assigné à Guy et marqué occupé M. Leblanc demande une réservation d’avion Base de données dit que fauteuil 30A est disponible Fauteuil 30A est assigné à Leblanc et marqué occupé Interrupti on ou retard P1 P2 Chap. 7 4
  • 264.
    5 Deux opérations enparallèle sur une var a partagée (b est privé à chaque processus) P1 b= a b=a b++ a=b P2 b++ a=b Supposons que a soit 0 au début (il pourrait être un compteur d’accès à une page web) interrupti on
  • 265.
    3ème exemple cin >>a; Thread P1 Thread P2 static char a; static char a; void echo() { void echo() { cin >> a; cout << a; } cout << a; } Si la var a est partagée, le premier a est effacé Si elle est privée, l’ordre d’affichage est renversé Chap. 7 6
  • 266.
    Autres exemples Chap. 77  Des threads qui travaillent en simultanéité sur une matrice, par ex. un pour la mettre à jour, l`autre pour en extraire des statistiques  Problème qui affecte le programme du tampon borné, v. manuel  Quand plusieurs threads exécutent en parallèle, nous ne pouvons pas faire d’hypothèses sur la vitesse d’exécution des threads, ni leur entrelacement  Peuvent être différents à chaque exécution du programme
  • 267.
    Section Critique Chap. 78  Partie d’un programme dont l’exécution de doit pas entrelacer avec autres programmes  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  La section critique doit être verrouillée
  • 268.
    Le problème dela section critique  Lorsqu’un thread manipule une donnée (ou ressource) partagée, nous disons qu’il se trouve dans une section critique (SC) (associée à cette donnée)  Le problème de la section critique est de trouver un algorithme d`exclusion mutuelle de threads dans l`exécution de leur SCs afin que le résultat de leurs actions ne dépendent pas de l’ordre d’entrelacement de leur exécution (avec un ou plusieurs processeurs)  L’exécution des sections critiques doit être mutuellement exclusive: à tout instant, un seul thread peut exécuter une SC pour une var donnée (même lorsqu’il y a plusieurs processeurs)  Ceci peut être obtenu en plaçant des instructions spéciales dans les sections d`entrée et sortie  Pour simplifier, dorénavant nous faisons l’hypothèse qu’il n’y a q’une seule SC dans un programme. Chap. 7 9
  • 269.
    Structure du programme Chap.7 10  Chaque thread doit donc demander une permission avant d’entrer dans une section critique (SC)  La section de code qui effectue cette requête est la section d’entrée  La section critique est normalement suivie d’une section de sortie  Le code qui reste est la section restante (SR): non-critique repeat section d’entrée section critique section de sortie section restante forever
  • 270.
    Application M. X demandeune réservation d’avion Section d’entrée Base de données dit que fauteuil A est disponible Fauteuil A est assigné à X et marqué occupé Section de sortie Sectio n critiqu e Chap. 7 11
  • 271.
    Critères nécessaires poursolutions valides Chap. 7 12  Exclusion Mutuelle À tout instant, au plus un thread peut être dans une section critique (SC) pour une variable donnée  Non interférence: Si un thread s’arrête dans sa section restante, ceci ne devrait pas affecter les autres threads  Mais on fait l ’hypothèse qu’un thread qui entre dans une section critique, en sortira.
  • 272.
    Critères nécessaires poursolutions valides Chap. 7 13  Progrès: absence d`interblocage (Chap 8) si un thread demande d`entrer dans une section critique à un moment où aucun autre thread en fait requête, il devrait être en mesure d’y entrer  Donc si un thread veut entrer dans la SC à répétition, et les autres ne sont pas intéressés, il doit pouvoir le faire
  • 273.
    Aussi nécessaire Chap. 714  Absence de famine: aucun thread éternellement empêché d’atteindre sa SC  Difficile à obtenir, nous verrons…
  • 274.
    Types de solutions Chap.7 15  Solutions par logiciel  des algorithmes dont la validité ne s’appuie pas sur l’existence d`instruction spéciales  Solutions fournies par le matériel  s’appuient sur l’existence de certaines instructions (du processeur) spéciales  Solutions fournies pas le SE  procure certains appels du système au programmeur  Toutes les solutions se basent sur l’atomicité de l’accès à la mémoire centrale: une adresse de mémoire ne peut être affectée que par une instruction à la fois, donc par un thread à la fois.  Plus en général, toutes les solutions se basent sur l ’existence d’instructions atomiques, qui fonctionnent comme SCs de base Atomicité =
  • 275.
    Solutions par logiciel (paspratiques, mais intéressantes pour comprendre le pb) Chap. 7 16  Nous considérons d’abord 2 threads Algorithmes 1 et 2 ne sont pas valides  Montrent la difficulté du problème Algorithme 3 est valide (algorithme de Peterson)  Notation Débutons avec 2 threads: T0 et T1 Lorsque nous discutons de la tâche Ti, Tj dénotera toujours l’autre tâche (i != j)
  • 276.
    Algorithme 1: threadsse donnent mutuellement le tour  La variable partagée turn est initialisée à 0 ou 1  La SC de Ti est exécutée ssi turn = i  Ti est occupé à attendre si Tj est dans SC.  Fonctionne pour l’exclusion mutuelle!  Mais critère du progrès n’est pas satisfait car l’exécution des SCs doit strictement alterner Thread Ti: repeat while(turn!=i); SC turn = j; SR forever Rien fair e T0T1T0T1…même si l’un des deux n’est pas intéressé du tout Chap. 7 17
  • 277.
    Thread T0: repeat while(turn!=0); SC turn =1; SR forever Thread T1: repeat while(turn!=1); SC turn = 0; SR forever Algorithme 1 vue globale Ex 2: Généralisation à n threads: chaque fois, avant qu’un thread puisse rentrer dans sa section critique, il lui faut attendre que tous les autres aient eu cette chance! initialisation de turn à 0 ou 1 Rien fair e Chap. 7 18
  • 278.
    Exemple: supposez queturn=0 au début Thread T0: while(turn!=0); // premier à entrer SC turn = 1; SR while(turn!=0); // entre quand T1 finit SC turn = 1; SR etc... Thread T1: while(turn!=1); // entre quand T0 finit SC turn = 0; SR while(turn!=1); // entre quand T0 finit SC turn = 0; SR Chap. 7 19
  • 279.
    Algorithme 2 oul’excès de courtoisie...  Une variable Booléenne par Thread: flag[0] et flag[1]  Ti signale qu’il désire exécuter sa SC par: flag[i] =vrai  Mais il n’entre pas si l’autre est aussi intéressé!  Exclusion mutuelle ok  Progrès pas satisfait:  Considérez la séquence: T0: flag[0] = vrai T1: flag[1] = vrai  Chaque thread attendra indéfiniment pour exécuter sa SC: on a un interblocage Thread Ti: repeat flag[i] = vrai; while(flag[j]); SC flag[i] = faux; SR forever rien faire Chap. 7 20
  • 280.
    Thread T0: repeat flag[0] =vrai; while(flag[1]); SC flag[0] = faux; SR forever Thread T1: repeat flag[1] = vrai; while(flag[0]); SC flag[1] = faux; SR forever Algorithme 2 vue globale T0: flag[0] = vrai T1: flag[1] = vrai interblocage! Après vous, monsieur Après vous, monsieur Chap. 7 21
  • 281.
    Algorithme 3 (ditde Peterson): bon! Chap. 7 22 combine les deux idées: flag[i]=intention d’entrer; turn=à qui le tour  Initialisation:  flag[0] = flag[1] = faux  turn = i ou j  Désire d’exécuter SC est indiqué par flag[i] = vrai  flag[i] = faux à la section de sortie Thread Ti: repeat flag[i] = vrai; // je veux entrer turn = j; // je donne une chance à l’autre do while (flag[j] && turn==j); SC flag[i] = faux; SR forever
  • 282.
    Entrer ou attendre? Chap.7 23  Thread Ti attend si:  Tj veut entrer est c’est la chance à Tj  flag[j]==vrai et turn==j  Un thread Ti entre si:  Tj ne veut pas entrer ou c’est la chance à Ti  flag[j]==faux ou turn==i  Pour entrer, un thread dépend de l’autre qu’il lui donne la chance!
  • 283.
    Thread T0: repeat flag[0] =vrai; // T0 veut entrer turn = 1; // T0 donne une chance à T1 while (flag[1]&&turn=1); SC flag[0] = faux; // T0 ne veut plus entrer SR forever Thread T1: repeat flag[1] = vrai; // T1 veut entrer turn = 0; // T1 donne une chance à 0 while (flag[0]&&turn=0); SC flag[1] = faux; // T1 ne veut plus entrer SR forever Algorithme de Peterson vue globale Chap. 7 24
  • 284.
    Scénario pour lechangement de contrôle Thread T0: … SC flag[0] = faux; // T0 ne veut plus entrer SR … Thread T1: … flag[1] = vrai; // T1 veut entrer turn = 0; // T1 donne une chance à T0 while (flag[0]&&turn=0) ; //test faux, entre (F&&V) T1 prend la relève, donne une chance à T0 mais T0 a dit qu’il ne veut pas entrer. T1 entre donc dans la SC Chap. 7 25
  • 285.
    Autre scénario dechangem. de contrôle Thread T0: SC flag[0] = faux; // T0 ne veut plus entrer SR flag[0] = vrai; // T0 veut entrer turn = 1; // T0 donne une chance à T1 while (flag[1]==vrai&&turn=1) ; // test vrai, n’entre pas (V&&V) Thread T1: flag[1] = vrai; // T1 veut entrer turn = 0; // T1 donne une chance à T0 // mais T0 annule cette action while (flag[0]&&turn=0) ; //test faux, entre (V&&F) T0 veut rentrer mais est obligé de donner une chance à T1, qui entre Chap. 7 26
  • 286.
    Chap. 7 27 Maisavec un petit décalage, c’est encore T0! Thread T0: SC flag[0] = faux; // 0 ne veut plus entrer RS flag[0] = vrai; // 0 veut entrer turn = 1; // 0 donne une chance à 1 // mais T1 annule cette action while (flag[1] && turn=1) ; // test faux, entre (V&&F) Thread T1: flag[1] = vrai; // 1 veut entrer turn = 0; // 1 donne une chance à 0 while (flag[0]&&turn=0); // test vrai, n’entre pas Si T0 et T1 tentent simultanément d’entrer dans SC, seule une valeur pour turn survivra: non-déterminisme (on ne sait pas qui gagnera), mais l’exclusion
  • 287.
    Donc cet algo.n’oblige pas une tâche d’attendre pour d’autres qui pourraient ne pas avoir besoin de la SC Supposons que T0 soit le seul à avoir besoin de la SC, ou que T1 soit lent à agir: T0 peut rentrer de suite (flag[1]==faux est sorti) la dernière fois que T1 flag[0] = vrai // prend l’initiative turn = 1 // donne une chance à l’autre while flag[1] && turn=1 //test faux, entre SC flag[0] = faux // donne une chance à l’autre Cette propriété est désirable, mais peut causer famine pour Chap. 7 28
  • 288.
    Algorithme 3: preuvede validité Chap. 7 29 (pas matière d’examen, seulement pour les intéressés…)  Exclusion mutuelle est assurée car: T0 et T1 sont tous deux dans SC seulement si turn est simultanément égal à 0 et 1 (impossible)  Démontrons que progrès et attente limitée sont satisfaits: Ti ne peut pas entrer dans SC seulement si en attente dans la boucle while() avec condition: flag[ j] == vrai and turn = j. Si Tj ne veut pas entrer dans SC alors flag[ j] = faux et Ti peut alors entrer dans SC
  • 289.
    Algorithme 3: preuvede validité (cont.) Chap. 7 30 Si Tj a effectué flag[ j]=vrai et se trouve dans le while(), alors turn==i ou turn==j Si  turn==i, alors Ti entre dans SC.  turn==j alors Tj entre dans SC mais il fera flag[ j] =false à la sortie: permettant à Ti d’entrer CS mais si Tj a le temps de faire flag[ j]=true, il devra aussi faire turn=i Puisque Ti ne peut modifier turn lorsque dans le while(), Ti entrera SC après au plus une entrée dans SC par Tj (attente limitée)
  • 290.
    A propos del’échec des threads Chap. 7 31  Si une solution satisfait les 3 critères (EM, progrès et attente limitée), elle procure une robustesse face à l’échec d’un thread dans sa section restante (SR)  un thread qui échoue dans sa SR est comme un thread qui ne demande jamais d’entrer...  Par contre, aucune solution valide ne procure une robustesse face à l'échec d’un thread dans sa section critique (SC)  un thread Ti qui échoue dans sa SC n’envoie pas de signal aux autres threads: pour eux Ti est encore dans sa SC...
  • 291.
    Extension à >2threads Chap. 7 32  L ’algorithme de Peterson peut être généralisé au cas de >2 threads  Cependant, dans ce cas il y a des algorithmes plus élégants, comme l’algorithme du boulanger, basée sur l’idée de ‘prendre un numéro au comptoir’... Pas le temps d’en parler…
  • 292.
    Une leçon àretenir… Chap. 7 33  À fin que des threads avec des variables partagées puissent réussir, il est nécessaire que tous les threads impliqués utilisent le même algorithme de coordination Un protocole commun
  • 293.
    Critique des solutionspar logiciel Chap. 7 34  Difficiles à programmer! Et à comprendre!  Les solutions que nous verrons dorénavant sont toutes basées sur l’existence d’instructions spécialisées, qui facilitent le travail.  Les threads qui requièrent l’entrée dans leur SC sont occupés à attendre (busy waiting); consommant ainsi du temps de processeur  Pour de longues sections critiques, il serait préférable de bloquer les threads qui doivent attendre...
  • 294.
    Solutions matérielles: désactivationdes interruptions Chap. 7 35  Sur un uniprocesseur: exclusion mutuelle est préservée mais l’efficacité se détériore: lorsque dans SC il est impossible d’entrelacer l’exécution avec d’autres threads dans une SR  Perte d’interruptions  Sur un multiprocesseur: exclusion mutuelle n’est pas préservée  Pas bon en général Process Pi: repeat désactiver interrupt section critique rétablir interrupt section restante forever
  • 295.
    Solutions matérielles: instructionsmachine spécialisées Chap. 7 36  Normal: pendant qu’un thread ou processus fait accès à une adresse de mémoire, aucun autre ne peut faire accès à la même adresse en même temps  Extension: instructions machine exécutant plusieurs actions (ex: lecture et écriture) sur la même case de mémoire de manière atomique (indivisible)  Une instruction atomique ne peut être exécutée que par un thread à la fois (même en présence de plusieurs processeurs)
  • 296.
    L’instruction test-and- set  Une versionC de test- and-set:  Un algorithme utilisant testset pour Exclusion Mutuelle:  Variable partagée b est initialisée à 0  Le 1er Pi qui met b à 1 entre dans SC bool testset(int& i) { if (i==0) { i=1; return true; } else { return false; } } Tâche Pi: while testset(b)==false ; SC //entre quand vrai b=0; SR Instruction atomique! Chap. 7 37
  • 297.
    L’instruction test-and-set (cont.) Chap.7 38  Exclusion mutuelle est assurée: si Ti entre dans SC, l’autre Tj est occupé à attendre  Problème: utilise encore occupé à attendre  Peut procurer facilement l’exclusion mutuelle mais nécessite algorithmes plus complexes pour satisfaire les autres exigences du problème de la section critique  Lorsque Ti sort de SC, la sélection du Tj qui entrera dans SC est arbitraire: pas de limite sur l’attente: possibilité de famine
  • 298.
    Instruction ‘Échange’ Chap. 739  Certains UCTs (ex: Pentium) offrent une instruction xchg(a,b) qui interchange le contenue de a et b de manière atomique.  Mais xchg(a,b) souffre des même lacunes que test-and-set
  • 299.
    Utilisation de xchgpour exclusion mutuelle Chap. 7 40 (Stallings )  Variable partagée b est initialisée à 0  Chaque Ti possède une variable locale k  Le Ti pouvant entrer dans SC est celui qui trouve b=0  Ce Ti exclue tous les autres en assignant b à 1  Quand SC est occupée, k et b seront 1 pour un autre thread qui cherche à entrer  Mais k est 0 pour le thread qui est dans la SC usage: Thread Ti: repeat k = 1 while k!=0 xchg(k,b); SC xchg(k,b); SR forever
  • 300.
    Solutions basées surdes instructions fournies par le SE (appels du système) Chap. 7 41  Les solutions vues jusqu’à présent sont difficiles à programmer et conduisent à du mauvais code.  On voudrait aussi qu`il soit plus facile d’éviter des erreurs communes, comme interblocages, famine, etc. Besoin d’instruction à plus haut niveau  Les méthodes que nous verrons dorénavant utilisent des instructions puissantes, qui sont implantées par des appels au SE (system calls)
  • 301.
    Sémaphores Chap. 7 42  Unsémaphore S est un entier qui, sauf pour l'Initialisation, est accessible seulement par ces 2 opérations atomiques et mutuellement exclusives:  wait(S) (appelé P dans le livre)  signal(S) (appelé V dans le livre)  Il est partagé entre tous les procs qui s`intéressent à la même section critique  Les sémaphores seront présentés en deux étapes:  sémaphores qui sont occupés à attendre (busy waiting)  sémaphores qui utilisent des files d ’attente  On fait distinction aussi entre sémaphores compteurs et sémaphores binaires, mais ce derniers sont moins puissants (v. livre).
  • 302.
    Spinlocks d’Unix: Sémaphoresoccupés à attendre (busy waiting) Chap. 7 43  La façon la plus simple d’implanter les sémaphores.  Utiles pour des situations où l’attente est brève, ou il y a beaucoup d’UCTs  S est un entier initialisé à une valeur positive, de façon que un premier thread puisse entrer dans la SC  Quand S>0, jusqu’à n threads peuvent entrer  S ne peut pas être négatif wait(S): while S=0 ; S--; signal(S): S++; Attend si no. de threads qui peuvent entrer = 0 Augmente de 1 le no des threads qui peuvent entrer
  • 303.
    Atomicité Wait: La séquence test-décrément est atomique, mais pas la boucle! Signal est atomique. Rappel: les sections atomiques ne peuvent pas être exécutées simultanément par différent threads (ceci peut être obtenu un utilisant un des mécanismes précédents) S = 0 atomique S - - F V S C Chap. 7 44
  • 304.
    Atomicité et interruptibilité atomique S- - F V S = 0 S++ interruptible SC La boucle n’est pas atomique pour permettre à un autre thread d’interrompre l’attente sortant de la SC Chap. 7 45 autre thr. S C (Autre thread)
  • 305.
    Thread T1: repeat wait(S); SC signal(S); SR forever Thread T2: repeat wait(S); SC signal(S); SR forever Semaphores:vue globale Peut être facilement généralisé à plus. threads Chap. 7 46 Initialise S à >=1
  • 306.
    Utilisation des sémaphorespour sections critiques Chap. 7 47  Pour n threads  Initialiser S à 1  Alors 1 seul thread peut être dans sa SC  Pour permettre à k threads d’exécuter SC, initialiser S à k Thread Ti: repeat wait(S); SC signal(S); SR forever
  • 307.
    Utilisation des sémaphorespour synchronisation de threads Chap. 7 48  On a 2 threads: 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;
  • 308.
    Interblocage et famineavec les sémaphores  Famine: un thread 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) Chap. 7 49
  • 309.
    Sémaphores: observations Chap. 7 50  QuandS >= 0: Le nombre de threads qui peuvent exécuter wait(S) sans devenir bloqués = S  S threads peuvent entrer dans la SC  noter puissance par rapport à mécanismes déjà vus  dans les solutions où S peut être >1 il faudra avoir un 2ème sém. pour les faire entrer un à la fois (excl. mutuelle)  Quand S devient > 1, le thread qui entre le premier dans la SC est le premier à tester S (choix aléatoire) ceci ne sera plus vrai dans la solution suivante wait(S): while S=0 ; S--;
  • 310.
    Comment éviter l’attenteoccupée et le choix aléatoire dans les sémaphores Chap. 7 51  Quand un thread doit attendre qu’un sémaphore devienne plus grand que 0, il est mis dans une file d’attente de threads qui attendent sur le même sémaphore.  Les files peuvent être PAPS (FIFO), avec priorités, etc. Le SE contrôle l`ordre dans lequel les threads entrent dans leur SC.  wait et signal sont des appels au système comme les appels à des opérations d’E/S.  Il y a une file d ’attente pour chaque sémaphore comme il y a une file d’attente pour chaque unité d’E/S.
  • 311.
    Sémaphores sans attenteoccupée  Un sémaphore S devient une structure de données:  Une valeur  Une liste d’attente L  Un thread devant attendre un sémaphore S, est bloqué et ajouté la file d’attente S.L du sémaphore (v. état bloqué = attente chap 4).  signal(S) enlève (selon une politique juste, ex: PAPS/FIFO) un thread de S.L et le place sur la liste des threads prêts/ready. Chap. 7 52
  • 312.
    Implementation (les boîtes réprésententdes séquences non- interruptibles) wait(S): S.value --; if S.value < 0 { // SC occupée add this thread to S.L; block // thread mis en état attente (wait) } signal(S): S.value ++; if S.value  0 { // des threads attendent remove a process P from S.L; wakeup(P) // thread choisi devient prêt } S.value doit être initialisé à une valeur non-négative (dépendant de l’application, v. exemples) Chap. 7 53
  • 313.
    5 Figure montrant la relationentre le contenu de la file et la valeur de S Chap. 7 (Stallings ) Quand S < 0: le nombre de threads qui attendent sur S est = |S|
  • 314.
    Wait et signalcontiennent elles mêmes des SC! Chap. 7 55  Les opérations wait et signal doivent être exécutées atomiquement (un seul thr. à la fois)  Dans un système avec 1 seule UCT, ceci peut être obtenu en inhibant les interruptions quand un thread exécute ces opérations  Normalement, nous devons utiliser un des mécanismes vus avant (instructions spéciales, algorithme de Peterson, etc.)  L’attente occupée dans ce cas ne sera pas trop onéreuse car wait et signal sont brefs
  • 315.
    Problèmes classiques desynchronisation Chap. 7 56  Tampon borné (producteur-consommateur)  Écrivains - Lecteurs  Les philosophes mangeant
  • 316.
    Le pb duproducteur - consommateur Chap. 7 57  Un problème classique dans l ’étude des threads communicants un thread producteur produit des données (p.ex.des enregistrements d ’un fichier) pour un thread consommateur
  • 317.
    Chap. 7 58 Tamponsde communication Prod 1 donn Cons Prod Cons 1 donn 1 donn 1 donn Si le tampon est de longueur 1, le producteur et consommateur doivent forcement aller à la même vitesse Des tampons de longueur plus grandes permettent une certaine indépendance. P.ex. à droite le consommateur a
  • 318.
    Le tampon borné(bounded buffer) une structure de données fondamentale dans les SE b[0] b[1] b[7] b[2] b[6] b[3] b[5] b[4] ou out: 1ère pos. pleine in: 1ère pos. libre b[0] b[1] b[2] b[3] b[4] b[5] b[6] b[7] in: 1ère pos. libre bleu: plein, blanc: libre out: 1ère pos. pleine Le tampon borné se trouve dans la mémoire partagée entre consommateur et usager Chap. 7 59
  • 319.
    Pb de syncentre threads pour le tampon borné Chap. 7 60  Étant donné que le prod et le consommateur sont des threads indépendants, des problèmes pourraient se produire en permettant accès simultané au tampon  Les sémaphores peuvent résoudre ce problème
  • 320.
    Sémaphores: rappel. Chap. 761  Soit S un sémaphore sur une SC  il est associé à une file d ’attente  S positif: S threads peuvent entrer dans SC  S zéro: aucun thread ne peut entrer, aucun thread en attente  S négatif: |S| thread dans file d ’attente  Wait(S): S - -  si après S >= 0, thread peut entrer dans SC  si S < 0, thread est mis dans file d ’attente  Signal(S): S++  si après S<= 0, il y avait des threads en attente, et un thread est réveillé  Indivisibilité = atomicité de ces ops
  • 321.
    Solution avec sémaphores Chap.7 62  Un sémaphore S pour exclusion mutuelle sur l’accès au tampon Les sémaphores suivants ne font pas l’EM  Un sémaphore N pour synchroniser producteur et consommateur sur le nombre d’éléments consommables dans le tampon  Un sémaphore E pour synchroniser producteur et consommateur sur le nombre d’espaces libres
  • 322.
    Chap. 7 63 Solutionde P/C: tampon circulaire fini de dimension k Producer: repeat produce v; wait(E); wait(S); append(v); signal(S); signal(N); forever Consumer: repeat wait(N) ; wait(S) ; w=take( ); signal(S); signal(E); consume(w); forever Initialization: S.count=1; //excl. mut. N.count=0; //esp. pleins E.count=k; //esp. vides a p p e n d ( v ) : b [ i n ] Sections critiques In ++ mod k; take(): w=b[out]; Out ++ mod k; return w;
  • 323.
    Points importants àétudier Chap. 7 64  dégâts possibles en inter changeant les instructions sur les sémaphores ou en changeant leur initialisation  Généralisation au cas de plus. prods et cons
  • 324.
    Concepts importants decette partie du Chap 7 Chap. 7 65  Le problème de la section critique  L’entrelacement et l’atomicité  Problèmes de famine et interblocage  Solutions logiciel  Instructions matériel  Sémaphores occupés ou avec files  Fonctionnement des différentes solutions  L’exemple du tampon borné  Par rapport au manuel: ce que nous n’avons pas vu en classe vous le verrez au lab
  • 325.
    Glossaire Chap. 7 66  Atomicité,non-interruptibilité:  La définition précise d’atomicité, non-déterminisme etc. est un peu compliquée, et il y en a aussi des différentes… (les curieux pourraient faire une recherche Web sur ces mot clé)  Ce que nous discutons dans ce cours est une 1ère approximation: une séquence d’ops est atomique si elle est exécutée toujours sans être interrompue par aucune autre séquence sur les mêmes données  Ou son résultat ne dépend jamais de l’existence d’autres séquences en parallèle…
  • 326.
    Non-déterminisme et conditionsde course Chap. 7 67  Non-déterminisme: une situation dans laquelle il y a plusieurs séquences d’opérations possibles à un certain moment, même avec les mêmes données. Ces différentes séquences peuvent conduire à des résultats différents  Conditions de course: Les situations dans lesquelles des activités exécutées en parallèle sont ‘en course’ les unes contre les autres pour l`accès à des ressources (variables partagées, etc.), sont appelées ‘conditions de course ’.
  • 327.
    Chapitre 7 continuation  Problèmesclassiques de synchronisation  Lecteurs - Rédacteurs  Les philosophes mangeant  Moniteurs  Threads en Java http://w3.uqo.ca/lui gi/ Chap. 7 1
  • 328.
    Sémaphores: rappel (les boîtes représententdes séquences indivisibles) wait(S): S.value --; if S.value < 0 { // SC occupée ajouter ce thread à S.L; block // thread mis en état attente (wait) } signal(S): S.value ++; if S.value  0 { // des threads attendent enlever un thread P de S.L; wakeup(P) // thread choisi devient prêt } S.value doit être initialisé à une valeur non- Chap. 7 2
  • 329.
    Sémaphores: rappel. Chap. 73  Soit S un sémaphore sur une SC  il est associé à une file d ’attente  S positif: S thread peuvent entrer dans SC  S zéro: aucun thread ne peut entrer, aucun thread en attente  S négatif: |S| thread dans file d ’attente  Wait(S): S - -  si après S >= 0, thread peut entrer dans SC  si S < 0, thread est mis dans file d ’attente  Signal(S): S++  si après S<= 0, il y avait des threads en attente, et un thread est transféré à la file prêt  Indivisibilité = atomicité de wait et signal
  • 330.
    Problème des lecteurs- rédacteurs Chap. 7 4  Plusieurs threads peuvent accéder à une base de données Pour y lire ou pour y écrire  Les rédacteurs doivent être synchronisés entre eux et par rapport aux lecteurs il faut empêcher à un thread de lire pendant l’écriture il faut empêcher à deux rédacteurs d ’écrire simultanément  Les lecteurs peuvent y accéder simultanément
  • 331.
    Une solution (n’exclutpas la famine) Chap. 7 5  Variable readcount: nombre de threads lisant la base de données  Sémaphore mutex: protège la SC où readcount est mis à jour  Sémaphore wrt: exclusion mutuelle entre rédacteurs et lecteurs  Les rédacteurs doivent attendre sur wrt  les uns pour les autres  et aussi la fin de toutes les lectures  Les lecteurs doivent  attendre sur wrt quand il y a des rédacteurs qui écrivent  bloquer les rédacteurs sur wrt quand il y a des lecteurs qui lisent  redémarrer les rédacteurs quand personne ne lit
  • 332.
    Les données etles rédacteurs Chap. 7 6 Données: deux sémaphores et une variable mutex, wrt: semaphore (init. 1); readcount : integer (init. 0); Rédacteur wait(wrt); . . . // écriture . . . signal(wrt);
  • 333.
    Les lecteurs wait(mutex); readcount ++; if readcount == 1 then wait(wrt); signal(mutex); //SC: lecture wait(mutex); readcount -- ; if readcount == 0 then signal(wrt); signal(mutex): Le dernier lecteur sortant doit permettre l`accès aux rédacteurs Le premier lecteur d ’un groupe pourrait devoir attendre sur wrt, il doit aussi bloquer les rédacteurs. Quand il sera entré, les suivants pourront entrer librement Chap. 7 7
  • 334.
    Observations Chap. 7 8  Le1er lecteur qui entre dans la SC bloque les rédacteurs wait (wrt)  le dernier les remet en marche signal (wrt)  Si 1 rédacteur est dans la SC, 1 lecteur attend sur wrt, les autres sur mutex  un signal(wrt) peut faire exécuter un lecteur ou un rédacteur
  • 335.
    Le problème desphilosophes 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  Illustre la difficulté d’allouer ressources aux threads tout en évitant interblocage et famine Chap. 7 9
  • 336.
    Le problème desphilosophes mangean t  Un thread par philosophe  Un sémaphore par fourchette:  fork: array[0..4] of semaphores  Initialisation: fork[i] =1 for i:=0..4  Première tentative:  interblocage si chacun débute en prenant sa fourchette gauche!  wait(fork[i]) Thread Pi: repeat think; wait(fork[i]); wait(fork[i+1 mod 5]); eat; signal(fork[i+1 mod 5]); signal(fork[i]); forever Chap. 7 10
  • 337.
    Le problème desphilosophes mangean t  Une solution: admettre seulement 4 philosophes à la fois qui peuvent tenter de manger  Il y aura touj. au moins 1 philosophe qui pourra manger  même si tous prennent 1 fourchette  Ajout d’un sémaphore T qui limite à 4 le nombre de philosophes “assis à la table”  initial. de T à 4  N’empêche pas famine! Thread Pi: repeat think; wait(T); wait(fork[i]); wait(fork[i+1 mod 5]); eat; signal(fork[i+1 mod 5]); signal(fork[i]); signal(T); forever Chap. 7 11
  • 338.
    Avantage des sémaphores Chap. 712 (par rapport aux solutions précédentes)  Une seule variable partagée par section critique  deux seules opérations: wait, signal  contrôle plus localisé (que avec les précéds)  extension facile au cas de plus. threads  possibilité de faire entrer plus. threads à la fois dans une section critique  gestion de files d`attente par le SE: famine évitée si le SE est équitable (p.ex. files FIFO)
  • 339.
    Problème avec sémaphores:difficulté de programmation Chap. 7 13  wait et signal sont dispersés parmi plusieurs threads, mais ils doivent se correspondre Utilisation doit être correcte dans tous les threads  Un seul “mauvais” thread peut faire échouer toute une collection de threads (p.ex. oublie de faire signal)  Considérez le cas d`un thread qui a des waits et signals dans des boucles et des tests...
  • 340.
    Moniteurs: une autresolution  Constructions (en langage de haut-niveau) qui procurent une fonctionnalité équivalente aux sémaphores mais plus facile à contrôler  Disponibles en:  Concurrent Pascal, Modula- 3... • synchronized method en Java (moniteurs simplifiés) Chap. 7 14
  • 341.
    Moniteur  Est un modulecontenant: une ou plusieurs procédures une séquence d’initialisation variables locales  Caractéristiques: variables locales accessibles seulement à l’aide d’une procédure du moniteur un thread entre dans le moniteur en invoquant une de ses procédures un seul thread peut exécuter dans le moniteur à tout instant (mais plus. threads peuvent être en attente dans le monit.) Chap. 7 15
  • 342.
    Moniteu r  Il assure àlui seul l’exclusion mutuelle: pas besoins de le programmer explicitement  On assure la protection des données partagées en les plaçant dans le moniteur  Le moniteur verrouille les données partagées lorsqu’un thread y entre  Synchronisation de threads est effectuée en utilisant des variables conditionnelles qui représentent des conditions après lesquelles un thread pourrait attendre avant d’exécuter dans le moniteur Chap. 7 16
  • 343.
    Structure générale dumoniteur (style Java) monitor nom-de-moniteur { // déclarations de vars public entry p1(. . .) {code de méthode p1} public entry p2(. . .) {code de méthode p2} . . . } La seule façon de manipuler les vars internes au moniteur est d’appeler une des méthodes d’entrée Chap. 7 17
  • 344.
    Moniteur: Vue schématiquesimplifiée style Java Chap. 7 18
  • 345.
    Variables conditionnelles (n’existentpas en Java) Chap. 7 19  sont accessibles seulement dans le moniteur  accessibles et modifiables seulement à l’aide de 2 fonctions:  x: wait bloque l’exécution du thread exécutant sur la condition x  le thread pourra reprendre l’exécution seulement si un autre thread exécute x: signal)  x: signal reprend l’exécution d’un thread bloqué sur la condition x  S’il en existe plusieurs: en choisir un (file?)  S’il n’en existe pas: ne rien faire
  • 346.
    Moniteur avec variablesconditionnelles Chap. 7 20 Dans une banque, il y a une file principale, mais une fois entré on pourrait vous faire attendre dans un fauteuil jusqu’à ce que le préposé soit disponible
  • 347.
    Un concept plusgénéral: Variables condition Chap. 7 21  On appelle variable condition une var qui peut être testée et endorme le thread qui la teste si la condition est fausse le réveille quand la condition devient vraie  Sont employées dans les moniteurs, mais peuvent aussi être utilisées indépendamment
  • 348.
    Blocage dans lesmoniteurs  threads attendent dans la file d’entrée ou dans une file de condition (ils n ’exécutent pas)  sur x.wait: le thread est placé dans la file de la condition (il n ’exécute pas)  x.signal amène dans le moniteur 1 thread de la file x (si x vide, aucun effet) Chap. 7 22
  • 349.
    Un pb concernantle signal Chap. 7 23  Quand un thread P exécute x.signal et libère un thr. Q, il pourrait y avoir 2 thr. qui peuvent exécuter, P et Q, ce qui est défendu. Deux solutions possibles: P pourrait attendre jusqu` à ce que Q sorte du moniteur, p.ex. dans une file spéciale (dite urgente) (v. Stallings) Q pourrait attendre jusqu’à ce que P sorte du moniteur
  • 350.
    Terminologie Java (davantageau lab) Chap. 7 24  Les méthodes synchronisées de Java sont essentiellement des moniteurs  Un seul thread à la fois peut les exécuter  Il y a 2 files pour un objet:  File d’entrée  File d’attente (méthode wait)  Un thread ne peut avoir que 1 file wait  Limitation importante qui complique les choses en Java…  Wait existe en Java + ou – comme décrit pour les moniteurs  Signal s’appelle notify  Notify() libère 1 seul thread  NotifyAll les libères tous  Mais ils n’exécutent pas: ils sont mis dans la file d’entrée
  • 351.
    Java: diagramme simplifiéde transition d’état threads (sur la base de la fig. 5.10 du manuel) nouvea u star t Sleep Wait I/O join susp end notify Fin E/S resum e nouvea u exécutable = runnable mor t b loqué = not runnable bloqué sur une file associée à un événement prêt ou en exécution stop ou term. de run Chap. 7 25
  • 352.
    Un diagramme plus complet NEW READY RUNNING DEAD NOT RUNNABLE new start complèterun method ou exception pas traitée Ordonnanceur choisit fil yield ou terminaison tranche ou préemption Notify, E/S terminée, resume, interrupted Sleep, wait, I/O, join, suspend RUNNABLE = READY ou RUNNING Chap. 7 26 Les méthodes suspend, resume, stop ne sont pas recommandées aujourd’hui (deprecated). Malheureusement le manuel s’en sert…
  • 353.
    Retour au problèmedes philosophes mangeant  5 philosophes qui mangent et pensent  Pour manger il faut 2 baguettes, droite et gauche  On en a seulement 5!  Un problème classique de synchronisation  Illustre la difficulté d’allouer ressources aux threads tout en évitant interblocage et famine Chap. 7 27
  • 354.
    Philosophes mangeant structuresde données  Chaque philos. a son propre state qui peut être (thinking, hungry, eating)  philosophe i peut faire state[i] = eating ssi les voisins ne mangent pas  Chaque condition a sa propre condition self  le philosophe i peut attendre sur self [ i ] si veut manger, mais ne peut pas obtenir les 2 baguettes Chap. 7 28
  • 355.
    Chaque philosophe exécuteà jamais: repeat pickup eat putdown forever Chap. 7 29
  • 356.
    Chap. 7 30 privatetest(int i) { if ( (state[(i + 4) % 5] != EATING) && (state[i] == HUNGRY) && (state[(i + 1) % 5] != EATING) ) { state[i] = EATING; self[i].signal; } } Un philosophe mange Un philosophe mange si ses voisins ne mangent pas et s’il a faim. Une fois mangé, il signale de façon qu’un autre pickup soit possible, si pickup s’était arrêté sur wait Il peut aussi sortir sans avoir mangé si le test est faux
  • 357.
    Chercher de prendreles baguettes public entry pickUp(int i) { state[i] = HUNGRY; test(i); if (state[i] != EATING) self[i].wait; } Phil. cherche à manger en testant, s’il sort de test qu’il n’est pas mangeant il attend – un Chap. 7 31
  • 358.
    Déposer les baguettes publicentry putDown(int i) { state[i] = THINKING; // tester les deux voisins test((i + 4) % 5); test((i + 1) % 5); } Une fois fini de manger, un philosophe se préoccupe de faire manger ses voisins en les testant Chap. 7 32
  • 359.
    Une solution ingénieuse, cependantles baguettes ne sont que implicites Chap. 7 33 Il vaut la peine de l’étudier
  • 360.
    P/C: tampon circulairede dimension k  Peut consommer seulement si le nombre N d’éléments consommables est au moins 1 (N = in-out)  Peut produire seulement si le nombre E d’espaces libres est au moins 1 (E = out-in) Chap. 7 34
  • 361.
    Variables conditionnelles utilisées Chap.7 35  Si le tampon est plein, le producteur doit attendre qu’il devienne non-plein Var conditionnelle notfull  Si le tampon est vide, le consommateur doit attendre qu’il devienne non-vide Var conditionnelle notempty
  • 362.
    Moniteur pour P/Cavec tampon fini Chap. 7 36 (syntaxe un peu différente, pas orienté objet) Monitor boundedbuffer: buffer: vecteur[0..k-1] de items; nextin = 0, nextout = 0, count = 0 ; notfull, notempty: condition; Produce(v): if (count==k) notfull.wait; buffer[nextin] = v; nextin = (nextin+1 mod k); count ++; notempty.signal; Consume(v): v = buffer[nextout]; nextout = (nextout+1 mod k); count --; notfull.signal; Variable conditionnelle sur laquellele producteur attend s’il n’y a pas d’espaces libres Variable conditionnelle sur laquelle if (count==0) notempty.wait; le consommateur attend s’il n’y a pas d’espaces occupés
  • 363.
    La solution Javaest plus compliquée surtout à cause du fait que Java n’a pas de variables conditionnelles nommées Chap. 7 37 V. manuel
  • 364.
    Relation entre moniteurset autre mécanismes Chap. 7 38  Les moniteurs sont implantés utilisant les sémaphores ou les autres mécanismes déjà vus  Il est aussi possible d`implanter les sémaphores en utilisant les moniteurs! les laboratoires vont discuter ça
  • 365.
    Le problème dela SC en pratique... Chap. 7 39  Les systèmes réels rendent disponibles plusieurs mécanismes qui peuvent être utilisés pour obtenir la solution la plus efficace dans différentes situations
  • 366.
    Synchronisation en Solaris2 (avec UCT multiples)  Plusieurs mécanismes utilisés: adaptive mutex protège l ’accès aux données partagées pour des SC courtes sémaphores et condition variables protègent des SC plus importantes serrures lecteurs-rédacteurs (reader-writers locks) protègent des données qui normalement ne sont que lues les mêmes mécanismes sont disponibles aux usagers et dans le noyau Chap. 7 40
  • 367.
    Adaptive mutex enSolaris 2  Utilisés pour des SC courtes: quand un thread veut accéder à des données partagées: Si les données sont couramm. utilisées par un thread exécutant sur un autre UCT, l ’autre thread fait une attente occupée Sinon, le thread est mis dans une file d ’attente et sera réveillé quand les données deviennent disponibles Chap. 7 41
  • 368.
    Windows NT : aussiplus. mécanismes  exclusion mutuelle sur données partagées: un fil doit demander accès et puis libérer  section critiques: semblables mais pour synchroniser entre fils de threads différents  sémaphores  event objects: semblables à condition variables Chap. 7 42
  • 369.
    Concepts importants duChapitre 7 Chap. 7 43  Sections critiques: pourquoi  Difficulté du problème de la synch sur SC Bonnes et mauvaises solutions  Accès atomique à la mémoire  Solutions logiciel `pures`  Solution matériel: test-and-set  Solutions par appels du système: Sémaphores, moniteurs, fonctionnement  Problèmes typiques: tampon borné, lecteurs-écrivains, philosophes
  • 370.
    Par rapport aumanuel Chap. 7 44  Le manuel couvre + ou – la même matière, mais en utilisant une approche Java  Pour le test et examen, suivre ma présentation  Pour les travaux de programmation, utiliser les exemples du manuel
  • 371.
    Chap 8 1 Interblocage= impasse (Deadlock) Chapitre 8 http://w3.uqo.ca/lui gi/
  • 372.
    Interblocages: concepts importants Chap8 2  Caractérisation: les 4 conditions  Graphes allocation ressources  Séquences de terminaison  États sûrs et no-sûrs  Prévenir les interblocages  Éviter les interblocages  Détecter les interblocages  Récuperer d’un interblocage
  • 373.
    Exemple 1 Chap 83  Deux processus coexistent dans un système, qui a 2 lignes téleph. seulement  Le proc 1 a besoin de  une ligne téléphonique pour démarrer  la ligne précédente, et une additionnelle, pour terminer  Le proc 2 est pareil  Scénario d ’interblocage:  proc 1 demande 1 ligne  proc 2 demande 1 ligne: les deux lignes sont engagées  interblocage! aucun proc ne peut compléter  à moins qu ’un des proc ne puisse être suspendu  ou puisse retourner en arrière  Observez que l ’interblocage n ’est pas inévitable, p.ex. si 1 complète avant le début de 2  Éviter / détecter le risque d’interblocage  Éviter / détecter qu’un interblocage se vérifie
  • 374.
    Exemple 2  Sémaphores P0 wait (A); wait(B); P1 wait(B) wait(A)  Scénario d’interblocage:  initialisation de A et B à 1  P0 exécute wait(A), A=0  P1 exécute wait(B), B=0  P0 et P1 ne peuvent pas aller plus loin  Qu’arrive au lieu si P0 exécute entièrement avant P1? Chap 8 4
  • 375.
    Définition (Tanenbaum)  Un ensemblede processus est en interblocage si chaque processus attend un événement que seul un autre processus de l’ensemble peut provoquer  L’événement est une libération de ressource  Prenant ce mot dans le sens le plus vaste: ressource peut être un signal, un message,un sémaphore, etc.  Exemple intéressant: interblocage entre lecteurs ou écrivains sur une base de données???  Un processus en interblocage est en état attente Chap 8 5
  • 376.
    Caractérisation d’interblocage  L’interblocage demande laprésence simultanée de 4 conditions (conditions nécessaires et suffisantes)  Exclusion mutuelle: le système a des ressources non partageables (1 seul proc à la fois peut s’en servir)  Ex.: un UCT, une zone de mémoire, une périphérique, mais aussi sémaphores, moniteurs, sections critiques  Saisie et attente (hold and wait): un processus a saisi une ressource non partageable et en attend des autres pour compléter sa tâche  Pas de préemption: un processus qui a saisi une ressource non partageable la garde jusqu’à ce qu’il aura complété sa tâche  Attente circulaire: il y a un cycle de processus tel que chaque processus pour compléter doit utiliser une ressource non partageable qui est utilisée par le suivant, et que le suivant gardera jusqu`à sa terminaison  En présence des 3 premières conditions, une attente circulaire est un interblocage  Les 3 premières conditions n’impliquent pas nécessairement interblocage, car l’attente circulaire pourrait ne pas se vérifier important Chap 8 6
  • 377.
    Chap 8 7 Attentecirculaire - aucun ne lâche - aucun processus ne peut terminer donc interblocage P0 P3 P4 P2 P1 Pour terminer , chaque processus doit saisir une ressource que le prochain ne lâchera pas  interblocage
  • 378.
    Exercice Réfléchissez à cetexemple dans lequel des voitures sont dans une situation d’interblocage sur un pont et voir comment les différentes conditions sont satisfaites. V. aussi l’exemple à la page 1. Chap 8 8
  • 379.
    Exercice Chap 8 9  Considérezun système dans lequel chaque processus n’a besoin que d’une seule ressource pendant toute son existence  L’interblocage, est-il possible?
  • 380.
    Exercice Chap 8 10  Vérifierque si dans un système il y a toujours suffisamment de ressources pour tous, il n’y aura jamais d’interblocages  Cependant ceci est souvent impossible, surtout dans le cas de sections critiques, car les données partagées existent normalement dans un seul exemplaire
  • 381.
    En principe, unproblème difficile Chap 8 11  Le problème de déterminer s’il y a d’interblocage dans un système est connu comme problème insoluble en principe par ordinateur (résultat théorique) On ne pourrait pas écrire un programme S qui, étant donnée un autre programme X en entrée, pourrait déterminer à coup sûr si X contient la possibilité d’interblocage  Cependant, nous pouvons développer des critères pour trouver des réponses plausibles dans des cas particuliers
  • 382.
    Graphes d’allocation ressources Chap8 12  Un ensemble de sommets V et d’arêtes E  V est partitionné dans: P = {P1, P2, …, Pn}, l’ensemble qui consiste de tous les procs dans le système R = {R1, R2, …, Rm}, l’ensemble qui consiste de tous les types de ressources dans le système  arête requête – arête dirigée Pi  Rk  arête affectation – arête dirigée Ri  Pk
  • 383.
    Graphe d’allocation ressources  Pja saisi (et utilise) un exemplaire de Rj Pi Pj  Processus  Ressource dont il y a 4 exemplaires (instances) R  Pi a (ou aura) besoin pour terminer d’un exemplaire de Ri, dont il y en a 4 Chap 8 13 Ri Rj
  • 384.
    Exemple de grapheallocation ressources P1 en attente Chap 8 14 P2 en attente P3 pas en attente Y-a-t-il interblocage?
  • 385.
    Utilisation de cesgraphes Chap 8 15  Nous supposons l’existence des 3 premières conditions  Excl. Mutuelle, saisie et attente, pas de préemption  Pour montrer qu’il n’y a pas d’interblocage, nous devons montrer qu’il n’y a pas de cycle, car il y a un processus qui peut terminer sans attendre aucun autre, et puis les autres de suite  <P3, P2, P1> est un ordre de terminaison de processus: tous peuvent terminer dans cet ordre
  • 386.
    Graphe allocation ressourcesavec interblocage Nous avons deux cycles: P1  R1  P2  R3  P3  R2  P1 P2  R3  P3  R2  P2 aucun proc ne peut terminer aucune possibilité d’en sortir Chap 8 16
  • 387.
    Graphe allocation ressourcesavec cycle, mais pas d’ interblocage (pourquoi?) Attente circulaire, mais les ressources peuvent devenir disponibles Chap 8 17
  • 388.
    Constatations Chap 8 18  Lescycles dans le graphe alloc ressources ne signalent pas nécessairement une attente circulaire  S ’il n`y a pas de cycles dans le graphe, aucun interblocage  S ’il y a de cycles:  Si seulement une ressource par type, interblocage  (pourquoi?!)  Si plusieurs ressources par type, possibilité d’interblocage  Il faut se poser la question: y-a-t-il un processus qui peut terminer et si oui, quels autres processus peuvent terminer en conséquence?
  • 389.
    Hypothèse de terminaison Chap8 19  Un proc qui a toutes les ressources dont il a besoin, il s’en sert pour un temps fini, puis il les libère  Nous disons que le processus termine, mais il pourrait aussi continuer, n’importe, l’important est qu’il laisse la ressource
  • 390.
    Méthodes pour traitementinterblocage Chap 8 20  Concevoir le système de façon qu`un interblocage soit impossible  difficile, très contraignant  approprié dans le cas de systèmes critiques  Les interblocages sont possibles, mais sont évités (avoidance)  Permettre les interblocages, en récupérer  Ignorer le problème, qui donc doit être résolu par le gérant ou l ’usager  malheureusement, méthode d ’utilisation générale!
  • 391.
    Prévention d’interblocage: prévenirau moins une des 4 conditions nécessaires Chap 8 21  Exclusion mutuelle: réduire le plus possible l ’utilisation des ressources partagées et Sections Critiques  Possible seulement dans le cas de procs totalement indépendants  Saisie et attente (hold and wait): un processus qui demande des nouvelles ressources ne devrait pas en retenir des autres (les demander toutes ensemble)  Comment savoir?  Préemption: si un processus qui demande d’autres ressources ne peut pas les avoir, il doit être suspendu, ses ressources doivent êtres rendues disponibles  OK, demande intervention du SE  Attente circulaire: imposer un ordre partiel sur les ressources, un processus doit demander les ressources dans cet ordre (p.ex. tout processus doit toujours demander une imprimante avant de demander une unité ruban)  Difficile
  • 392.
    Éviter les interblocages(deadlock avoidance) Chap 8 22  Chaque processus doit déclarer le nombre max. de ressources dont il prévoit avoir besoin  L’algorithme examine toutes les séquences d ’exécution possibles pour voir si une attente circulaire est possible
  • 393.
    État sûr (safestate)  Un état est sûr si le système peut en sortir sans interblocages  Ne pas allouer une ressource à un processus si l’état qui en résulte n’est pas sûr États sûrs É. non-sûrs Chap 8 23 Impasse
  • 394.
    État sûr Chap 824  Une séquence de proc <P1, P2, …, Pn> est sûre si pour chaque Pi, les ressources que Pi peut encore demander peuvent être satisfaites par les ressources couramment disponibles + ressources utilisées par les Pj qui les précèdent. Quand Pi aboutit, Pi+1 peut obtenir les ressources dont il a besoin, terminer, donc  <P1, P2, …, Pn> est un ordre de terminaison de processus: tous peuvent se terminer dans cet ordre
  • 395.
    Algorithme d’allocation deressources Chap 8 25  Il faut maintenant prendre en considération: les requêtes possibles dans le futur (chaque processus doit déclarer ça)  Arête demande Pi - - > Rj indique que le processus Pi peut demander la ressource Rj (ligne à tirets)
  • 396.
    Chap 8 26 Graphed`allocation ressources Ligne continue: requête courante; tirets: requête
  • 397.
    Un état passûr Si P2 demande R2, ce dernier ne peut pas lui être donné, car ceci peut causer un cycle dans le graphe si P1 req R2. Mieux vaut attendre la fin de P1, puis faire finir P2 Chap 8 27
  • 398.
    Détection d ’interblocage Chap8 28  On permet au système d’entrer dans un état d’interblocage  L’interblocage est détecté  On récupère de l’interblocage
  • 399.
    Différence entre attenteet interblocage Chap 8 29  Il est difficile de détecter s ’il y a effectivement une interblocage dans le système  Nous pourrions voir qu’un certain nombre de processus est en attente de ressources  ceci est normal!  Pour savoir qu’il y a interblocage, il faut savoir qu’aucun processus dans un groupe n’a de chance de recevoir la ressource  car il y a attente circulaire!  Ceci implique une analyse additionnelle, que peu de SE se prennent la peine de faire...
  • 400.
    Méthode de détectiond’interblocage dans le cas d’une ressource par type Chap 8 30  Essentiellement, la méthode déjà décrite Construire un graphe d’allocation ressources et voir s’il y a une manière dont tous les proc peuvent terminer  Dans le cas d’une ressource par type, l`algorithme cherche des cycles dans le graphe (algorithme d’ordre n2, si n=nombre de sommets)  Plus difficile dans le cas de plus. ressources par type Pas discuté
  • 401.
    Graphe allocation ressourceset graphe d ’attente (cas d’1 ressource par type) Chap 8 31
  • 402.
    Récupérer d’interblocages Chap 832  Terminer tous les processus dans l’interblocage  Terminer un processus à la fois, espérant d’éliminer le cycle d ’interblocages  Dans quel ordre: différents critères: priorité besoin de ressources: passé, futur combien de temps il a exécuté, de combien de temps il a encore besoin etc.
  • 403.
    Récupération: préemption deressources Chap 8 33  Minimiser le coût de sélectionner la victime  Rollback: retourner à un état sûr besoin d`établir régulièrement et garder des ‘points de reprise’, sortes de photos de l ’état courant du processus p.ex. Word établit des points de reprise qu’il vous propose après un ‘accident’  Famine possible si le même processus est toujours sélectionné
  • 404.
    Combinaison d’approches Chap 834  Combiner les différentes approches, si possible, en considération des contraintes pratiques prévenir éviter détecter  utiliser les techniques les plus appropriées pour chaque classe de ressource
  • 405.
    Importance du pbde l’interblocage Chap 8 35  L’interblocage est quasiment ignoré dans la conception des systèmes d’aujourd’hui Avec l’exception des systèmes critiques  S’il se vérifie, l’usager verra une panne de système ou l’échec d’un processus  Dans les systèmes à haut parallélisme du futur, il deviendra de plus en plus important de le prévenir et éviter
  • 406.
    Par rapport aumanuel Chap 8 36  Tout le chapitre, mais le code Java n’est pas important pour l’examen
  • 407.
    Interblocages: concepts importants Chap8 37  Caractérisation: les 4 conditions  Graphes allocation ressources  Séquences de terminaison  États sûrs et non-sûrs  Prévenir les interblocages  Éviter les interblocages  Détecter les interblocages  Récuperer d’un interblocage
  • 408.
  • 409.
    Dans ce chapitrenous verrons que, pour optimiser l’utilisation dela mémoire, les programmes sont éparpillés en mémoire selon des méthodes différentes: Pagination, segmentation Chap. 9 2
  • 410.
    Gestion de mémoire:objectifs Chap. 9 3  Optimisation de l ’utilisation de la mémoire principale = RAM  Les plus grand nombre possible de processus actifs doit y être gardé, de façon à optimiser le fonctionnement du système en multiprogrammation garder le système le plus occupé possible, surtout l’UCT s’adapter aux besoins de mémoire de l ’usager  allocation dynamique au besoin
  • 411.
    Gestion de lamémoire: concepts dans ce chapitre Chap. 9 4  Adresse physique et adresse logique mémoire physique et mémoire logique  Remplacement  Allocation contiguë partitions fixes variables  Pagination  Segmentation  Segmentation et pagination combinées  Groupes de paires (buddy systems)
  • 412.
    Application de cesconcepts Chap. 9 5  Pas tous les concepts de ce chapitre sont effectivement utilisés tels quels aujourd’hui dans la gestion de mémoire centrale  Cependant plusieurs se retrouvent dans le domaine de la gestion de mémoires auxiliaires, surtout disques
  • 413.
    Mémoire/Adresses physiques etlogiques Chap. 9 6  Mémoire physique:  la mémoire principale RAM de la machine  Adresses physiques: les adresses de cette mémoire  Mémoire logique: l’espace d`adressage d’un programme  Adresses logiques: les adresses dans cet espace  Il faut séparer ces concepts car normalement, les programmes sont chargés de fois en fois dans positions différentes de mémoire  Donc adresse physique ≠ adresse logique
  • 414.
    Traduction adresses logiquesadr. physiques MMU: unité de gestion de mémoire unité de traduction adresses (memory management unit) Chap. 9 7
  • 415.
    Définition des adresseslogiques Chap. 9 8  Le manuel définit les adresses logiques comme étant les adresses générées par l’UCT Mais parfois l’MMU est partie de l ’UCT!  Je préfère la déf suivante: une adresse logique est une adresse à une location de programme  par rapport au programme lui-même seulement  indépendante de la position du programme en mémoire physique
  • 416.
    Vue de l’usager Chap.9 9  Normalement, nous avons plusieurs types d’adressages p.ex.  les adresses du programmeur (noms symboliques) sont traduites au moment de la compilation dans des  adresses logiques  ces adresses sont traduites en adresses physiques par l’unité de traduction adresses (MMU)  Étant donné la grande variété de matériel et logiciel, il est impossible de donner des défs. plus précises.
  • 417.
    Liaison (Binding) d’adresseslogiques et physiques (instructions et données) Chap. 9 10  La liaison des adresses logiques aux adresses physiques peut être effectuée en moments différents:  Compilation: quand l’adresse physique est connue au moment de la compilation (rare)  p.ex. parties du SE  Chargement: quand l’adresse physique où le progr est chargé est connue, les adresses logiques peuvent être traduites (rare aujourd’hui)  Exécution: normalement, les adresses physiques ne sont connues qu’au moment de l ’exécution  p.ex. allocation dynamique
  • 418.
    Deux concepts de base Chap.9 11  Chargement = Loading. Le programme, ou une de ses parties, est chargé en mémoire physique, prêt à exécuter.  Statique (avant l’exécution)  Dynamique (pendant l’exécution)  Édition de liens = Liaison (enchaînement) des différentes parties d’un programme pour en faire une entité exécutable.  les références entre modules différents doivent être traduites  statique (avant l`exécution)  dynamique (sur demande pendant exécution) • N.B. parties du programme = modules = segments = sousprogrammes = objets, etc.
  • 419.
    Chap. 9 12 Éditionde liens: adressage entre modules B Données D Sous- progr. A Progr. Princ. C Données JUMP(D, 100) LOAD(C,250) LOAD(B,50) Les adresses sont en deux parties : (No de module, Décalage dans le module) doivent être traduites pour permettre Espace d’adressage logique
  • 420.
    Édition de liens: uneméthode possible qui supporte la liaison dynamique Tableau Définitions de A Noms internes de A Nom Adresse Tableau Usage de A Noms Externes de A Nom x Défini dans Module B Module A corps Réf à x dans B Chaque module contient deux tableaux Tableau Définitions de B Noms internes de B Nom x Adresse Tableau Usage de B Noms Externes de B Nom Défini dans Module Module B corps x dans B Chap. 9 13
  • 421.
    Adressage indirecte peut être utilisédans cette méthode (v. aussi chaînes d’adresses en C ou C++) code op adresse instruction Chap. 9 14 1 1 1 1: adresse indirecte: le mot contient une adresse 0: ce mot est le mot qui contient la donnée visée mot adressé 0
  • 422.
    Cette méthode supportel’allocation dynamique  Si le module B n’a pas encore été chargé, la référence à B dans le tableau des noms externes de A contiendra l ’information nécessaire pour trouver et charger B.  Après avoir fait ça, cette référence sera traduite dans une adresse de mémoire physique.  Si B reste toujours au même endroit, nous pouvons mettre dans A directement l’adresse finale (flèche pointillée), sinon nous pouvons continuer de rejoindre B par adressage indirecte Tableau Définitions de A Noms internes de A Nom Adresse Tableau Usage de A Noms Externes de A Tableau Définitions de B Noms internes de B Nom x Adresse Tableau Usage de B Noms Externes de B Nom Défini dans Module Module B corps Nom x Défini dans Module B Module A corps Réf à x dans B x dans B Chap. 9 15
  • 423.
    Aspects du chargement Chap.9 16  Trouver de la mémoire libre pour un module de chargement: contiguë ou non  Traduire les adresses du programme et effectuer les liaisons par rapport aux adresses où le module est chargé
  • 424.
    Chargement (pas contiguici) et traduction d’adresses Mémoire logique Alloc. de mém. JUMP 328 Mém. physique Chap. 9 17 JUMP 10328 Autres programmes 0 500K
  • 425.
    Liaison et chargement v. fig.plus complète dans livre Progr. exécutable Compilateur Modules Objet Éditeur de liens Modules Liés Chargeur Autres Mods (librairie) NB: on fait l`hypothèse que tous les modules soient connus au début Souvent, ce n’est pas le cas  chargement dynamique Chap. 9 18 Progr. Source
  • 426.
    Chargement et liaisondynamique Chap. 9 19  Un processus exécutant peut avoir besoin de différents modules du programme en différents moments  Le chargement statique peut donc être inefficace  Il est mieux de charger les modules sur demande = dynamique  dll, dynamically linked libraries  Dans un programme qui peut avoir besoin de charger des modules dynamiquement, au début ces derniers sont représentés par des stubs qui indiquent comment arriver au modules (p.ex. où il se trouve: disque, www, autre...)  À sa 1ère exéc. le stub cause le chargement du module en mémoire et sa liaison avec le reste du programme  liaison dynamique  Les invocations successives du module ne doivent pas passer à travers ça, on saura l’adresse en mémoire
  • 427.
    Traduction d’adresses logique physique Chap. 9 20  Dans les premiers systèmes, un programme était toujours chargé dans la même zone de mémoire  La multiprogrammation et l’allocation dynamique ont engendré le besoin de charger un programme dans positions différentes  Au début, ceci était fait par le chargeur (loader) qui changeait les adresses avant de lancer l ’exécution  Aujourd’hui, ceci est fait par le MMU au fur et à mesure que le progr. est exécuté  Ceci ne cause pas d’hausse de temps d ’exécution, car le MMU agit en parallèle avec autres fonctions d ’UCT  P.ex. l ’MMU peut préparer l ’adresse d ’une instruction en même temps que l ’UCT exécute l ’instruction précédente
  • 428.
    Recouvrement ou overlay  Dansquelques systèmes surtout dans le passé), la permutation de modules (swapping) d’un même programme pouvait être gérée par l ’usager Deux parties d’un programme qui utilisent la même zone de mémoire Chap. 9 21
  • 429.
    Permutation de programmes(swapping)  Un programme, ou une partie de programme, peut être temporairement enlevé de mémoire pour permettre l’exécution d’autres programmes (chap. 4)  il est mis dans mémoire secondaire, normal. disque Chap. 9 22
  • 430.
    Permutation de programmes(swapping) Chap. 9 23
  • 431.
    Affectation contiguë demémoire Chap. 9 24  Nous avons plusieurs programmes à exécuter  Nous pouvons les charger en mémoire les uns après les autres  le lieu où un programme est lu n’est connu qu’au moment du chargement  Besoins de matériel: registres translation et registres bornes  L’allocation contiguë n’est plus utilisée aujourd’hui pour la mémoire centrale, mais les concepts que nous verrons sont encore utilisés pour l’allocation de fichiers sur disques
  • 432.
    Affectation contiguë de mémoire SE progr.1 progr. 2 disponible progr. 3 Nous avons ici 4 partitions pour des programmes - chacun est chargé dans une seule zone de mémoire Chap. 9 25
  • 433.
    Registres bornes (oulimites) et translation dans MMU adresse de base de la partition où le progr . en éxec. se trouve adresse limite de la partition o ù le progr . en éxec. se trouve Chap. 9 26
  • 434.
    Fragmentation: mémoire nonutilisée Chap. 9 27  Un problème majeur dans l`affectation contiguë: Il y a assez d ’espace pour exécuter un programme, mais il est fragmenté de façon non contiguë  externe: l`espace inutilisé est entre partitions  interne: l ’espace inutilisé est dans les partitions
  • 435.
    Chap. 9 8 2 Partitionsfixes  Mémoire principale subdivisée en régions distinctes: partitions  Les partitions sont soit de même taille ou de tailles inégales  N’importe quel progr. peut être affecté à une partition qui soit suffisamment grande (Stallings)
  • 436.
    Chap. 9 9 2 Algorithmede 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 (Stallings)
  • 437.
    Chap. 9 0 3 Algorithmede placement pour partitions fixes  Partitions de tailles inégales: utilisation d’une seule file  On choisit la plus petite partition libre pouvant contenir le prochain processus  le niveau de multiprogrammation augmente au profit de la fragmentation interne (Stallings)
  • 438.
    Partitions fixes Chap. 9 31  Simple,mais...  Inefficacité de l’utilisation de la mémoire: tout programme, si petit soit-il, doit occuper une partition entière. Il y a fragmentation interne.  Les partitions à tailles inégales atténue ces problèmes mais ils y demeurent...
  • 439.
    Partitions dynamiques Chap. 932  Partitions en nombre et tailles variables  Chaque processus est alloué exactement la taille de mémoire requise  Probablement des trous inutilisables se formeront dans la mémoire: c’est la fragmentation externe
  • 440.
    Partitions dynamiques: exemple (Stallings )  (d) Ily a un trou de 64K après avoir chargé 3 processus: pas assez d’espace pour autre processus  Si tous les proc se bloquent (p.ex. attente d’un événement), P2 peut être permuté et P4=128K peut être chargé. Swapped out Chap. 9 33
  • 441.
    34  (e-f) Progr. 2est suspendu, Progr. 4 est chargé. Un trou de 224-128=96K est créé (fragmentation externe)  (g-h) P1 se termine ou il est suspendu, P2 est repris à sa place: produisant un autre trou de 320-224=96K...  Nous avons 3 trous petits et probabl. inutiles. 96+96+64=256K de fragmentation externe Chap. 9COMPRESSION pour en faire un seul trou de 256K Partitions dynamiques: exemple (Stallings)
  • 442.
    Algorithmes de Placement  pour déciderde l’emplacement du prochain processus  But: réduire l’utilisation de la compression (prend du temps...)  Choix possibles:  Best fit: choisir le plus petit trou (meilleur accès)  Worst fit: le plus grand (pire accès)  First-fit: choisir 1er trou à partir du début (premier accès)  Next-fit: choisir 1er trou à partir du dernier placement (prochain accès) (Stallings) Chap. 9 35
  • 443.
    Algorithmes de placement:commentaires Chap. 9 36  Quel est le meilleur?  critère principal: diminuer la probabilité de situations où un processus ne peut pas être servi, même s ’il y a assez de mémoire...  Best-fit: cherche le plus petit bloc possible: le trou créé est le plus petit possible  la mémoire se remplit de trous trop petits pour contenir un programme  Worst-fit: le trous crées seront les plus grands possibles  Next-fit: les allocations se feront souvent à la fin de la mémoire  La simulation montre qu` il ne vaut pas la peine d ’utiliser les algo les plus complexes... donc first fit
  • 444.
    Suspension (v. chap4)  Lorsque tous les programmes en mémoire sont bloqués, le SE peut en suspendre un (swap/suspend) On transfère au disque un des processus bloqués (en le mettant ainsi en état suspended) et le remplacer par un processus prêt à être exécuté  ce dernier processus exécute une transition d’état Nouveau ou Suspendu à état Ready Chap. 9 37
  • 445.
    Compression (compaction) Chap. 938  Une solution pour la fragmentation externe  Les programmes sont déplacés en mémoire de façon à réduire à 1 seul grand trou plusieurs petits trous disponibles  Effectuée quand un programme qui demande d’être exécuté ne trouve pas une partition assez grande, mais sa taille est plus petite que la fragmentation externe existante  Désavantages:  temps de transfert programmes  besoin de rétablir tous les liens entre adresses de différents programmes
  • 446.
    Système de «groupede paires » (buddy systems): Chap. 9 39 une approche complètement différente (Unix, Linux, sect. 21.6.1)  Débutons avec un seul gros block de taille 2U  Sur une requête pour un block de taille S:  Si 2U-1 < S <= 2U alors allouer le block entier de taille 2U  Sinon, partager ce block en deux compagnons (buddies), chacun de taille 2U-1  Si 2U-2 < S <= 2U-1 alors allouer un des deux compagnons  Sinon diviser un de ces 2 compagnons  Le processus est répété jusqu’à ce que le plus petit block pouvant contenir S soit généré  Deux compagnons sont fusionnés lorsqu’ils deviennent tous deux non alloués
  • 447.
    Exemple d’un “Groupede paires” (Stallings) Chap. 9 40
  • 448.
    Système de groupesde paires (Buddy system) Chap. 9 41  Le SE maintient plusieurs listes de trous la i-liste est la liste des trous de taille 2i lorsqu’une paire de compagnons se trouvent dans une i-liste, ils sont enlevés de cette liste et deviennent un seul trou de la (i+1)-liste  Sur une requête pour une allocation d’un block de taille k tel que 2i-1 < k <= 2i: on examine d’abord la i-liste si elle est vide, on tente de trouver un trou dans la (i+1)-liste, si trouvé, il sera divisé en 2
  • 449.
    Comment trouver lecompagnon Chap. 9 42  Étant donné  L’adresse binaire d’un bloc  La longueur du bloc  Comment trouver son compagnon  Si la longueur du bloc est 2n  Si le bit n de l’adresse est 0, changer à 1 (compagnon est à droite)  Si le bit n de l’adresse est 1, changer à 0 (compagnon est à gauche)  Exemples:  011011110000 longueur 100: 011011110100  011011110000 longueur 10000: 011011100000  (Compter les bits à partir de la droite et de 0)
  • 450.
    Groupes de paires:remarques Chap. 9 43  En moyenne, la fragmentation interne est de 25% par processus  en moyenne pour chaque proc nous aurons une partition pleine de la grandeur d`une puissance de deux, plus une utilisée à moitié  + il pourra y avoir aussi des blocs non utilisés s’il n’y a pas de programmes en attente pouvant les utiliser.  Pas besoin de compression  simplifie la gestion de la mémoire
  • 451.
    Allocation non contiguë Chap.9 44  A fin de réduire la fragmentation, tous les ordis d’aujourd’hui utilisent l’allocation non contiguë  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  Il y a deux techniques de base pour faire ceci: la pagination et la segmentation  la segmentation utilise des parties de programme qui ont une valeur logique (des modules)  la pagination utilise des parties de programme arbitraires (morcellement du programmes en pages de longueur fixe).  elles peuvent être combinées  Je trouve que la segmentation est plus naturelle, donc je commence par celle-ci
  • 452.
    Chap. 9 45 Lessegments sont des parties logiques du progr. A Progr. Princ. B Données D Sous- progr. C Données JUMP(D, 100) LOAD(C,250) LOAD(B,50) 4 segments: A, B, C,
  • 453.
    Les segments commeunités d’alloc mémoire 0 2 1 3 0 3 1 2 espace usager mémoire physique Étant donné que les segments sont plus petits que les programmes entiers, cette technique implique moins de fragmentation (qui est externe dans ce cas) Chap. 9 46
  • 454.
    Mécanisme pour la segmentation  Untableau contient l’adresse de début de tous les segments dans un processus  Chaque adresse dans un segment est ajoutée à l ’adresse de début du segment par la MMU 0 3 1 2 Adr de 3 Adr de 2 Adr de 1 Adr de 0 segment courant Tableau de descripteurs de segments m Chap. 9 47
  • 455.
    Détail s Chap. 9 48  L’adresselogique consiste d ’une paire: <No de segm, décalage> où décalage est l ’adresse dans le segment  Le tableau des segments contient: descripteurs de segments  adresse de base  longueur du segment  Infos de protection, on verra…  Dans le PCB du processus il y aura un pointeur à l ’adresse en mémoire du tableau des segments  Il y aura aussi là dedans le nombre de segments dans le processus  Au moment de la commutation de contexte, ces infos seront chargées dans les registres appropriés d’UCT
  • 456.
    Chap. 9 49 1seule copie en mémoire du segm
  • 457.
    Traduction d`adresses dansla segmentation (figure de Stallings: légère diff. par rapport à la terminologie de Silberschatz) Aussi, si d > longueur: Chap. 9 50
  • 458.
    Le mécanisme endétail (implanté dans le matériel) Stallings Adresse Chap. 9 51 Dans le programme
  • 459.
    Chap. 9 52 Partagede segments: le segment 0 est partagé P .ex: Programme Word utilisé pour éditer différents documents DLL utilisé par plus
  • 460.
    Mécanisme pour 2processus qui exécutent un seul programme sur données différentes La même instruction, si elle est exécutée  par le proc 1, son adresse est modifiée par le contenu du registre 1 par le proc 2, son adresse est modif par le contenu du registre 2 Ceci fonctionne même si l’instruction est exécutée par plus. UCT au même instant, si les registres se trouvent dans des Programme Données proc 1 Données proc 2 Instruction R1 Chap. 9 53 R2 + +
  • 461.
    Segmentation et protection Chap.9 54  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èsinterruption  ces infos peuvent donc varier d ’usager à usager, par rapport au même segment! limite base read, write, execute?
  • 462.
    Évaluation de lasegmentation simple Chap. 9 55  Avantages: l’unité d’allocation de mémoire est  plus petite que le programme entier  une entité logique connue par le programmeur  les segments peuvent changer de place en mémoire  la protection et le partage de segments sont aisés (en principe)  Désavantage: le problème des partitions dynamiques:  La fragmentation externe n’est pas éliminée:  trous en mémoire, compression?  Une autre solution est d`essayer à simplifier le mécanisme en utilisant unités d`allocation mémoire de tailles égales  PAGINATION
  • 463.
    Segmentation contre pagination Chap.9 56  Le pb avec la segmentation est que l’unité d’allocation de mémoire (le segment) est de longueur variable  La pagination utilise des unités d’allocation de mémoire fixe, éliminant donc ce pb
  • 464.
    Pagination simple Chap. 957  La mémoire est partitionnée en petits morceaux de même taille: les pages physiques ou ‘cadres’ ou ‘frames’  Chaque processus est aussi partitionné en petits morceaux de même taille appelés pages (logiques)  Les pages logiques d’un processus peuvent donc être assignés aux cadres disponibles n’importe où en mémoire principale  Conséquences:  un processus peut être éparpillé n’importe où dans la mémoire physique.  la fragmentation externe est éliminée
  • 465.
    Exemple de chargementde processus Chap. 9 58  Supposons que le processus B se termine ou est suspendu Stallings
  • 466.
    Exemple de chargementde processus (Stallings)  Nous pouvons maintenant transférer en mémoire un progr. D, qui demande 5 cadres  bien qu`il n’y ait pas 5 cadres contigus disponibles  La fragmentation externe est limitée au cas que le nombre de pages disponibles n’est pas suffisant pour exécuter un programme en attente  Seule la dernière page d’un progr peut souffrir de fragmentation interne (moy. 1/2 cadre par proc) Chap. 9 59
  • 467.
    Tableaux de pages Lesentrées dans le tableau de pages sont aussi appelées descripteurs de pages Chap. 9 60
  • 468.
    Tableaux de pages  Le SEdoit maintenir une table de pages pour chaque processus  Chaque descripteur de pages contient le numéro de cadre où la page correspondante est physiquement localisée  Une table de pages est indexée par le numéro de la page afin d’obtenir le numéro du cadre  Une liste de cadres disponibles est également maintenue (free frame list) Stallings Chap. 9 61
  • 469.
    Traduction d’adresses  L’adresse logique estfacilement traduite en adresse physique  car la taille des pages est une puissance de 2  les pages débutent toujours à des adresses qui sont puissances de 2  qui ont autant de 0s à droite que la longueur de l’offset  donc ces 0s sont remplacés par l’offset  Ex: si 16 bits sont utilisés pour les adresses et que la taille d’une page = 1K: on a besoins de 10 bits pour le décalage, laissant ainsi 6 bits pour le numéro de page  L’adresse logique (n,m) est traduite à l ’adresse physique (k,m) en utilisant n comme index sur la table des pages et en le remplaçant par l ’adresse k trouvée  m ne change pas Stalling6 Chap. 9
  • 470.
  • 471.
    Traduction d’adresse (logique-physique)pour la pagination Stallings Chap. 9 64
  • 472.
    Trad. d’adresses: segmentationet pagination Chap. 9 65  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.  Cependant, dans la pagination, l’addition peut être faite par simple concaténation: 11010000+1010 = 1101 1010
  • 473.
    Deux petits problèmes Chap.9 66 A) Considérez un système de 4 cadres ou pages physiques, chacune de 4 octets. Les adresses sont de 4 bits, deux pour le numéro de page, et 2 pour le décalage. Le tableau de pages du processus couramment en exécution est: Numéro de page Numéro de cadre 00 11 01 10 10 01 11 00 . Considérez l'adresse logique 1010. Quelle sera l'adresse physique correspondante? B) Considérez maintenant un système de segmentation, pas de pagination. Le tableau des segments du processus en exécution est comme suit: Segmen t number Base 00 110 01 100 10 000 Considérez l'adresse logique (no de seg, décalage)= (01, 01) , quelle est l'adresse physique?
  • 474.
    Adresse logique (pagination) Chap.9 67  Les pages sont invisibles au programmeur, compilateur ou assembleur (seule les adresses relatives sont employées)  Un programme peut être exécuté sur différents matériels employant dimensions de pages différentes  Ce qui change est la manière dont l’adresse est découpée
  • 475.
    Problèmes d’efficacité Chap. 968  La traduction d`adresses, y compris la recherche des adresses des pages et de segments, est exécutée par des mécanismes de matériel  Cependant, si la table des pages est en mémoire principale, chaque adresse logique occasionne au moins 2 références à la mémoire  Une pour lire l’entrée de la table de pages  L’autre pour lire le mot référencé  Le temps d`accès mémoire est doublé...
  • 476.
    Pour améliorer l`efficacité Chap.9 69  Où mettre les tables des pages (les mêmes idées s ’appliquent aussi aux tabl. de segm)  Solution 1: dans des registres de UCT.  avantage: vitesse  désavantage: nombre limité de pages par proc., la taille de la mém. logique est limitée  Solution 2: en mémoire principale  avantage: taille de la mém. logique illimitée  désavantage: mentionné  Solution 3 (mixte): les tableaux de pages sont en mémoire principale, mais les adresses les plus utilisées sont aussi dans des registres d`UCT.
  • 477.
    Chap. 9 v.Content-addressable memory dans Wikipedia Régistres associatifs TLB TLB: Translation Lookaside Buffers, ou caches d’adressage  Recherche parallèle d ’une adresse:  l ’adresse recherchée est cherchée dans la partie gauche de la table en parallèle (matériel spécial)  Traduction page  cadre  Si la page recherchée a été utilisée récemment elle se trouvera dans les registres associatifs  recherche rapide 3 15 7 19 0 17 2 23 No Page No Cadre
  • 478.
    Recherche associative dansTLB Chap. 9 71  Le TLB est un petit tableau de registres de matériel où chaque ligne contient une paire:  Numéro de page logique, Numéro de cadre  Le TLB utilise du matériel de mémoire associative: interrogation simultanée de tous les numéros logiques pour trouver le numéro physique recherché  Chaque paire dans le TLB est fournie d ’un indice de référence pour savoir si cette paire a été utilisée récemment. Sinon, elle est remplacée par la dernière paire dont on a besoin
  • 479.
    Translation Lookaside Buffer(TLB) Chap. 9 72  Sur réception d’une adresse logique, le processeur examine le cache TLB  Si cette entrée de page y est , le numéro de cadre en est extrait  Sinon, le numéro de page indexe la table de page du processus (en mémoire)  Cette nouvelle entrée de page est mise dans le TLB  Elle remplace une autre pas récemment utilisée  Le TLB est vidé quand l’UCT change de proc  Les premières trois opérations sont faites par matériel
  • 480.
    Schéma d’utilisation TLB Dans l’UCT Enmémoire Dans le cas de ‘miss’, f est trouvé en mémoire, puis il es mis dans le TLB Chap. 9 73
  • 481.
    7 Temps d’accès réelavec TLB  Recherche dans TLB =  unités de temps (normalement petit)  Supposons que le cycle de mémoire soit 1 microseconde   = probabilité de touches (hit ratio) = probabilité qu’un numéro de page soit trouvé dans les registres associatifs (quantité entre 0 et 1)  ceci est en relation avec le nombre de registres associatifs disponibles  Temps effectif d’accès tea: tea = (1 + )  + (2 + )(1 – ) = 2 +  –  si  est près de 1 et  est petit, ce temps sera près de 1.  Dans plusieurs ordinateurs, il y a simultanéité entre ces opérations et d’autres opérations de l’UCT donc le temps d’accès réel est plus favorable  Généralisation de la formule prenant m comme temps d’accès à la mémoire centrale: tea = (m+ )  + (2m+ )(1- ) = m  +  + 2m - 2m  +  -  = = 2m +  -m  Cette formule peut être utilisée de différentes manières, p.ex. étant connu un tea désiré, déterminer  nécessaire Chap. 9
  • 482.
    Tableaux de pagesà deux niveaux (quand les tableaux de pages sont très grands, ils peuvent être eux mêmes paginés) tableau de pages du tableau de pages Chap. 9 75
  • 483.
    Tableaux de pagesà deux niveaux  La partie de l ’adresse qui appartient au numéro de page est elle-même divisée en 2 Chap. 9 76
  • 484.
    Partage de pages: 3proc. partageant un éditeur, sur des données privées à chaque proc 1 seule copie de l’éditeur en mémoire au lieu de 3 Chap. 9 77
  • 485.
    Segmentation simple vsPagination simple Chap. 9 78  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
  • 486.
    Pagination et segmentationcombinées Chap. 9 79  Les programmes sont divisés en segments et les segments sont paginés  Donc chaque adresse de segment n`est pas une adresse de mémoire, mais une adresse au tableau de pages du segment  Les tableaux de segments et de pages peuvent être eux-mêmes paginés Méthode inventée pour le système Multics de l’MIT, approx. 1965.
  • 487.
    Adressage (sans considérerla pagination des tableaux de pages et de segments) segment table base register: un registre de l`UCT s p d’ d Chap. 9 80
  • 488.
    Segmentation et paginationcombinées avec pagination des tableaux de pages et segments Chap. 9 81
  • 489.
    Utilisation de TranslationLookaside Buffer Chap. 9 82  Dans le cas de systèmes de pagination à plusieurs niveaux, l’utilisation de TLB devient encore plus importante pour éviter multiples accès en mémoire pour calculer une adresse physique  Les adresses les plus récemment utilisées sont trouvées directement dans la TLB.
  • 490.
    Conclusions sur GestionMémoire Chap. 9 83  Problèmes de:  fragmentation (interne et externe)  complexité et efficacité des algorithmes  Méthodes  Allocation contiguë  Partitions fixes  Partitions variables  Groupes de paires  Pagination  Segmentation  Problèmes en pagination et segmentation:  taille des tableaux de segments et pages  pagination de ces tableaux  efficacité fournie par Translation Lookaside Buffer  Les différentes méthodes décrites dans ce chapitre, et dans le chapitre suivant, sont souvent utilisées conjointement, donnant lieu a des systèmes complexes
  • 491.
    Recapitulation sur lafragmentation Chap. 9 84  Partition fixes: fragmentation interne car les partitions ne peuvent pas être complèt. utilisées + fragm. externe s`il y a des partitions non utilisées  Partitions dynamiques: fragmentation externe qui conduit au besoin de compression.  Paires: fragmentation interne de 25% pour chaque processus + fragm. externe s ’il y a des partit. non utilisées  Segmentation sans pagination: pas de fragmentation interne, mais fragmentation externe à cause de segments de longueur différentes, stockés de façon contiguë (comme dans les partitions dynamiques)  Pagination:  en moyenne, 1/2 cadre de fragm. interne par processus  dans le cas de mémoire virtuelle, aucune fragmentation externe (v. chap suivant)  Donc la pagination avec mémoire virtuelle offre la meilleure solution au pb de la fragmentation
  • 492.
    Par rapport aulivre Chap. 9 85  Tout à l’exception de la section 9.4.4 (tables de pages inversées)
  • 493.
    DLL http://www.webopedia.com/TERM/D/DLL.html Chap. 986  Short for Dynamic Link Library, a library of executable functions or data that can be used by a Windows application. Typically, a DLL provides one or more particular functions and a program accesses the functions by creating either a static or dynamic link to the DLL. A static link remains constant during program execution while a dynamic link is created by the program as needed. DLLs can also contain just data. DLL files usually end with the extension .dll,.exe., drv, or .fon.  A DLL can be used by several applications at the same time. Some DLLs are provided with the Windows operating system and available for any Windows application. Other DLLs are written for a particular application and are loaded with the application. Short for Dynamic Link Library, a library of executable functions or data that can be used by a Windows application. Typically, a DLL provides one or more particular functions and a program accesses the functions by creating either a static or dynamic link to the DLL. A static link remains constant during program execution while a dynamic link is created by the program as needed. DLLs can also contain just data. DLL files usually end with the extension .dll,.exe., drv, or .fon.  A DLL can be used by several applications at the same time. Some DLLs are provided with the Windows operating system and available for any Windows application. Other DLLs are written for a particular application and are loaded with the application.
  • 494.
    Chap 10 1 Chapitre 10 Mémoirevirtuelle http://w3.uqo.ca/lui gi
  • 495.
    Mémoire Virtuelle Chap 102  Pagination sur demande  Problèmes de performance  Remplacement de pages: algorithmes  Allocation de cadres de mémoire  Emballement  Ensemble de travail
  • 496.
    Concepts importants duChap. 10 Chap 10 3  Localité des références  Mémoire virtuelle implémentée par va-et-vient des pages, mécanismes, défauts de pages  Adresses physiques et adresses logiques  Temps moyen d’accès à la mémoire  Récriture ou non de pages sur mém secondaire  Algorithmes de remplacement pages:  OPT, LRU, FIFO, Horloge  Fonctionnement, comparaison  Écroulement, causes  Ensemble de travail (working set)  Relation entre la mémoire allouée à un proc et le nombre d’interruptions  Relation entre la dimension de pages et le nombre d’interruptions  Prépagination, post-nettoyage  Effets de l’organisation d’un programme sur l’efficacité de la pagination
  • 497.
    Chap 10 4 Lamémoire virtuelle est une application du concept de hiérarchie de mémoire  C’est intéressant de savoir que des concepts très semblables s’appliquent aux mécanismes de la mémoire cache Cependant dans ce cas les mécanismes sont surtout de matériel magnetic tapes optical disk magnetic disk electronic disk cache main m e m o ry registers Mécanismes cache Méc. mém. virtuelle RAM (flash)
  • 498.
    La mémoire virtuelle Chap10 5  À fin qu’un programme soit exécuté, il ne doit pas nécessairement être tout en mémoire centrale!  Seulement les parties qui sont en exécution ont besoin d’être en mémoire centrale  Les autres parties peuvent être sur mém secondaire (p.ex. disque), prêtes à être amenées en mémoire centrale sur demande  Mécanisme de va-et-vient ou swapping  Ceci rend possible l’exécution de programmes beaucoup plus grands que la mémoire physique  Réalisant une mémoire virtuelle qui est plus grande que la mémoire physique
  • 499.
    De la paginationet segmentation à la mémoire virtuelle  Mécanisme de va-et-vien ou Chap 10 6  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
  • 500.
    Mémoire virtuelle: résultat d’un mécanismequi combine la mémoire principale et les mémoires secondaires Tableau de pages Chap 10 7
  • 501.
    Localité et mémoire virtuelle Chap10 8  Principe de localité des références: les références à la mémoire dans un processus tendent à se regrouper  Donc: seule quelques pièces d’un processus seront utilisées durant une petite période de temps (pièces: pages ou segments)  Il y a une bonne chance de “deviner” quelles seront les pièces demandées dans un avenir rapproché
  • 502.
    Visualisation de lalocalité des références Chap 10 9
  • 503.
    Pages en RAMou sur disque Page A en RAM et sur disque Chap 10 10 Page E seulement sur disque
  • 504.
    Nouveau format dutableau des pages (la même idée peut être appliquée aux tableaux de segments) Adresse de la page Bit présen t bit présent 1 si en mém. princ., 0 si en mém second. Si la page est en mém. princ., ceci est une adr. de mém. Principale sinon elle est une adresse de mémoire secondaire Au début, bit présent = 0 pour toutes les pages Chap 10 11
  • 505.
    Avantages du chargement partiel Chap10 12  Plus de processus peuvent être maintenus en exécution en mémoire  Car seules quelques pièces sont chargées pour chaque processus  L’usager est content, car il peut exécuter plusieurs processus et faire référence à des gros données sans avoir peur de remplir la mémoire centrale  Avec plus de processus en mémoire principale, il est plus probable d’avoir un processus dans l’état prêt, meilleure utilisation d’UCT  Plusieurs pages ou segments rarement utilisés n’auront peut être pas besoin d`être chargés du tout  Il est maintenant possible d’exécuter un ensemble de processus lorsque leur taille excède celle de la mémoire principale  Il est possible d’utiliser plus de bits pour l’adresse logique que le nombre de bits requis pour adresser la mémoire principale  Espace d ’adressage logique >> esp. d ’adressage physique
  • 506.
    Mémoire Virtuelle: PourraitÊtre Énorme! Chap 10 13  Ex: 16 bits sont nécessaires pour adresser une mémoire physique 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, car toutes les pages ne doivent pas ê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  Dans quelques architectures, ces bits peuvent être inclus dans des registres  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
  • 507.
    Mémoire Virtuelle Chap 1014  Pour une meilleure performance, la mémoire virtuelle se trouve souvent dans une région du disque qui est n’est pas gérée par le système de fichiers  Mémoire va-et-vient, swap memory  La mémoire physique est celle qui est référencée par une adresse physique  Se trouve dans le RAM et cache  La traduction de l’adresse logique en adresse physique est effectuée en utilisant les mécanismes étudiés dans le chapitre précédent.
  • 508.
    Mémoire virtuelle: lemécanisme de va-et-vient Tableau de pages Chap 10 15
  • 509.
    Exécution d’un Processus Chap10 16  Le SE charge la mémoire principale de quelques pièces (seulement) du programme (incluant le point de départ)  Chaque entrée de la table de pages (ou segments) possède un bit présent qui indique si la page ou segment se trouve en mémoire principale  L’ensemble résident (résident set) est la portion du processus se trouvant en mémoire principale  Une interruption est générée lorsque l’adresse logique réfère à une pièce qui n’est pas dans l’ensemble résident  défaut de pagination, page fault
  • 510.
    Exécution d’une défautde page: va-et-vient plus en détail Mémoir e virtuell e Chap 10 17
  • 511.
    Séquence d’événements pourdéfaut de page Chap 10 18  Trappe au SE: page demandée pas en RAM  Sauvegarder registres et état du proc dans PCB  Un autre proc peut maintenant gagner l ’UCT  SE détermine si la page demandée est légale  sinon: terminaison du processus  et trouve la position de la page sur disque  dans le descripteur de la page  lire la page de disque dans un cadre de mémoire libre (supposons qu`il y en a!)  exécuter les ops disque nécessaires pour lire la page
  • 512.
    Séquence d’événements pourdéfaut de page (ctn.) Chap 10 19  L ’unité disque a complété le transfert et interrompt l’UCT  sauvegarder les registres etc. du proc exécutant  SE met à jour le contenu du tableau des pages du proc. qui a causé le défaut de page  Ce processus devient prêt=ready  À un certain point, il retournera à exécuter  la page désirée étant en mémoire, il pourra maintenant continuer
  • 513.
    Chap 10 20 Tempsmoyen d’accès à la mémoire Supposons que: • accès en mémoire: 100 nanosecs •temps de traitement de défaut de page: 25 millisecs = 25,000,000 nanosecs (inclut le temps de lecture-écriture disque) • p: probabilité de trouver une page en mémoire (défaut) (quantité entre 0 et 1) Temps moyen d’accès mémoire: p x 100 + (1-p) x 25,000,000 (pas de défaut + défaut) En utilisant la même formule, nous pouvons déterminer quel est le nombre de défauts que nous pouvons tolérer , si un certain niveau deperformance est désiré (v. manuel). P .ex. avec ces params, si le ralentissement à cause de pagination nepeut pas excéder 10%, 1 seul défaut de pagination peut être toléré pour chaque 2,500,000 accès de aujourd’hui= autour de 10ms)
  • 514.
    Quand la RAMest pleine mais nous avons besoin d`une page pas en RAM Chap 10 21
  • 515.
  • 516.
    Remplacement de pages Chap10 23  Quoi faire si un processus demande une nouvelle page et il n’y a pas de cadres libres en RAM?  Il faudra choisir une page déjà en mémoire principale, appartenant au même ou à un autre processus, qu’il est possible d ’enlever de la mémoire principale  la victime!  Un cadre de mémoire sera donc rendu disponible  Évidemment, plusieurs cadres de mémoire ne peuvent pas être `victimisés`:  p.ex. cadres contenant le noyau du SE, tampons d ’E/S...
  • 517.
    Bit de modification, dirty bit Chap 10 24  La ‘victime’ doit-elle être récrite en mémoire secondaire?  Seulement si elle a été changée depuis qu`elle a été amenée en mémoire principale sinon, sa copie sur disque est encore fidèle  Bit de modif sur chaque descripteur de page indique si la page a été changée  Donc pour calculer le coût en temps d’une référence à la mémoire il faut aussi considérer la probabilité qu’une page soit ‘sale’ et le temps de récriture dans ce cas
  • 518.
    Algorithmes de remplacementpages Chap 10 25  Choisir la victime de façon à minimiser le taux de défaut de pages pas évident!!!  Page dont nous n`aurons pas besoin dans le futur? impossible à savoir!  Page pas souvent utilisée?  Page qui a été déjà longtemps en mémoire??  etc. nous verrons...
  • 519.
    Critères d’évaluation desalgorithmes Chap 10 26  Les algorithmes de choix de pages à remplacer doivent être conçus de façon à minimiser le taux de défaut de pages à long terme  Mais ils ne peuvent pas impliquer des inefficacités  Ni l’utilisation de matériel dispendieux
  • 520.
    Critères d’efficacité Chap 1027  Il est intolérable d’exécuter un algorithme complexe chaque fois qu’une opération de mémoire est exécutée Ceci impliquerait des accès additionnels de mémoire  Cependant ceci peut se faire chaque fois qu’il y a une faute de pagination  Les opérations qui doivent être faites à chaque accès de mémoire doivent être câblées dans le matériel
  • 521.
    Explication et évaluationdes algorithmes Chap 10 28  Nous allons expliquer et évaluer les algorithmes en utilisant la chaîne de référence pages suivante (prise du livre de Stallings): 2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2  Attention: les séquences d’utilisation pages ne sont pas aléatoires...  Localité de référence  Ces références proviendront de plusieurs processus  L’évaluation sera faite sur la base de cet exemple, évidemment pas suffisant pour en tirer des conclusions générales
  • 522.
    Algorithmes pour lapolitique de remplacement Chap 10 29  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) mais sert de norme de comparaison pour les autres algorithmes:  Ordre chronologique d’utilisation (LRU)  Ordre chronologique de chargement (FIFO)  Deuxième chance ou Horloge (Clock)
  • 523.
     Ordre chronologique d’utilisation(LRU)  Remplace la page dont la dernière référence remonte au temps le plus lointain (le passé utilisé pour prédire le futur) En raison de la localité des références, il s’agit de la page qui a le moins de chanStcalleings d’être référencée performance presque aussi bonne que l’algo. OPT Chap 10 30 Algorithmes pour la politique de remplacement
  • 524.
    Comparaison OPT-LRU hap C Stalling31  Exemple: Un processus de 5 pages s’ìl n`y a que 3 pages physiques disponibles.  Dans cet exemple, OPT occasionne 3+3 défauts, LRU 3+4.
  • 525.
    Note sur lecomptage des défauts de page Chap 10 32  Lorsque la mémoire principale est vide, chaque nouvelle page que nous ajoutons est le résultat d’un défaut de page  Mais pour mieux comparer les algorithmes, il est utile de garder séparés ces défauts initiaux car leur nombre est le même pour tous les algorithmes
  • 526.
    Implémentation problématique deLRU Chap 10 33  Chaque page peut être marquée (dans le descripteur dans la table de pages) du temps de la dernière référence:  besoin de matériel supplémentaire.  La page LRU est celle avec la + petite valeur de temps (nécessité d’une recherche à chaque défaut de page)  On pourrait penser à utiliser une liste de pages dans l’ordre d ’utilisation: perte de temps à maintenir et consulter cette liste (elle change à chaque référence de mémoire!)  D’autres algorithmes sont utilisés:  LRU approximations
  • 527.
    Premier arrivé, premiersorti (FIFO) Chap 10 34  Logique: une page qui a été longtemps en mémoire a eu sa chance d ’exécuter  Lorsque la mémoire est pleine, la plus vieille page est remplacée. Donc: “first-in, first-out”  Simple à mettre en application  Mais: Une page fréquemment utilisée est souvent la plus vielle, elle sera remplacée par FIFO!
  • 528.
    Comparaison de FIFOavec LRU (Stallings)  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 Chap 10 35
  • 529.
    Implantation de FIFO Chap10 36  Facilement implantable en utilisant un tampon circulaire 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)
  • 530.
    Problème conceptuel avecFIFO Chap 10 37  Les premières pages amenées en mémoire sont souvent utiles pendant toute l’exécution d’un processus! variables globales, programme principal, etc.  Ce qui montre un problème avec notre façon de comparer les méthodes sur la base d ’une séquence aléatoire: les références aux pages dans un programme réel ne seront pas vraiment aléatoires
  • 531.
    L’algorithme de l’horloge(deuxième chance) Chap 10 38  Semblable à FIFO, mais il tient compte de l’utilisation récente de pages  La structure à liste circulaire est celle de FIFO  Mais les cadres qui viennent d’être utilisés (bit=1) ne sont pas remplacées (deuxième chance)  Les cadres forment conceptuellement un tampon circulaire  Lorsqu’une page est chargée dans un cadre, un pointeur pointe sur le prochain cadre du tampon  Pour chaque cadre du tampon, un bit “utilisé” est mis à 1 (par le matériel) lorsque:  une page y est nouvellement chargée  sa page est utilisée  Le prochain cadre du tampon à être remplacé sera le premier rencontré qui aura son bit “utilisé” = 0.  Durant cette recherche, tout bit “utilisé” = 1 rencontré sera mis à 0
  • 532.
    39 La page 727est chargée dans le cadre 4. La proch. victime est 5, puis 8. Chap 10 Algorithme de l’horloge: un exemple (Stallings).
  • 533.
    Chap 10 40 Comparaison:Horloge, FIFO et LRU (Stallings)  Astérisque indique que le bit utilisé est 1  L’horloge protège du remplacement les pages fréquemment utilisées en mettant à 1 le bit “utilisé” à chaque référence  LRU = 3+4, FIFO = 3+6, Horloge =
  • 534.
    Détail sur lefonctionnement de l’horloge Tous les bits étaient à 1. Nous avons fait tout le tour et donc nous avons changé le bit de toutes les pages à 0. Donc la 1ère page est réutilisée Chap 10 41
  • 535.
    Matériel additionnel pourl’algo CLOCK Chap 10 42  Chaque bloc de mémoire a un bit ‘touché’ (use)  Quand le contenu du bloc est utilisé, le bit est mis à 1 par le matériel  Le SE regarde le bit  S’il est 0, la page peut être remplacée  S’il est 1, il le met à 0 1 0 0 0 1 Mémoir e
  • 536.
    Résumé des algorithmesle plus importants Chap 10 43 OPTIMAL Le meilleur en principe mais pas implantable, utilisé comme référence LRU Excellent en principe, mais demande du matériel dispendieux FIFO Facile à implanter, mais peut écarter des pages très utilisées Horloge Modification de FIFO vers LRU: évite d’écarter des pages récemment utilisées Les algorithmes utilisés en pratique sont des variations et combinaisons de ces concepts
  • 537.
    Algorithmes compteurs Chap 1044  Garder un compteur pour les références à chaque page  LFU: Least Frequently Used: remplacer la pages avec le plus petit compteur  MFU: Most Frequently Used: remplacer les pages bien usées pour donner une chance aux nouvelles  Ces algorithmes sont d’implantation dispendieuse et ne sont pas beaucoup utilisés  Mise à jour de compteurs à chaque opération de mémoire!
  • 538.
    Utilisation d’une pile(stack) Chap 10 45  Quand une page est utilisée, est mise au sommet de la pile. donc la page la plus récemment utilisée est toujours au sommet, la moins récemment utilisée est toujours au fond  Bonne implémentation du principe de localité, cependant…  La pile doit être mise à jour chaque fois qu’une page est utilisée Inefficace, pas pratique
  • 539.
    Anomalie de Belady Chap10 46  Pour quelques algorithmes, dans quelques cas il pourrait avoir plus de défauts avec plus de mémoire! p. ex. FIFO, mais pas LRU, OPT, CLOCK
  • 540.
  • 541.
    48 Anomalie de Belady(FIFO) Chap 10 Cas d’intérêt + de mémoire, + de fautes (v.
  • 542.
    Chap 10 49 LeChapitre 10 continue…
  • 543.
    Chap 10-2 1 Chapitre10: 2ème partie
  • 544.
    Chap 10-2 2 Allocationde cadres RAM  Pour exécuter, un processus a besoin d’un nombre minimal de cadres de mémoire RAM  par exemple, quelques instructions pourraient avoir besoin de plusieurs pages simultanément pour exécuter!  Il est aussi facile de voir que un proc qui reçoit très peu de mémoire subira un nombre excessif de défauts de pagination, donc il sera excessivement ralenti  Comment s`assurer qu’un proc soit alloué son minimum  allocation égale: chaque processus a droit a une portion égale de la mémoire physique  allocation proportionnelle: chaque processus a droit à une portion proportionnelle à sa taille  le critère devrait plutôt être le besoin de pages: v. working set http://w3.uqo.ca/lui
  • 545.
    Allocation globale oulocale Chap 10-2 3  globale: la `victime`est prise de n`importe quel processus  locale: la `victime`est prise du processus qui a besoin de la page
  • 546.
    Écroulement ou thrashing(liter.: défaite)  S ’il n`y a pas assez de mémoire pour exécuter un proc sans trop de défauts de pagination, le proc finira pour passer trop de temps dans les files d`attente  Si cette situation se généralise à plusieurs procs, l ’UCT se trouvera à être sous- utilisée  Le SE pourra chercher de remédier à cette situation en augmentant le niveau de multiprogrammation  plus de procs en mémoire!  moins de mém par proc!  plus de défauts de pagination!  Désastre: écroulement  le système devient entièrement occupé à faire des E/S de pages, il ne réussit plus à faire de travail utile Chap 10-2 4
  • 547.
    La raison del`écroulement  Chaque processus a besoin d ’un certain nombre de pages pour exécuter efficacement  Le nombre de pages dont l’ensemble de processus a besoin à l’instant excède le nombre de cadres de mémoire RAM disponible  défaite du concept de mémoire virtuelle Chap 10-2 5
  • 548.
    Ensemble de travail(working set) Chap 10-2 6  L’ensemble de travail d’un proc donné à un moment d’exécution donné est l’ensemble des pages dont le proc a besoin pour exécuter sans trop de défauts de pagination Malheureusement, un concept flou
  • 549.
    Chercher à prévoirles demandes de pages sur la base des demandes passées t1 WS(t1) = {1, 2, 5, 6, 7}   WS(t2) = {3, 4} t2 … 2 6 1 5 7 7 7 7 5 1 6 2 3 4 1 2 3 4 4 4 3 4 3 4 4 4 1 3 2 3 4 4 4 3 4 4 4 …  Fixer un intervalle   Les pages intéressées par les dernières  operations de mémoire sont dans l ’ensemble de travail déterminé par   Comment choisir un  approprié? Chaîne Figure 10.16 Chap 10-2 7 Working-set model.  =10 opér de réf.  = 4 donnerait le même résultat pour t2!
  • 550.
    Modèle de l’ensemblede travail Chap 10-2 8    une fenêtre d’ensemble de travail  = un nombre fixe de réf. de pages  p.ex. 10.000 opérations de mémoire  SI trop petit, il contiendra pas tout l ’ensemble de pages couramment utilisé par un proc  Si trop grand, il contiendra plusieurs ensembles de pages  WSSi (ensemble de travail du proc. i)  D = ∑ WSSi nombre total de cadres demandés par tous les procs en exéc  Si D > mémoire  Risque d’écroulement  S’assurer que ceci ne se vérifie pas  si nécessaire, suspendre un des processus  Problème: choisir un bon   peut être fait par le gérant du système
  • 551.
    Implémentation du conceptde WS: difficile! Chap 10-2 9  Minuterie et bits référence  Bit de référence qui est mis à 1 chaque fois que une page est utilisée  Minuterie qui interrompt régulièrement pour voir les pages qui ont été utilisées dans un intervalle de temps
  • 552.
    Le concept deWS en pratique Chap 10-2 10  Deux types de difficultés:  fixer le  de façon différente pour chaque processus, pour représenter ses besoins  Du matériel spécial est nécessaire pour suivre le WS d ’un proc à un moment donné
  • 553.
    Pour chaque processus,il existe une dimension de mémoire acceptable Chap 10-2 11 ceci suggère une approche plus pratique
  • 554.
    Une méthode plusfacile à implanter que WS Chap 10-2 12  Le gérant du système détermine quelles sont les nombres de défauts de pagination maximales et minimales tolérables dans le système, et pour chaque travail, selon ses caractéristiques  Si un travail en produit plus que sa juste partie, lui donner plus de mémoire  Si un travail en produit moins, lui donner moins de mémoire  Suspendre si possible des travaux qu`on ne peut pas satisfaire  Ou amorcer d’autres travaux si les ressources sont disponibles
  • 555.
    Optimisations Chap 10-2 13  Ungrand nombre de techniques d’optimisation ont été proposées et implantées Le manuel en discute plusieurs:  Prépagination, post-nettoyage  Stockage efficace  Taille optimale des pages
  • 556.
    Prépagination, post-nettoyage Chap 10-214  Prépagination  noter quelles pages paraissent être reliées les unes aux autres  quand une de ces pages est amenée en mémoire RAM, y amener les autres en même temps  ne pas amener une seule page, s’il n`y a pas assez d ’espace pour les autres  éventuellement, stocker toutes ces pages dans des secteurs contigus de disque, de façon qu ’elles puissent être lues rapidement en séquence  Post-nettoyage (post-purging)  enlever ensemble tout un groupe de pages reliées (même localité)
  • 557.
    Stocker les pagesde façon efficace Chap 10-2 15
  • 558.
    Tailles de pages(un pb de conception matériel) Chap 10-2 16  Grande variété de tailles de pages aujourd’hui  en pratique: de 512B à 16MB  Avantages des petites pages:  moins de fragmentation interne  moins d’information inutile en mémoire  Avantages des grandes pages:  tableaux de pages plus petits  le temps de disque le plus important est le temps de positionnement  une fois le disque positionné, il vaut la peine de lire une grande page  Tendance aujourd’hui vers grandes pages car nous avons des grands RAMs  4-8KB
  • 559.
    Pages grandes ou petites  Avecune petite taille  grand nombre de pages en mém. centrale  chaque page contient uniquement du code utilisé  peu de défauts de page une fois que toutes les pages utiles sont chargées  En augmentant la taille  moins de pages peuvent être gardées dans RAM  chaque page contient plus de code qui n’est pas utilisé  plus de défauts de page  Mais ils diminuent lorsque nous approchons le point P où la taille d’une page est celle d’un programme entier Stallings Chap 10-2 17
  • 560.
    Différentes tailles de pages Chap10-2 18  Certains processeurs supportent plusieurs tailles. Ex:  Pentium supporte 2 tailles: 4KB ou 4MB  R4000 supporte 7 tailles: 4KB à 16MB  dimensions différentes peuvent être en utilisation par des travaux différents, selon leur caractéristiques de localité  Travaux qui utilisent des grosses boucles et grosses structures de données pourront utiliser bien les grosses pages  Des gros travaux qui ‘sautent’ un peu partout sont dans la situation contraire  L’UCT (ou MMU) contient un registre qui dit la taille de page couramment utilisée
  • 561.
    Effets de l’organisationdu programme sur l’efficacité de la pagination Chap 10-2 19  En principe, la pagination est censée être invisible au programmeur  Mais le programmeur peut en voir les conséquences en termes de dégradation de performance  p.ex. quand il change d ’un contexte à l’autre  Le programmeur peut chercher à éviter la dégradation en cherchant d ’augmenter la localité des références dans son programme  En réalité, ce travail est fait normalement par le compilateur
  • 562.
    Effets de l’organisationdu programme sur l’efficacité de la pagination Chap 10-2 20  Structure de programme  Array A[1024, 1024]  chaque ligne est stockée dans une page différente,  un cadre différent  Programme 1: balayage par colonnes: for j = 1 to 1024 do for i = 1 to 1024 do A[i,j] = 0; 1024 x 1024 défauts de pagination  Programme 2: balayage par lignes: for i = 1 to 1024 do for j = 1 to 1024 do A[i,j] = 0; 1024 défauts de pagination
  • 563.
    Taille de pageset localité processus Chap 10-2 21  Dans le cas de programmes qui exécutent du code qui ’saute’ beaucoup, les petites pages sont préférables (code OO est dans cette catégorie)
  • 564.
    Verrouillage de pagesen mémoire Chap 10-2 22  Certaines pages doivent être verrouillées en mémoire, p.ex. celles qui contiennent le noyau du SE  Il est aussi essentiel de verrouiller en mémoire des pages sur lesquelles il y a exécution d ’E/S  Ceci peut être obtenu avec un bit `verrou` sur le cadre de mémoire ce bit veut dire que ce cadre ne peut pas être sélectionné comme `victime`
  • 565.
    Systèmes en tempsréel Chap 10-2 23  Avec la mémoire virtuelle, les temps d’exécution d’un processus deviennent moins prévisibles retards inattendus à cause de la pagination  Donc les systèmes en temps réel `durs` utilisent rarement la mémoire virtuelle
  • 566.
    Combinaison de techniques Chap10-2 24  Les SE réels utilisent les techniques que nous avons étudiées en combinaison, e.g.  Linux utilise le buddy system en combinaison avec la pagination (la plus petite portion de mémoire allouable est une page)  d`autres systèmes utilisent les partitions fixes avec la pagination, ce qui peut être fait de plusieurs façons:  diviser la mémoire réelle en partitions fixes, assigner chaque partition à un ou plusieurs processus, puis paginer un processus dans la partitions qui lui a été assignée  diviser la mémoire virtuelle en partitions, assigner chaque partition à un ou plus. processus, puis utiliser la technique appropriée pour chaque processus dans sa partition  Les SE réels sont complexes et variés, mais les principes étudiés dans ce cours en constituent la base.
  • 567.
    Conclusions 1 Chap 10-225  Il est fortement désirable que l`espace d ’adressage de l ’usager puisse être beaucoup plus grand que l ’espace d ’adressage de la mémoire RAM  Le programmeur sera donc libéré de la préoccupation de gérer son occupation de mémoire  cependant, il devra chercher à maximiser la localité de son processus  La mémoire virtuelle aussi permet à plus de processus d ’être en exécution  UCT, E/S plus occupées
  • 568.
    Conclusions 2 Chap 10-226  Le problème de décider la page victime n’est pas facile. Les meilleurs algorithmes sont impossibles ou difficiles à implanter Cependant en pratique l ’algorithme FIFO est acceptable
  • 569.
    Conclusions 3 Chap 10-227  Il faut s’assurer que chaque processus ait assez de pages en mémoire physique pour exécuter efficacement  risque d ’écroulement  Le modèle de l’ensemble de travail exprime bien les exigences, cependant il est difficile à implanter  Solution plus pragmatique, où on décide de donner + ou - de mémoire aux processus selon leur débit de défauts de pagination  À fin que ces mécanismes de gestion mémoire soient efficaces, plusieurs types de mécanismes sont désirables dans le matériel
  • 570.
    Dans un systèmeréel Chap 10-2 28 Une lecture disque sur un PC prend approx 10ms Donc la limite est autour de 100 fautes de pagination par seconde Dans un serveur avec mémoire secondaire éléctronique (p.ex. flash memory) le taux de pagination peut arriver à milliers de pages par seconde  http://bsd7.starkhome.cs.sunysb.edu/~samson
  • 571.
    Concepts importants duChap. 10 Chap 10-2 29  Localité des références  Mémoire virtuelle implémentée par va-et-vient des pages, mécanismes, défauts de pages  Adresses physiques et adresses logiques  Temps moyen d’accès à la mémoire  Récriture ou non de pages sur mém secondaire  Algorithmes de remplacement pages:  OPT, LRU, FIFO, Horloge  Fonctionnement, comparaison  Écroulement, causes  Ensemble de travail (working set)  Relation entre la mémoire allouée à un proc et le nombre d’interruptions  Relation entre la dimension de pages et le nombre d’interruptions  Prépagination, post-nettoyage  Effets de l’organisation d’un programme sur l’efficacité de la pagination
  • 572.
    Par rapport aumanuel… Chap 10-2 30  Section 10.6: intéressante, mais pas sujet d’examen
  • 573.
    Chap 11 1 Chapitre 11 Systèmesde fichiers http://w3.uqo.ca/lui gi/
  • 574.
    Concepts importants duchapitre Chap 11 2  Systèmes fichiers  Méthodes d’accès  Structures Répertoires  Protection  Structures de systèmes fichiers  Méthodes d’allocation  Gestion de l’espace libre  Implémentation de répertoires  Questions d’efficacité
  • 575.
    Que c’est qu’unfichier Chap 11 3  Collection nommée d’informations apparentées, enregistrée sur un stockage secondaire Nature permanente  Les données qui se trouvent sur un stockage secondaires doivent être dans un fichier  Différents types: Données (binaire, numérique, caractères….) Programmes
  • 576.
    Structures de fichiers Chap11 4  Aucune – séquences d’octets…  Texte: Lignes, pages, docs formatés  Source: classes, méthodes, procédures…  Etc.
  • 577.
    Chap 11 5 Attributsd’un fichier  Constituent les propriétés du fichiers et sont stockés dans un fichier spécial appelé répertoire (directory). Exemples d’attributs:  Nom:  pour permet aux personnes d’accéder au fichier  Identificateur:  Un nombre permettant au SE d’identifier le fichier  Type:  Ex: binaire, ou texte; lorsque le SE supporte cela  Position:  Indique le disque et l’adresse du fichier sur disque  Taille:  En bytes ou en blocs  Protection:  Détermine qui peut écrire, lire, exécuter…  Date:  pour la dernière modification, ou dernière utilisation  Autres…
  • 578.
    Opérations sur lesfichiers: de base Chap 11 6  Création  Écriture  Pointeur d’écriture qui donne la position d’écriture  Lecture  Pointeur de lecture  Positionnement dans un fichier (temps de recherche)  Suppression d’un fichier  Libération d’espace  Troncature: remise de la taille à zéro tout en conservant les attributs
  • 579.
    Autres opérations Chap 117  Ajout d’infos (p.ex. concaténation)  Rénommage  Copie  peut être faite par rénommage: deux noms pour un seul fichier  Ouverture d’un fichier: le fichier devient associé à un processus qui en garde les attributs, position, etc.  Fermeture  Ouverture et fermeture peuvent être explicites (ops open, close)  ou implicites
  • 580.
    Informations reliées àun fichier ouvert Chap 11 8  Pointeurs de fichier Pour accès séquentiel P.ex. pour read, write  Compteur d’ouvertures  Emplacement
  • 581.
    Types de fichiers Chap11 9  Certains SE utilisent l’extension du nom du fichier pour identifier le type.  Microsoft: Un fichier exécutable doit avoir l’extension .EXE, .COM, ou .BAT (sinon, le SE refusera de l’exécuter)  Le type n’est pas défini pour certains SE  Unix: l’extension est utilisée (et reconnue) seulement par les applications  Pour certains SE le type est un attribut  MAC-OS: le fichier a un attribut qui contient le nom du programme qui l’a généré (ex: document Word Perfect)
  • 582.
  • 583.
    Chap 11 11 Structurelogique des fichiers  Le type d’un fichier spécifie sa structure  Le SE peut alors supporter les différentes structures correspondant aux types de fichiers  Cela complexifie le SE mais simplifie les applications  Généralement, un fichier est un ensemble d’enregistrements (records)  Chaque enregistrement est constitué d’un ensemble de champs (fields)  Un champ peut être numérique ou chaîne de chars.  Les enregistrements sont de longueur fixe ou variable (tout dépendant du type du fichier)  Mais pour Unix, MS-DOS et autres, un fichier est simplement une suite d’octets « byte stream »  Donc ici, 1 enregistrement = 1 octet  C’est l’application qui interprète le contenu et spécifie une structure
  • 584.
  • 585.
    Méthodes d’accès: 4de base Chap 11 13  Séquentiel (rubans ou disques): lecture ou écriture des enregistrements dans un ordre fixe  Indexé séquentiel (disques): accès séquentiel ou accès direct (aléatoire) par l’utilisation d’index  Indexée: multiplicité d’index selon les besoins, accès direct par l’index  Direct ou hachée: accès direct à travers tableau d’hachage  Pas tous les SE supportent les méthodes d’accès  Quand le SE ne les supporte pas, c’est aux librairies d’usager de les supporter
  • 586.
    Méthodes d’accès auxfichiers Chap 11 14  La structure logique d’un fichier détermine sa méthode d’accès  Les SE sur les « mainframe » fournissent généralement plusieurs méthodes d’accès  Car ils supportent plusieurs types de fichiers  Plusieurs SE modernes (Unix, Linux, MS-DOS…) fournissent une seule méthode d’accès (séquentielle) car les fichiers sont tous du même type (ex: séquence d’octets)  Mais leur méthode d’allocation de fichiers (voir + loin) permet habituellement aux applications d’accéder aux fichiers de différentes manières  Ex: les systèmes de gestions de bases de données (DBMS) requièrent des méthodes d’accès plus efficaces que juste séquentielle  Un DBMS sur un « mainframe » peut utiliser une structure fournie par le SE pour accès efficace aux enregistrements.  Un DBMS sur un SE qui ne fournit qu’un accès séquentiel doit donc « ajouter » une structure aux fichiers de bases de données pour accès directs plus rapides.
  • 587.
    Chap 11 15 Fichiersà accès séquentiel (archétype: rubans) bloc bloc . . . . . . La seule façon de retourner en arrière est de retourner au début (rébobiner, rewind) En avant seulement, 1 seul enreg. à la fois . . . enregistrements
  • 588.
    Lecture physique etlecture logique dans un fichier séquentiel Chap 11 16  Un fichier séquentiel consiste en blocs d’octets enregistrés sur un support tel que ruban, disque…  La dimension de ces blocs est dictée par les caractéristiques du support  Ces blocs sont lus (lecture physique) dans un tampon en mémoire  Un bloc contient un certain nombre d’enregistrements (records) qui sont des unités d’information logiques pour l’application (un étudiant, un client, un produit…)  Souvent de longueur et contenu uniformes  Triés par une clé, normalement un code (code d’étudiant, numéro produit…)  Une lecture dans un programme lit le prochain enregistrement  Cette lecture peut être réalisée par  La simple mise à jour d’un pointeur si la lecture logique précédente ne s’était pas rendue à la fin du tampon  la lecture du proch. bloc (dans un tampon d’E/S en mémoire) si la lecture logique précédente s’était rendue à la fin du tampon  Dans ce cas le pointeur est remis à 0
  • 589.
    Autres propriétés desfichiers séquentiels Chap 11 17  Pour l’écriture, la même idée: une instruction d’écriture dans un programme cause l’ajout d’un enregistrement à un tampon, quand le tampon est plein il y a une écriture de bloc  Un fichier séquentiel qui a été ouvert en lecture ne peut pas être écrit et vice-versa (impossible de mélanger lectures et écritures)  Les fichiers séquentiels ne peuvent être lus ou écrits qu’un enregistrement à la fois et seulement dans la direction ‘en avant’
  • 590.
    Mise à jourde fichiers séquentiels Vieux maître Fichie r mise à jour Nouvea u maître Programme de mise à jour Tous les fichiers sont triés par la même clé Chap 11 18
  • 591.
    Mise à jourde fichiers séquentiels triés: exempl e 02 05 12 17 21 26 02 12 17 20 21 26 27 Retirer 5 Modif 12 Ajout 20 Ajout 27 Vieux maître Mises à jour Nouveau maître + = (12 a été modifié) L’algorithme fonctionne lisant un enregistrement à la fois, en séquence, du vieux maître et du fichier des mises à jour À un moment donné il n’y a que trois enregistrements en mémoire, un par fichier Programme de mise à jour Vieux maître Fichier mise à jour Nouvea u maître Programme de mise à jour Chap 11 19
  • 592.
    Accès direct ouhaché ou aléatoire: Chap 11 20 accès direct à travers tableau d’hachage  Une fonction d’hachage est une fonction qui traduit une clé dans adresse,  P.ex. Matricule étudiant  adresse disque  Rapide mais:  Si les adresses générées sont trop éparpillées, gaspillage d’espace  Si les adresses ne sont pas assez éparpillées, risque que deux clés soient renvoyées à la même adresse  Dans ce cas, il faut de quelques façon renvoyer une des clés à une autre adresse
  • 593.
    Problème avec lesfonctions d’hachage Fonction d’hachage dispersée qui n’utilise pas bien l’espace disponible Chap 11 21 Fonction d’hachage concentrée qui utilise mieux l’espace mais introduit des doubles affectations clés adr. disque clés adr. disque
  • 594.
    Hachage:Traitement des doublesaffectations  On doit détecter les doubles affectations, et s’il y en a, un des deux enregistrements doit être mis ailleurs ce qui complique l’algorithme adr. disque clés adr. alternative disque Chap 11 22
  • 595.
    Adressage Indexé séquentiel(index sequential) Chap 11 23  Un index permet d’arriver directement à l’enregistrement désiré, ou en sa proximité  Chaque enregistrement contient un champ clé  Un fichier index contient des repères (pointeurs) à certain points importants dans le fichier principal (p.ex. début de la lettre S, début des Lalande, début des matricules qui commencent par 8)  Le fichier index pourra être organisé en niveaux (p.ex. dans l’index de S on trouve l’index de tous ceux qui commencent par S)  Le fichier index permet d’arriver au point de repère dans le fichier principal, puis la recherche est séquentielle
  • 596.
    Exemples d’index etfichiers relatifs Pointe au début des Smiths (il y en aura plusieurs) Le fichier index est à accès direct, le fichier relatif est à accès séquentiel Accès direct: voir ci- Chap 11 24
  • 597.
    Index et fichierprincipal (Stallings) (Relative file) Chap 11 25 Dans cette figure, l’index est étendu à plusieurs niveaux, donc il y a un fichier index qui renvoie à un autre fichier index, n niveaux
  • 598.
    Pourquoi plusieurs niveauxd’index Chap 11 26  Un premier niveau d’index pourrait conduire au début de la lettre S  Un deuxième niveau au début des Smith, etc.  Donc dans le cas de fichiers volumineux plusieurs niveaux pourraient être justifiés.
  • 599.
    Séquentiel et indexséquentiel: comparaison Chap 11 27  P.ex. Un fichier contient 1 million d’enregistrements  En moyenne, 500.000 accès sont nécessaires pour trouver un enregistrement si l’accès est séquentiel!  Mais dans un séquentiel indexé, s’il y a un seul niveau d’indices avec 1000 entrées (et chaque entrée pointe donc à 1000 autres),  En moyenne, ça prend 1 accès pour trouver le repère approprié dans le fichier index  Puis 500 accès pour trouver séquentiellement le bon enregistrement dans le fichier relatif
  • 600.
    Mais… besoin defichier débordement Chap 11 28  Les nouveaux enregistrements seront ajoutés à un fichier débordement  Les enregistrements du fichier principal qui le précèdent dans l’ordre de tri seront mis à jour pour contenir un pointeur au nouveau enregistrement  Donc accès additionnels au fichiers débordement  Périodiquement, le fichier principal sera fusionné avec le fichier débordement
  • 601.
  • 602.
    Fichier indexé Chap 1130  Utilise des index multiples pour différentes clés, selon les différents besoins de consultation  Quelques uns pourraient être exhaustifs, quelques uns partiels, et organisés de façons différentes
  • 603.
  • 604.
    Utilisation des 4 méthodes Chap11 32  Séquentiel (rubans ou disques): applications périodiques qui demandent la lecture ou écriture des enregistrements dans un ordre fixe, ces applications sont appelées ‘batch’=‘par lots’  Salaires, comptabilité périodique, sauvegarde périodique (backups)  Indexé séquentiel (disques): accès séquentiel ou accès direct par l’utilisation d’index  Pour fichiers qui doivent être consultés parfois de façon séquentielle, parfois de façon directe (p.ex. par nom d’étudiant)  Indexée: multiplicité d’index selon les besoins, accès direct par l’index  Pour fichiers qui doivent être consultés de façon directe selon des critères différents (p.ex. pouvoir accéder aux infos concernant les étudiants par la côte du cours auquel ils sont inscrits)  Direct ou hachée: accès direct à travers tableau d’hachage  Pour fichiers qui doivent être consultés de façon directe par une clé uniforme (p.ex. accès aux information des étudiants par matricule) importa nt
  • 605.
  • 606.
    Structures de répertoires(directories) F 1 Chap 11 34 F 2 F 3 F 4  Une collection de structures de données contenant infos sur les fichiers. Répertoires F n  Tant les répertoires, que les fichiers, sont sur disques  À l’exception d’un rép. racine en mém. centrale Fichiers
  • 607.
    Organisation typique desystème de fichiers Deux répertoires dans un seul disque Un répertoire dans deux disques Chap 11 35
  • 608.
    Information dans unrépertoire Chap 11 36  Nom du fichier  Type  Adresse sur disque, sur ruban...  Longueur courante  Longueur maximale  Date de dernier accès  Date de dernière mise à jour  Propriétaire  Protection  etc
  • 609.
    Opérations sur répertoires Chap11 37  Recherche de fichier  Création de fichier  Suppression de fichier  Lister un répertoire  Renommer un fichier  Traverser un système de fichier
  • 610.
    Organisation de répertoires Chap11 38  Efficacité: arriver rapidement à un enregistrement  Structure de noms: convenable pour usager deux usagers peuvent avoir le même noms pour fichiers différents Le même fichier peut avoir différents noms  Groupement de fichiers par type: tous les programmes Java tous les programmes objet
  • 611.
    Structure à unniveau  Un seul rép. pour tous les usagers  Ambiguïté de noms  Pas de groupement  Primitif, pas pratique Chap 11 39
  • 612.
    Répertoires à deuxniveaux  Rép. séparé pour chaque usager  `path name`, nom de chemin  même nom de fichier pour usagers différents est permis  recherche efficace  Pas de groupements Chap 11 40
  • 613.
    Répertoires à arbres(normal aujourd’hui) Chap 11 41
  • 614.
    Caractéristiques des répertoiresà arbres Chap 11 42  Recherche efficace  Possibilité de grouper  Repertoire courant (working directory) cd /spell/mail/prog
  • 615.
    Graphes sans cycles:permettent de partager fichiers Unix: un symbolic link donne un chemin à un fichier ou sous- répertoire Chap 11 43
  • 616.
    Références multiples dansgraphes acycliques  Un nœud peut avoir deux noms différents  Si dict supprime list donc pointeur vers fichier inexistant (dangling pointer). Solutions:  Pointeurs en arrière, effacent tous les pointeurs  Compteurs de références (s’il y a encore des refs au fichier, il ne sera pas effacé)  Ni Unix ni Microsoft n’implémentent ces politiques, donc messages d’erreur  Solutions impossibles à gérer dans un système fortement reparti (ex: www) Chap 11 44
  • 617.
    Graphes avec cycles(structure générale) Chap 11 45 •Presque inévitables quand il est permis de pointer à un noeud arbitraire de la structure •Pourraient être détectés avec des contrôles appropriés au moment de la création d ’un nouveau pointeur •Contrôles qui ne sont pas faits dans les SE courants
  • 618.
    Considérations dans lecas de cycles  En traversant le graphe, il est nécessaire de savoir si on retombe sur un noeud déjà visité  Un noeud peut avoir compteur de ref != 0 en se trouvant dans une boucle de noeuds qui n ’est pas accessible!  Des algorithmes existent pour permettre de traiter ces cas, cependant ils sont compliqués et ont des temps d ’exécution non négligeables, ce qui fait qu’ ils ne sont pas toujours employés  Ramasse-miettes = garbage collection roo t Un sous-arbre qui n’est pas accessible à partir de la racine mais il ne peut pas être effacé en utilisant le critère ref=0 car il fait ref à lui-meme! Chap 11 46
  • 619.
    Partage de fichiers Chap11 47  Désirable sur les réseaux  Nécessite de protection
  • 620.
    Protection (détails dansun chap suivant) Chap 11 48  Types d ’accès permis lecture écriture exécution append (annexation) effacement listage: lister les noms et les attributs d ’un fichier  Par qui
  • 621.
    Listes et groupesd’accès - UNIX Chap 11 49  Modes d ’accès: R W E  Trois classes d ’usager: propriétaire groupe public  demander à l ’administrateur de créer un nouveau groupe avec un certain usager et un certain propriétaire  droit du propriétaire de régler les droits d ’accès et d ’ajouter des nouveaux usagers
  • 622.
    Listes et groupes d’accès Mode d’accès: read, write, execute  Trois catégories d’usagers: RWX a) owner access 7  1 1 1 b) group access 6  RWX 1 1 0 c) others access 1  RWX 0 0 1  Demander au gestionnaire de créer un groupe, disons G, et ajouter des usagers au groupe  Pour un fichier particulier, disons jeux, définir un accès approprié owner group public chmod 761 jeux Changer le groupe d’un fichier chgrp G Chap 11 50 jeux
  • 623.
  • 624.
    Structures de systèmesde fichiers Chap 11 52  Structure de fichiers: deux façons de voir un fichier:  unité d’allocation espace  collection d ’informations reliées  Le système de fichiers réside dans la mémoire secondaire: disques, rubans...  File control block: structure de données contenant de l ’info sur un fichier
  • 625.
    Systèmes de fichiersà couches Chap 11 53
  • 626.
    Structure physique desfichiers Chap 11 54  La mémoire secondaire est subdivisée en blocs et chaque opération d’E /S s’effectue en unités de blocs  Les blocs ruban sont de longueur variable, mais les blocs disque sont de longueur fixe  Sur disque, un bloc est constitué d’un multiple de secteurs contigus (ex: 1, 2, ou 4)  la taille d’un secteur est habituellement 512 bytes  Il faut donc insérer les enregistrements dans les blocs et les extraire par la suite  Simple lorsque chaque octet est un enregistrement par lui- même  Plus complexe lorsque les enregistrements possèdent une structure (ex: « main-frame IBM » )  Les fichiers sont alloués en unité de blocs. Le dernier bloc est donc rarement rempli de données  Fragmentation interne
  • 627.
    Trois méthodes d’allocationde fichiers Chap 11 55 Allocation contiguë Allocation enchaînée Allocation indexée
  • 628.
    Allocation contiguë surdisque répertoire Chap 11 56
  • 629.
    Allocation contiguë  Chaque fichieroccupe un ensemble de blocs contigu sur disque  Simple: nous n’avons besoin que d’adresses de début et longueur  Supporte tant l’accès séquentiel, que l’accès direct  Moins pratique pour les autres méthodes Chap 11 57
  • 630.
    Allocation contiguë  Application des problèmeset méthodes vus dans le chapitre de l’alloc de mémoire contiguë  Les fichiers ne peuvent pas grandir  Impossible d’ajouter au milieu  Exécution périodique d’une compression (compaction) pour récupérer l’espace libre Chap 11 58
  • 631.
    Allocation enchaînée  Le répertoirecontient l ’adresse du premier et dernier bloc, possibl. le nombre de blocs  Chaque bloc contient un pointeur à l’adresse du prochain bloc: pointeur bloc = Chap 11 59
  • 632.
  • 633.
    Tableau d’allocation defichiers Chap 11 61
  • 634.
    Avantages - désavantages Chap11 62  Pas de fragmentation externe - allocation de mémoire simple, pas besoin de compression  L’accès à l ’intérieur d ’un fichier ne peut être que séquentiel Pas façon de trouver directement le 4ème enregistrement... N’utilise pas la localité car les enregistrements seront éparpillés  L’intégrité des pointeurs est essentielle  Les pointeurs gaspillent un peu d ’espace
  • 635.
    Allocation indexée: semblableà la pagination  Tous les pointeurs sont regroupés dans un tableau (index block) index table Chap 11 63
  • 636.
  • 637.
    Allocation indexée Chap 1165  À la création d ’un fichier, tous les pointeurs dans le tableau sont nil (-1)  Chaque fois qu’un nouveau bloc doit être alloué, on trouve de l ’espace disponible et on ajoute un pointeur avec son adresse
  • 638.
    Allocation indexée Chap 1166  Pas de fragmentation externe, mais les index prennent de l’espace  Permet accès direct (aléatoire)  Taille de fichiers limitée par la taille de l’index block Mais nous pouvons avoir plusieurs niveaux d’index: Unix  Index block peut utiliser beaucoup de mémoire
  • 639.
    Chap 11 1024 x 1024 bloc s de UNIXBSD: indexé à niveaux (config. possible) 12 blocs disque de 4K chaque 1024 blocs de 4K chaque Bloc de 4K contient 1024 Ce répertoire est en mémoire, tous les autres sont sur disque
  • 640.
    UNIX BSD (v.manuel Section 20.7)  Les premiers blocs d’un fichier sont accessibles directement  Si le fichier contient des blocs additionnels, les premiers sont accessibles à travers un niveau d’indices  Les suivants sont accessibles à travers 2 niveaux d’indices, etc.  Donc le plus loin du début un enregistrement se trouve, le plus indirect est son accès  Permet accès rapide à petits fichiers, et au début de tous les fich.  Permet l’accès à des grands fichier avec un petit répertoire en mémoire Chap 11 68
  • 641.
  • 642.
    Gestion d’espace libre Solution 1:vecteur de bits (solution Macintosh, Windows 2000)  Vecteur de bits (n blocs) 0 1 2 n-1 … bit[i] = Chap 11 70  1  block[i] libre 2  block[i] occupé  Exemple d’un vecteur de bits où les blocs 3, 4, 5, 9, 10, 15, 16 sont occupés:  00011100011000011…  L’adresse du premier bloc libre peut être trouvée par un simple calcul
  • 643.
    Gestion d’espace libre Solution 2:Liste liée de mémoire libre (MS-DOS, Windows 9x) Tous les blocs de mémoire libre sont liés ensemble par des pointeurs Chap 11 71
  • 644.
    Comparaison Chap 11 72  Bitmap: si la bitmap de toute la mémoire secondaire est gardée en mémoire principale, la méthode est rapide mais demande de l’espace de mémoire principale  si les bitmaps sont gardées en mémoire secondaire, temps de lecture de mémoire secondaire...  Elles pourraient être paginées, p.ex.  Liste liée  Pour trouver plusieurs blocs de mémoire libre, plus. accès de disque pourraient être demandés  Pour augmenter l’efficacité, nous pouvons garder en mémoire centrale l ’adresse du 1er bloc libre
  • 645.
  • 646.
    Implantation de répertoires(directories) Chap 11 74  Liste linéaire de noms de fichiers avec pointeurs aux blocs de données accès séquentiel simple à programmer temps nécessaire pour parcourir la liste  Tableaux de hachage: tableaux calculés temps de recherche rapide mais problèmes de collisions
  • 647.
    Efficacité et performance Chap11 75  L ’efficacité dépend de: méthode d’allocation et d’organisation répertoires  Pour augmenter la performance: Rendre efficace l’accès aux blocs souvent visités  Dédier des tampons de mémoire qui contiennent l’image des infos plus souvent utilisées Optimiser l’accès séquentiel s’il est souvent utilisé: free behind and read ahead
  • 648.
    Disque RAM fonctionne commemémoire cache pour le disque Image (partielle?) du contenu du disque en mémoire RAM Le pilote de disque RAM accepte toutes les ops qui sont acceptées par le disque Chap 11 76
  • 649.
    Le problème dela récupération, ou cohérence Chap 11 77  Parties des fichiers et des répertoires se trouvent tant en mémoire principale, que sur disque  Il faut donc des mécanisme qui assurent leur cohérence, surtout après pannes dans le système
  • 650.
    Récupération: différentes méthodes Chap11 78  Contrôles de cohérence entre la structure de répertoires en mémoire centrale et le contenu des disques Essaye de réparer les incohérences  Sauvegarder les données sur disque dans autres supports auxiliaires (backups) (p.ex. autres disques, rubans)  Restaurer les disques à partir de ces supports quand nécessaire
  • 651.
    Concepts importants duChapitre 11 Chap 11 79  Fichiers: structures, attributs, opérations  Méthodes d’accès: séquentiel, séquentiel indexée, indexée, direct ou hachée  Répertoires et leur structures: repertoires arborescents, sans ou avec cycles  Partage de fichiers, protection, liste d’accès  Allocation d’espace: contiguë, enchaînée, indexée  Application en UNIX  Gestion d’espace libre: bitmap, liste liée
  • 652.
    Par rapport aumanuel… Chap 11 80  Nous n’avons pas discuté: Section 11.1.6 Section 11.5.2 Section 11.6.4
  • 653.
    Chapitre 12 Chap 121 Systèmes d’entrée/sortie http://w3.uqo.ca/lui gi/
  • 654.
    Concepts importants duchapitre Chap 12 2 • Matériel E/S • Communication entre UCT et contrôleurs périphériques • Interruptions et scrutation • DMA • Pilotes et contrôleurs de périphs • E/S bloquantes ou non, synchrones ou asynch • Sous-système du noyau pour E/S – Tamponnage, cache, spoule
  • 655.
    Chap 12 3 Structuretypique de bus PC PCI: Peripheral Component Interconnect
  • 656.
    Communication entre UCTet contrôleurs périphériques • Différentes techniques: – UCT et contrôleurs communiquent directement par des registres – UCT et contrôleurs communiquent par des petites zones de mémoire centrale d’adresse fixe pour chaque contrôleur (ports) – Aussi, le SE utilise le RAM pour des tampons pour les données d’E/S – Et combinaisons de ces techniques RA M UCT Contr. Péripher. tampon Chap 12 4
  • 657.
    Adresses des portsd’E/S des périphériques PC Chap 12 5
  • 658.
    Quand communiquer entre programmeet périphérique? Chap 12 6 • Deux méthodes principales: – Scrutation (polling): l’initiative est au programme – Interruption: l’initiative est à la périphérique • Grande variété d’implémentations
  • 659.
    Scrutation (polling) Chap 127 • Bit dans le contrôleur E/S: – 0 si si occupé à travailler – 1 si libre - prêt à accepter commande • Bit dans l’UCT: commande prête (command ready) – 1 s’il y a une commande prête à exécuter par le contrôleur • L’UCT continue de regarder le bit occupé du contrôleur jusqu’à ce qu’il soit libre (c’est la scrutation) • Elle positionne alors le bit commande prête • Le contrôleur voit ceci et devient occupé • Inefficacité de cette méthode si (comme normal) l’UCT se trouve très souvent dans une boucle de scrutation – Attente occupée
  • 660.
    Interruption • L’UCT faitson travail, jusqu’à ce qu’elle reçoit un signal sur la ligne de requête d’interruption (interrupt request line) – Cette ligne est interrogée après l’exécution de chaque instruction • À moins que l’interruption ne soit masquée • Souvent deux lignes d’interruptions: masquable, non masquable – Transfert à une adresse de mémoire où il y a renvoi à la routine de traitement (dans le vecteur d’interruption) – Les interruptions ont différentes priorités • Si une interruption d’haute priorité se présente lors que le système est en train de traiter une int. de prio. faible, la première est traitée avant Chap 12 8
  • 661.
    Cycle d’E/S parinterruption Chap 12 9
  • 662.
    Table des vecteursd’interruptions Intel Pentium (partie non-masquable jusqu’à 31) Chap 12 10
  • 663.
    Appels système • Quandun usager demande un service du noyau, le SE exécute une instruction qui cause une interruption logicielle ou déroutement (trap) • Le système passe en mode superviseur et trouve dans l’instruction les paramètres qui déterminent quoi faire • Plus basse priorité que p.ex. E/S Chap 12 11
  • 664.
    Accès direct enmémoire (DMA) • Dans les systèmes sans DMA, l’UCT est impliquée dans le transfert de chaque octet • DMA est utile pour exclure l’implication de l’UCT surtout pour des E/S volumineuses • Demande un contrôleur spécial • Ce contrôleur a accès direct à la mémoire centrale Chap 12 12
  • 665.
    Chap 12 13 DMA:six étapes Exemple: entrée disqmém
  • 666.
    Vol de cycles •Le D M A ralentit encore le traitement d’UCT car quand le D M A utilise le bus mémoire, l’UCT ne peut pas s’en servir • Mais beaucoup moins que sans DMA, quand l’UCT doit s’occuper de gérer le transfert Mémoire <-> Périphérique Mém UCT DM A c Contr. Contr UCT Mém Chap 12 14
  • 667.
    Interface E/S d’application Chap12 15 • Le système d’E/S encapsule le comportement despériphériques dans classes génériques • La couche pilote de périfs masque les différences existantes entre périphs spécifiques • Ceci simplifie l’inter changement de différentes périphériques • Mais le constructeur d’une périph doit créer autant depilotes qu’il y a de SE qui peuvent utiliser la périph
  • 668.
    Structure E/S d’unnoyau (driver=pilote) pilote s 12 Chap 16
  • 669.
  • 670.
    Périphériques par blocsou caractères Chap 12 18 • Périphériques par blocs: disques, rubans… – Commandes: read, write, seek – Accès brut (raw) ou à travers système fichiers – Accès représenté en mémoire (memory-mapped) • Semblable au concept de mémoire virtuelle ou cache: – une certaine partie du contenu de la périphérique est stocké en mémoire principale, donc quand un programme fait une lecture de disque, ceci pourrait être une lecture de mémoire principale • Périphériques par caractère (clavier , écran) – Get, put traitent des caractères – Librairies au dessus peuvent permettre édition de lignes, etc.
  • 671.
    Périphériques réseau Chap 1219 • Unix et Windows utilisent le concept de socket – Permet à l’application de faire abstraction du protocole – Fonctionnalité select: appel à select indique en retour quelles sont les sockets prêts à recevoir un paquet ou quelles peuvent accepter un paquet à transmettre • Grand nombre de solutions différentes: pipes, FIFOs, streams, queues, mailboxes
  • 672.
    Horloge et minuterie Chap12 20 • Fournit le temps courant, le temps écoulé, déclenche des minuteries • Peuvent être utilisées pour interruptions périodiques, interruptions après des périodes données – Grand nombre d’applications
  • 673.
    E/S bloquantes,synchrones et non-bloquantes Chap12 21 • Bloquante: le processus qui demande une E/S est suspendu jusqu’à la fin de l’E/S – Facile à comprendre – Mais le proc pourrait vouloir continuer pour faire d’autres choses urgentes • Asynchrone: l’E/S est demandée, et le processus continue son exécution, il sera plus tard averti de la terminaison – Utilisée dans le passé, peu utilisée à présent car le temps de terminaison est imprévisible – Programmation difficile: quoi faire en attente de l’interruption? • Non-bloquante: dans ce cas, le proc peut créer des différentes tâches qui lui permettent de continuer avec autres activités
  • 674.
    Chap 12 22 E/Ssynchrones, asynch et non-bloquantes Synchrone:proc suspendu pendant E/S Asynch:proc continue, sera interrompu quand E/S complétée Non-bloquante:proc A crée proc B pour faire une E/S synchrone, continue pour faire autre chose puis les deux se réunisse A B Interr. join
  • 675.
    Sous-système E/S dunoyau Chap 12 23 • Fonctionnalités: – Ordonnancement E/S – Mise en tampon – Mise en cache – Mise en attente et réservation de périphérique – Gestion des erreurs
  • 676.
    Sous-système E/S dunoyau Ordonnancement E/S Chap 12 24 • Optimiser l’ordre dans lequel les E/S sont exécutées – Chapitre sur ordonnancement disque
  • 677.
    Sous-système E/S dunoyau Chap 12 25 Mise en tampon • Double tamponnage: – P .ex. en sortie: un processus écrit le prochain enregistrement sur un tampon en mémoire tant que l’enregistrement précédent est en train d’être écrit – Permet superposition traitement/E/S
  • 678.
    Sous-système E/S dunoyau Mise en cache Chap 12 26 • Quelques éléments couramment utilisés d’une mémoire secondaire sont gardés en mémoire centrale • Donc quand un processus exécute une E/S, celle-ci pourrait ne pas être une E/S réelle: – Elle pourrait être un transfert en mémoire, une simple mise à jour d’un pointeur , etc. • V.disque RAM Chap. 11
  • 679.
    Sous-système E/S dunoyau Chap 12 27 Mise en attente et réservation de périphérique: spoule • Spoule ou Spooling est un mécanisme par lequel des travaux àfaire sont stockés dans un fichier , pour être ordonnancés plus tard • Pour optimiser l’utilisation des périphériques lentes, le SE pourrait diriger à un stockage temporaire les données destinés àla périphérique (ou provenant d’elle) – P .ex. chaque fois qu’un programmeur fait une impression, les données pourraient au lieu être envoyées à un disque, pour être imprimées dans leur ordre de priorité – Aussi les données en provenance d’un lecteur optique pourraient être stockées pour traitement plus tard
  • 680.
    Sous-système E/S dunoyau Gestion des erreurs Chap 12 28 • Exemples d’erreurs à être traités par le SE: – Erreurs de lecture/écriture, protection, périph non- disponible • Les erreurs retournent un code ‘raison’ • Traitement différent dans les différents cas…
  • 681.
    Structures de donnéesdu noyau • Le noyau garde toutes les informations concernant les fichiers ouverts, composants E/S, connections • U n grand nombre de structures de données complexes pour garder l’information sur les tampons, l’allocation de mémoire, etc. Chap 12 29
  • 682.
    Gestion de requêtesE/S Chap 12 30 • P . ex. lecture d’un fichier de disque – Déterminer où se trouve le fichier – Traduire le nom du fichier en nom de périphérique et location dans périphérique – Lire physiquement le fichier dans le tampon – Rendre les données disponibles au processus – Retourner au processus
  • 683.
    Cycle de vied’une requête E/S Si données déjà en RAM (cache) Chap 12 31
  • 684.
    Performance Chap 12 32 •Ignorer cette section
  • 685.
    Concepts importants duchapitre Chap 12 33 • Matériel E/S • Communication entre UCT et contrôleurs périfériques • Interruptions et scrutation • DMA • Pilotes et contrôleurs de périfs • E/S bloquantes ou non, asynchrones • Sous-système du noyau pour E/S – Tamponnage, cache, spoule
  • 686.
    Concept de Cache Chap12 34 • Le mot cache est utilisé souvent dans situations apparemmentdifférentes, p.ex: – Entre l’UCT et la mémoire RAM nous pouvons avoir une mémoire cache – Le Translation Lookaside Buffer (TLB) utilisé pour contenir les adresses de mémoire virtuelle les plus récemment utilisés est souvent appelé cache – La technique de charger en RAM certains données disque qui sont beaucoup utilisées est aussi appelée ‘caching’ • En général, caching veut dire transférer dans une mémoire plus rapide des informations normalement contenues dans unemémoire plus lente, quand le SE croit qu’elles seront demandéesbientôt
  • 687.
    Chap. 13 1 Chapitre13 (Seul. 13.1, 13.2, 13.4) Structure de mémoire de masse (disques) http://w3.uqo.ca/lui gi/
  • 688.
    Concepts importants duchapitre 13 Chap. 13 2  Fonctionnement et structure des unités disque  Calcul du temps d’exécution d’une séquence d’opérations  Différents algorithmes d’ordonnancement Fonctionnement, rendement  Gestion de l’espace de permutation Unix
  • 689.
    Disques magnétiques Chap. 133  Plats rigides couverts de matériaux d ’enregistrement magnétique surface du disque divisée en pistes (tracks) qui sont divisées en secteurs le contrôleur disque détermine l`interaction logique entre l ’unité et l ’ordinateur Beaucoup d’infos utiles dans: http://www.storagereview.com/guide2000/ref/ hdd /index.html
  • 690.
    Nomenclature - cylindre: l’ensemblede pistes qui se trouvent dans la même position du bras de lecture/écriture Chap. 13 4
  • 691.
    Un disque àplusieurs surfaces Chap. 13 5 http://computer.howstuffworks.com
  • 692.
    Disques éléctroniques Chap. 136  Aujourd’hui nous trouvons de plus en plus des types de mémoires qui sont adressées comme si elle étaient des disques, mais sont complètement électroniques P. ex. flash memory Il n’y aura pas les temps de positionnement, latence, etc. discutés plus tard
  • 693.
    Ordonnancement disques Chap. 137  Problème: utilisation optimale du matériel  Réduction du temps total de lecture disque étant donné une file de requêtes de lecture disque, dans quel ordre les exécuter?
  • 694.
    Paramètres à prendreen considération  Temps de positionnement (seek time):  le temps pris par l`unité disque pour se positionner sur le cylindre désiré  Temps de latence de rotation  le temps pris par l ’unité de disque qui est sur le bon cylindre pour se positionner sur le secteur désirée  Temps de lecture  temps nécessaire pour lire la piste  Le temps de positionnement est normalement le plus important, donc il est celui que nous chercherons à minimiser Chap. 13 8
  • 695.
    File d’attente disque Chap.13 9  Dans un système multiprogrammé avec mémoire virtuelle, il y aura normalement une file d’attente pour l ’unité disque  Dans quel ordre choisir les requêtes d ’opérations disques de façon à minimiser les temps de recherche totaux  Nous étudierons différents méthodes par rapport à une file d ’attente arbitraire: 98, 183, 37, 122, 14, 124, 65, 67  Chaque chiffre est un numéro séquentiel de cylindre  Il faut aussi prendre en considération le cylindre de départ: 53  Dans quel ordre exécuter les requêtes de lecture de façon à minimiser les temps totaux de positionnement cylindre  Hypothèse simpliste: un déplacement d`1 cylindre coûte 1 unité de temps
  • 696.
    Chap. 13 10 Premierentré, premier sorti: FIFO axe de rotation 45 85 146 85 108 110 59 2 Mouvement total: 640 cylindres = (98-53) + (183-98)+... En moyenne: 640/8 = 80
  • 697.
    SSTF: Shortest SeekTime First Chap. 13 11 Plus court d’abord  À chaque moment, choisir la requête avec le temps de recherche le plus court à partir du cylindre courant  Clairement meilleur que le précédent  Mais pas nécessairement optimal! (v. manuel)  Peut causer famine
  • 698.
    SSTF: Plus courtservi Mouvement total: 236 cylindres (680 pour le précédent) En moyenne: 236/8 = 29.5 (80 pour le précédent) Chap. 13 12
  • 699.
    Problèmes commun àtous les algorithmes qui sélectionnent toujours le plus voisin: Chap. 13 13  Balaient efficacement un voisinage, puis quand ils ont fini là dedans doivent faire des déplacement plus importants pour traiter ce qui reste  Famine pour les autres s’il y a apport continu d’éléments dans le voisinage
  • 700.
    SCAN: l’algorithme del’ascenseur Chap. 13 14  La tête balaye le disque dans une direction, puis dans la direction opposée, etc., en desservant les requêtes quand il passe sur le cylindre désiré Pas de famine
  • 701.
    SCAN: l ’ascenseur Mouvement total:208 cylindres En moyenne: 208/8 = 26 (29.5 pour SSTF) directio n Chap. 13 15
  • 702.
    Problèmes du SCAN Chap.13 16  Peu de travail à faire après le renversement de direction  Les requêtes seront plus denses à l’autre extrémité  Arrive inutilement jusqu’à 0
  • 703.
    C-SCAN Chap. 13 17  Retourrapide au début (cylindre 0) du disque au lieu de renverser la direction  Hypothèse: le mécanisme de retour est beaucoup plus rapide que le temps de visiter les cylindres  Comme si les disques étaient en forme de beignes! C-LOOK  La même idée, mais au lieu de retourner au cylindre 0, retourner au premier cylindre qui a une requête
  • 704.
    153 sans considérerle retour (19.1 en moyenne) (26 pour SCAN) MAIS 322 avec retour (40.25 en moyenne) Chap. 1N3 ormalement le retour sera rapide donc le coût réel sera entre 18 C- LOOK retour: 169 (??) direction 
  • 705.
    C-LOOK avec directioninitiale opposée directio n Résultats très semblables: 157 sans considérer le retour , 326 avec le retour Chap. 13 19 Retour 169
  • 706.
    Exemple pratique… Chap. 1320  Si on doit ramasser des gens de Gatineau Est à Aylmer, il pourrait être plus rapide de faire le tour à Gatineau, puis prendre l’autoroute jusqu’à Aylmer et ramasser le reste, au lieu d’arriver à Aylmer par rues régulières tout en ramassant des gens…
  • 707.
    Comparaison Chap. 13 21  Sila file souvent ne contient que très peu d’éléments, l’algorithme du ‘premier servi ’ devrait être préféré (simplicité)  Sinon, SSTF ou SCAN ou C-SCAN?  En pratique, il faut prendre en considération:  Les temps réels de déplacement et retour au début  L`organisation des fichiers et des répertoires  Les répertoires sont sur disque aussi…  La longueur moyenne de la file  Le débit d ’arrivée des requêtes
  • 708.
    Gestion de l’espacede permutation en mémoire virtuelle (swap space) (13.4) Chap. 13 22  Nous avons vu comment les systèmes de mém virtuelle utilisent la mém secondaire  Grande variété d’implémentations de systèmes d’espace de permutation dans différents SE  L’esp permutation (swap) peut être des fichiers normaux dans l’espace disque utilisé par les autres fichiers, ou peut avoir sa propre partition disque  Peut être mis dans des disques plus efficaces
  • 709.
    Gestion d’espace depermutation (disque) en Unix 4.3BSD Chap. 13 23  Pour chaque processus, il y a Un segment texte = le programme  Ne change pas pendant exécution Et il y a aussi un segment données  Sa taille peut changer pendant exéc
  • 710.
    Unix 4.3BSD: Tableaud’allocation du segment de texte=programme  L’espace disque est alloué en morceaux fixes de 512K Dernier morceau de programme plus court Chap. 13 24
  • 711.
    Unix 4.3BSD: Tableaud’allocation du segment données sur disque  Les données changent de taille plus souvent que le programme  Chaque fois qu’un proc demande plus de mémoire, on lui donne le double Chap. 13 25
  • 712.
    Autres mécanismes enUnix Chap. 13 26  Les mécanismes sont différents dans différentes versions de Unix  Les différentes versions fonctionnent avec autres mécanismes, comme pagination, systèmes compagnons (buddy) etc.
  • 713.
    RAID: Redundant Arrayof Independent Disks Stallings En distribuant les données sur différents disques, il est probable qu’une grosse lecture puisse être faite en parallèle (au lieu de lire strip0 et strip1 en séquence, cette organisation permet de les lire en même temps) Chap. 13 27
  • 714.
    Redondance dans RAID Chap.13 28 Stallings Dupliquer les données pour incrémenter le parallélisme et remédier aux pertes de données (coûteux mais utilisé en pratique)
  • 715.
    RAID: Correction d’erreurspar codes de correction Chap. 13 29 Stallings Les codes de correction d’erreur pour des données enregistrées sur un disque sont sauvegardés sur un autre disque (plus de résistance aux erreurs)
  • 716.
    Concepts importants duchapitre 13 Chap. 13 30  Fonctionnement et structure des unités disque  Calcul du temps d’exécution d’une séquence d’opérations  Différents algorithmes d’ordonnancement Fonctionnement, rendement  Gestion de l’espace de permutation Unix  RAID: réorganisation des fichiers pour performance et résistance aux erreurs
  • 717.
    Par rapport aulivre Chap. 13 31  Seulement 13.1, 13.2, 13.4