Fondements des Systèmes d`Exploitation

publicité
Fondements des Systèmes d'Exploitation
Pr Pierre Collet
Equipe Fouille de Données et Bioinformatique Théorique
Laboratoire des Sciences de l’Image, de l’Informatique et de la Télédétection
[email protected]
Véolia : 20/07/09
1
Origines de l’informatique
– 1854. Algèbre de Boole, fondée sur ET/OU/NON.
– 1931 : Gödel. Théorème de l’incomplétude.
» Il y a des problèmes impossibles à résoudre en mathématiques et
en logique…
– 1938 : Alan Turing. Se pose des questions sur la
calculabilité des nombres
» peut-on obtenir tous les nombres avec un algorithme ?
» Invente la « Machine de Turing » pour représenter des
algorithmes.
Pierre COLLET - Systèmes d'Exploitation
2
Origines
◆
1944 : Premiers prototypes. Programmation très
« hard. »
ENIAC (Electronic Numerical Integrator and Calculator).
18 000 tubes, 30 tonnes. Multiplication de 2 nombres de 10 chiffres
en 3 millisecondes. Mémoire interne très petite, programmation
« aux clés » (fiches interchangeables).
En fait, c’est une grosse calculette, et pas vraiment un ordinateur.
◆
1945 : von Neuman décrit les 5 composants de son
architecture :
–
–
–
–
–
L’Unité Arithmétique et Logique
L’Unité de Commande
La mémoire centrale
L’Unité d’entrée
L’Unité de sortie.
Pierre COLLET - Systèmes d'Exploitation
3
Historique des ordinateurs
◆
1945 : von Neumann propose l’EDVAC (Electronic
Discrete Variable Automatic Computer) selon son
architecture :
Le programme et les données sont en mémoire !
La machine ne se commande plus par des fiches, mais par le contenu
de sa mémoire !
Sauts, branchements conditionnels : l’ordinateur est né.
◆
Mais en fait, c’est Wilkes qui réalise en 1949 le premier
ordinateur: l’EDSAC : Electronic Delay Storage
Automatic Calculator
Pierre COLLET - Systèmes d'Exploitation
4
Historique
◆
51 – 58 : Premières machines commerciales, avec
IBM en 53 (IBM 650 vendu à 1500 exemplaires !!!).
Monoprogrammation, traitement par lots (batch).
Cartes perforées, bandes magnétiques, imprimante.
Pb : fiabilité des tubes à vide (lampes) : bugs ?
◆
58 – 64 : Apparition des transistors => vitesse et
fiabilité + apparition des mini-ordinateurs
– Mode superviseur, E/S asynchrones et premiers systèmes temps
partagé.
Pierre COLLET - Systèmes d'Exploitation
5
Historique
◆ 64 – 78 : Premiers circuits intégrés (puces)
(3è génération d’ordinateurs)
Systèmes multi-programmés.
◆ 80 – 90 : VLSI et réseaux
plusieurs millions de transistors/mm² (4e génération
d’ordinateurs).
Disques magnétiques/optiques, imprimantes laser, écrans
couleur graphiques, interfaces multi-fenêtres, réseaux par
câble, fibre optique, ligne téléphonique, satellite, …
L'info. d'aujourd'hui est (pratiquement) la même qu'en 80 !
Pierre COLLET - Systèmes d'Exploitation
6
Puissance des super-ordinateurs
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
Ordinateur
1938 Zuse V1
1941 Zuse Z3
1946 UPenn ENIAC
1954 IBM NORC
1956 MIT TX-0
1958 IBM AN/FSQ-7
1960 UNIVAC LARC
1961 IBM 7030
1964 CDC 6600
1969 CDC 7600
1974 CDC STAR-100
Vitesse Propriétaire
1 OPS Konrad Zuse, Berlin, Germany
20 OPS Konrad Zuse, Berlin, Germany
100kops Department of War, Mariland, USA
67 kops Department of Defense, Virginia, USA
83 kops MIT, Lexington, Massachusetts, USA
400 kops25 U.S. Air Force sites across the USA
250 kFLOPS AEC, Livermore Labs, USA
1.2 MFLOPS AEC, New Mexico, USA
3 MFLOPS AEC Livermore Labs, USA
36 MFLOPS
100 MFLOPS
Pierre COLLET - Systèmes d'Exploitation
7
1975 - 1996
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
1975 ILLIAC IV
150 MFLOPS
NASA Ames, USA
1976 Cray-1
250 MFLOPS
ERDA, USA
1981 CDC Cyber 205 400 MFLOPS
1983 Cray X-MP/4
941 MFLOPS
U.S. Department of Energy
1984 M-13
2.4 GFLOPS
Moscou, URSS
1985 Cray-2/8
3.9 GFLOPS
Livermore Labs, USA
1989 ETA10-G/8
10.3 GFLOPS Florida State University
1990 NEC SX-3/44R 23.2 GFLOPS NEC Fuchu Plant, Japon
1993 CM-5/1024
59.7 GFLOPS Thinking Machines Corp
Fujitsu Wind Tunnel 124.50 GFLOPS Aerospace Lab, Tokyo
Intel Paragon XP/S 143.40 GFLOPS Sandia, New Mexico, USA
1994 Fujitsu Wind Tunnel 170.40 GFLOPS Aerospace Lab, Tokyo
1996 Hitachi SR2201
220.4 GFLOPS University of Tokyo, Japan
Pierre COLLET - Systèmes d'Exploitation
8
1997 – Aujourd'hui
◆
1997 Intel ASCI Red/9152 1.338 TFLOPS Sandia, New Mexico, USA
◆
1999 Intel ASCI Red/9632 2.379 TFLOPS Sandia, New Mexico, USA
◆
2000 IBM ASCI White
◆
2002 NEC Earth Simulator 35.86 TFLOPS Yokohama, Japan
◆
2004 IBM Blue Gene/L
70.72 TFLOPS IBM Rochester, USA
◆
2005 IBM Blue Gene/L
136.8 TFLOPS Livermore labs, USA
◆
2005 IBM Blue Gene/L
280.6 TFLOPS Livermore labs, USA
◆
2007 IBM Blue Gene/L
478.2 TFLOPS Livermore labs, USA
◆
2008 IBM Roadrunner
◆
2008 IBM Roadrunner
7.226 TFLOPS Livermore Labs, USA
1.026 PFLOPS Los Alamos, USA
1.105 PFLOPS Los Alamos, USA
Pierre COLLET - Systèmes d'Exploitation
9
Et les PC ???
◆
Noter la progression des cartes graphiques !
Pierre COLLET - Systèmes d'Exploitation
10
Futur ?
◆
Stagnation de la vitesse des processeurs !
2.9 GHz
Pierre COLLET - Systèmes d'Exploitation
11
Problème : dissipation thermique
◆
Actuellement, on peut faire tourner un Intel à 6Ghz, mais
avec quelques contraintes :
Bain d'hélium liquide à -232°C !
Pierre COLLET - Systèmes d'Exploitation
12
Autre solution ?
◆
La loi de Moore s'applique toujours ! et devrait encore
s'appliquer jusqu'en 2030... (2x plus de transistors par mm2
tous les 2 ans)
Pierre COLLET - Systèmes d'Exploitation
13
Solution : processeurs multi-coeurs ?
◆
Mais la plupart des algos ne fonctionnent qu'en séquentiel, et
ne peuvent donc utiliser qu'un seul coeur, et en divisant par le
nombre de coeurs...
?
Pierre COLLET - Systèmes d'Exploitation
14
Conclusion ?
Stagnation de l'accélération pour la plupart des
algorithmes,
◆ Accélération pour les algorithmes parallèles...
◆
Conclusion générale
◆ Le matériel est extraordinairement varié.
◆ Les systèmes d'exploitation ont un rôle essentiel à
jouer, pour rendre les spécificités du matériel
invisibles à l'utilisateur (par exemple, répartir
automatiquement la charge entre les coeurs de la
manière la plus transparente possible).
Pierre COLLET - Systèmes d'Exploitation
15
Ordinateur, système, logiciels
◆
Matériel compliqué => il faut un programme pour gérer le
matériel : c'est le Système d’Exploitation.
Logiciel
Système
Matériel
Ne jamais
modifier
Modification
constante
Interface
Pierre COLLET - Systèmes d'Exploitation
16
Buts d’un Système d’Exploitation
◆
Réduire la complexité du matériel
– Lancer des instructions complexes par des commandes simples
– Offrir une notion de machine virtuelle
◆
Rentabiliser l’utilisation
– Minimiser les temps morts (multitâche, parallélisation E/S, …)
– Minimiser le temps passé sur la machine.
◆
Préserver investissements
– Équipement, matériel et logiciel
– Informations, programmes et données.
◆
Faciliter la vie de tout le monde :
– Informaticiens
– Utilisateurs (convivialité)
Pierre COLLET - Systèmes d'Exploitation
17
Tâches du S.E. (1)
◆
Outils pour l’administration
–
–
–
–
–
–
–
–
Protéger le système des utilisateurs, et les utilisateurs entre eux.
Partage des périphériques (file d’attente)
Surveillance et maintenance du système
Diagnostic (test de la machine, gestion des erreurs)
Gestion des utilisateurs (mots de passe, quotas, priorité)
Gestion des ressources système
Sauvegardes
Contrôle des performances (embouteillages, saturation de
l’espace disque, du swap)
Pierre COLLET - Systèmes d'Exploitation
18
Tâches du S.E. (2)
◆
Gestion de la communication
– Entre processus :
» Synchronisation, partage mémoire, appel à distance
– Entre ordinateurs :
» Réseau local, réseau global
Pierre COLLET - Systèmes d'Exploitation
19
Tâches du S.E. (3)
◆
Fournir un environnement à l'utilisateur
– Interface pour dialoguer avec le système
– Outils (compilateur, éditeur de liens, …)
– Utilitaires (éditeur de texte, débogueurs, interpréteurs
de commandes)
– Système de gestion de fichiers pour structurer,
protéger, partager,…
– Traitement des erreurs
– Services spéciaux (heure, date, …)
Pierre COLLET - Systèmes d'Exploitation
20
Exemple de la complexité d'un SE
◆
Gestion du processeur :
– Autrefois : système mono-tâche.
– Puis, système « batch ».
– Puis, multi-programmation (1960):
»
»
»
»
Choisir les programmes à exécuter
Echanger les programmes dans le processeur
Répartir la mémoire
Partager le code entre plusieurs programmes
Pierre COLLET - Systèmes d'Exploitation
21
Intérêt de la «multiprogrammation»
◆
◆
Intérêt premier : gestion des E/S en parallèle :
– Soit un Pentium à 100GFlops, accès mémoire 60ns, accès
disque 10ms. 10000000000
– Vous : 1 calcul / 10s.
– 1 accès mémoire = ?
16,6 h !!!!
– 1 accès disque = ?
178,4 ans !!!!
Multi-programmation non préemptive:
– On passe au programme suivant lors d’un « appel
système » (typiquement entrée/sortie).
◆
Multi-tâches préemptif :
– Notion de temps partagé (quantum).
– Reprendre périodiquement le contrôle.
– Nécessite un processeur préemptif avec mode superviseur
Pierre COLLET - Systèmes d'Exploitation
22
Implications de la Multiprogrammation
Gestion complexe de la mémoire :
– Notion d’espace d’adressage.
– Allocation, protection.
– Mémoire linéaire.
– Mémoire segmentée.
– Mémoire paginée.
– Prise en compte de la spécificité du matériel (Little
Endian, Big Endian).
Tout ça, rien que pour faire du multitâches, et notamment
optimiser la gestion des entrées/sorties !
Pierre COLLET - Systèmes d'Exploitation
23
Composition d'un S.E.
◆
◆
Noyau (Kernel) : c'est la couche la plus basse du système
d'exploitation. Il nécessite environ 2000 lignes de langage
machine, sur lesquels tout le reste va s'appuyer.
Généralement, dans les systèmes multi-tâches, il contient le
« scheduler » (ordonnanceur).
Scheduler (Ordonnanceur) : c'est le programme qui va se
charger de gérer le « temps partagé » et d'échanger les
programmes au fur et à mesure des appels aux entrées/sorties,
ou des préemptions.
Pierre COLLET - Systèmes d'Exploitation
24
Composition d'un S.E. (2)
◆
◆
Drivers (pilotes) : Les drivers servent à gérer le matériel
informatique présent sur l'ordinateur (gestion des
lectures/écritures sur le disque, sur une clé USB, gestion de
l'impression sur une imprimante, gestion de l'écran, du
clavier, de la carte son ,...). Les drivers peuvent être intégrés
au noyau ou indépendants du noyau (suivant le système).
Système de Gestion de Fichiers : c'est lui qui permet de
stocker les informations de manière permanente, mais pas
seulement. Sous Unix, tout est considéré comme un fichier (le
clavier est un fichier, l'écran est un fichier, ...).
Pierre COLLET - Systèmes d'Exploitation
25
Composition d'un S.E. (3)
◆
◆
Interface utilisateur : pour demander au système de copier un
fichier, de supprimer un fichier, de lancer une tâche, ... il faut
communiquer avec le système. C'est fait grâce à un
« interpréteur de commandes » (utilisant une interface texte)
ou une interface graphique (style Windows).
Outils et utilitaires : nécessaires à la programmation de
l'ordinateur, comme un langage de programmation, un éditeur
de textes, ...
Pierre COLLET - Systèmes d'Exploitation
26
Différents systèmes d'exploitation
◆
◆
◆
+ de 100 différents !
Les premiers systèmes d'exploitation des années 1960 étaient
très lourds (VAX/VMS, Multics, ...), mais ils étaient déjà
multi-tâches et multi-utilisateurs.
Au milieu des années 70 Thompson, Kernighan et Ritchie ont
créé Unix (en opposition à Multics), un système
d'exploitation volontairement « simple », basé sur les fichiers.
Ne trouvant pas de langage adapté à l'écriture du système,
Thomson et Ritchie créèrent le langage « B », mais qui était
un peu trop simpliste. Kernighan et Ritchie ont créé en 1971
le langage C, qui était l'«assembleur portable » qu'ils
recherchaient.
Pierre COLLET - Systèmes d'Exploitation
27
Unix
◆
◆
◆
◆
◆
En 1969 système écrit en assembleur par Ken Thomson sous
le nom de NKS (New Ken's System), sur mini-ordinateur
PDP7 dans les laboratoires Bell (AT&T).
En 1971, pour améliorer la portabilité, création du langage B
avec Dennis Ritchie, mais qui n'est pas suffisamment complet
pour récrire le système, et conception du langage C qui
permet de tout faire (c'est un « assembleur portable »).
1971-79 raffinement de l'Unix AT&T jusqu'au système 7.
Entre 2, en 1977, Bill Joy crée la Berkeley Software
Distribution (Unix BSD) et (entre autres) vi, mais aussi, TCP/
IP (qui permet internet), Sun Microsystems, Java, ...
En 1983, le premier Unix System V qui, avec BSD, est
l'ancêtre de Linux
Pierre COLLET - Systèmes d'Exploitation
28
Unix / Linux
◆
◆
1985, Andy Tanenbaum crée Minix (qui tourne sur 80286).
1991, Linus Torvalds crée Linux, basé sur le noyau Minix, et
qui utilise les utilitaires du projet Gnu (Gnu is Not Unix, qui
se prononce comme « new » en américain) créés dans le
cadre de l'Open Software Foundation de Richard Stallman
(qui a écrit Emacs en 76).
Pierre COLLET - Systèmes d'Exploitation
29
DOS ...
◆
◆
◆
◆
En 1981, IBM crée le Personal Computer, et cherche un système
d'exploitation simple pour le faire tourner. Contrairement aux gros
ordinateurs, ses performances sont très limitées, donc les systèmes
des gros ordinateurs sont inutilisables.
Un petit jeune, nommé Bill Gates (qui a le sens du commerce et les
dents longues) ose proposer à IBM un « Quick and Dirty Operating
System » sous le nom de DOS (Disk Operating System).
Bien qu'en 1981, les bases des systèmes d'exploitation existent
depuis très longtemps (Unix existe déjà depuis 10 ans !), Gates
« réinvente » tout (et mal), et surtout, fait exprès de ne pas
reprendre les mêmes notations qu'Unix (\ au lieu de /, ...) ce qui
créera d'énormes problèmes de compatibilité toujours visibles
aujourd'hui (CR/LF, ...), mais qui fidélisera ses utilisateurs...
Limitation des noms de fichier à 8 caractères . ext, limitation de la
taille mémoire gérée par le système à 10 pages de 64K, ... !!!
Pierre COLLET - Systèmes d'Exploitation
30
Windows...
◆
En 1985, l'interface graphique Windows 1.0 est créée au
dessus de DOS. Elle est totalement inutilisable et plante
constamment (et n'utilise pas les mêmes codes ascii étendus que
DOS !!! C'est une constante de Micro$oft : trouver comment faire des
versions non compatibles pour forcer les ventes, ex : docx de Word2007)
◆
◆
◆
◆
La première version à peu près stable (= qui ne plante que
toutes les 2h) sera Windows 2.10, qui sort en 1987.
Windows 3.10 (première vraiment utilisable) sort en 1990,
mais est toujours mono-utilisateur, et non préemptif.
Il faudra attendre Windows 95 (25 ans après Unix) pour avoir
un système à peu près multi-tâches (mais toujours monoutilisateur). Présentation de Win98 : http://www.youtube.com/watch?v=RgriTO8UHvs
En parallèle est né Windows NT (New Technology) en 1993,
qui se débarrasse enfin de MS-DOS, et qui a donné la branche
actuelle de Windows XP, Vista, et prochainement 7
Pierre COLLET - Systèmes d'Exploitation
31
MacOS
◆
◆
◆
◆
Mac OS était le système d'exploitation des Macintosh,
premiers ordinateurs à avoir été conçus autour d'une interface
graphique issue des travaux de Xerox Parc (souris, écran
graphique, ...) en 1984 !
MacOS était bien plus stable que Windows (pourtant né
après) ce qui en a fait le système de choix des graphistes et
des professionnels.
Les Entrées/Sorties n'étaient toujours pas gérées en parallèle
(lire une disquette paralysait l'ordinateur), et la dernière
version (MacOS 9) est sortie en 1999.
Ensuite est apparu MacOS X, dérivé du système Next de
Steve Jobs, basé sur Unix. MacOS X est donc un Unix avec
une interface graphique propre à Apple.
Pierre COLLET - Systèmes d'Exploitation
32
Fonctionnement d'un système monotâche
Le système (qui occupe un morceau de la mémoire) contient
un interpréteur de commandes qui est exécuté au démarrage
de l'ordinateur.
• L'interpréteur attend des commandes au clavier en affichant
un « prompt » ($ sous unix, > sous dos, ...)
• Lorsque la touche « retour » est pressée, la ligne est analysée.
Le premier mot ( espace) peut être :



Une commande « interne » du système ($ echo toto)
Un mot qui n'est pas une commande interne...
Le système cherche alors sur le disque si le mot est un nom
de fichier exécutable. Si c'est le cas, le fichier est chargé
en mémoire, puis lancé sur le processeur.
Sinon : « commande introuvable »
• Après exécution, retour en 1)
Pierre COLLET - Systèmes d'Exploitation
33
Représentation graphique d'un syst monotâche
Mémoire
Occupation du processeur
Système
Interpréteur
Fin d'exécution
0000
Lancement
Programme
Programme
Pierre COLLET - Systèmes d'Exploitation
34
Système multi-tâches non préemptif
◆
◆
◆
◆
◆
Les choses sont plus compliquées car plusieurs tâches
peuvent fonctionner « en parallèle ».
Chaque tâche s'appelle un processus.
Chaque processus fonctionne dans son « espace d'adressage »
(32 bits maintenant 64 bits / 128 bits).
Le processeur est partagé entre toutes les tâches, pour
optimiser les entrées/sorties (qui doivent être asynchrones).
Problème possible : si un processus effectue une boucle
infinie (sans appel à une entrée/sortie) il est impossible de
« reprendre la main », et l'ordinateur complet est bloqué.
Pierre COLLET - Systèmes d'Exploitation
35
Fonctionnement d'un système multi-tâches
Non préemptif ( = sans mode superviseur) :
Destruction
Créer
Néant
Prête
Détruire
Destruction
Susp.
Commutation
Suspension
Erreur
Termin
Elue
Fin d’Exéc.
Pierre COLLET - Systèmes d'Exploitation
36
Système multi-tâches préemptif
◆
◆
Ajout d'une horloge dans le processeur capable d'envoyer des
« signaux » (aussi appelés interruptions).
Plusieurs processus s'exécutent en « temps partagé ».
◆
Passage en mode système (superviseur) nécessaire à chaque
changement de contexte, pour la gestion des processus par le système
d’exploitation.
◆
S'il ne fait pas d'entrée/sortie, un processus ne peut utiliser le
processeur que pendant un laps de temps déterminé (quantum).
◆
Changement de contexte à chaque appel système/interruption = à
chaque fois qu’un processus utilisateur doit modifier
l’environnement.
Mode utilisateur limité = garantie de l’intégrité du système.
◆
Pierre COLLET - Systèmes d'Exploitation
37
Fonctionnement d'un système multi-tâches
◆ Préemptif (lors de la préemption ou d'une
entrée/sortie : passage en « mode superviseur ») :
Allocation
Créer
Néant
Détruire
Destruction
Elue Interruption
Interr.
PréemptionUSER
Prête
Retour USER
Reprise
Susp.
Termin
Arrêt
Appel
Système
Retour
Suspension Elue
SYST
Interruption Interr.
SYST
Retour
Pierre COLLET - Systèmes d'Exploitation
38
Gestion mémoire linéaire multiprogrammée
◆ 2 registres nécessaires : registre de base B et registre de
limite L (taille du ps).
◆ Mode utilisateur : accès à l'adresse A autorisé si A <=L
(sinon, dépassement mémoire) et accès physique à
l'adresse B+A.
◆ Mode système : l'ensemble de la mémoire est accessible,
ainsi que les registres B et L.
◆ Gestion linéaire non pré-emptive : lorsqu'une tâche est
soumise, on lui donne la première zone libre qui peut la
contenir (first fit).
◆ Si pas de zone suffisamment grande, tâche mise en attente.
Pierre COLLET - Systèmes d'Exploitation
39
Exemple
◆ Ordonnancement FIFO, et compactage de la mémoire dès
qu'il y a suffisamment de mémoire pour une tâche, mais
pas de trou suffisamment grand.
◆ Ordinateur de 512 Kmots (2 Mo si machine 32 bits) dont
128K sont utilisés par le système.
◆ Une tâche effectue plusieurs appels aux entrées/sorties, et
chaque appel à une E/S dure 5 unités de temps.
◆ On propose l'exécution suivante: quelle sera l'utilisation
de la mémoire ?
◆ Ps : Soumis, Elu, Prêt, E/S. Code : en memoire, en attente
Pierre COLLET - Systèmes d'Exploitation
40
Questions :
◆ Pourquoi cette méthode fonctionne-t-elle en mode batch
avec multiprogrammation, mais pas en temps partagé ?
◆ Cette méthode fonctionne-t-elle avec un ordonnancement
attribuant la mémoire au premier processus qui peut tenir
dans la mémoire libre ?
◆ Ré-essayer avec cette nouvelle règle du jeu.
Pierre COLLET - Systèmes d'Exploitation
41
Mémoire linéaire à recouvrement
◆ Multiprogrammation avec va et vient.
◆ Mémoire divisée en blocs de taille fixe (1 Kmots).
◆ Lorsqu'une tâche est soumise, trouver le meilleur
emplacement dans la mémoire.
◆ Lorsqu'une tâche est élue, il faut charger tous ses blocs en
mémoire centrale, quitte à virer des blocs appartenant à
une tâche en attente.
◆ Trouver un algorithme de recouvrement minimum.
Pierre COLLET - Systèmes d'Exploitation
42
Exemple
◆ Tâches T1 T2 T3 T4 de taille respective 250, 80, 180, 100
Kmots.
◆ Mémoire utilisateur formée de blocs de 1 Kmots
numérotés de 0 à 383.
◆ Tâches soumises au même instant, dans l'ordre de leur
numéro.
◆ Trouver les adresses des tâches en mémoire.
◆ Dessiner l'état de la mémoire en régime permanent durant
l'exécution de chacune des tâches.
Pierre COLLET - Systèmes d'Exploitation
43
Algo de recouvrement minimum
adresseOptimale(n){
som=0;
pour (i=0;i<nbBlocsTâche(n);i++)
som+=nbProcessBloc(i);
min=som; pos=0; i=0;
pour (j=nbBlocsTâche(n);j<max_blocs;j++){
som+=nbProcessBloc(j)-nbProcessBloc(i);
i++;
si (som<min) alors{
min=som;
pos=i;
}
pour (i=pos;i<pos+nbBlocsTâche(n);i++)
nbProcessBloc(i)++;
}
Pierre COLLET - Systèmes d'Exploitation
44
Mémoire virtuelle segmentée
◆ Faire croire à l'utilisateur qu'il y a plus de mémoire que ce
qu'il y a en réalité : on accepte de lancer plus de tâches
qu'on n'a de mémoire physique => zone de swap
nécessaire.
◆ Les tâches étant trop lourdes à swapper entièrement, on les
divise en segments (zones « logiques » pour la tâche :
segment de code, de données, de pile,...).
◆ Chaque segment est contigu en mémoire centrale, qui est
allouée par « granules » de G kilo-mots (mémoire
segmentée).
◆ Il faut une structure système adaptée, notamment une table
d'allocation des granules et pour économiser du temps, la
notion de page propre / sale.
Pierre COLLET - Systèmes d'Exploitation
45
Structure système nécessaire
Table des segments système Mémoire centrale
Registres topographiques du
processus n
Swap
0
1
2
.
.
.
7
Segment système
Longueur en mots
l e x (droits)
c (segm. chargé)
m (segm modifié)
L'indirection permet de faire uncompactage transparent
Vérifs effectuées lors d'un accès mémoire :
Segment chargé (sinon « page fault » et chargement)
adressage dans le segment < L(s) (segmentation fault)
accès cohérent avec les droits. Relations vérifiées :
x!e, me&p, !e!m, !p!m, pxel
Pierre COLLET - Systèmes d'Exploitation
46
Coût optimal
◆ Location achat skis
Pierre COLLET - Systèmes d'Exploitation
47
Stratégies de gesion de mémoire
Qu'est-ce qui est le mieux ?
◆ First fit (première place disponible en MC) ?
◆ Best fit (plus petit trou capable de contenir le segment) ?
◆ Worst fit (plus gros trou capable de contenir le segment) ?

First fit : éparpillement des granules libres, nécessite un
compactage, mais très rapide.

Best fit : recherche longue (plus petit trou capable de
contenir le segment), et surtout : émiettement de la
mémoire !!!
Worst fit : recherche rapide (trous maintenus dans une
liste décroissante). Favorise les petits segments, mais
ralentit l'émiettement.

Pierre COLLET - Systèmes d'Exploitation
48
Mémoire paginée
◆ Division de la mémoire en zones de taille fixe : des pages.
◆ Les données, le code, ... est divisé en pages.
◆ Lorsque le processus est exécuté, seules les pages
nécessaires sont chargées en mémoire centrale.
◆ Chaque processus système conserve une table des pages
contenant des infos (correspondance entre page logique et
page physique, droits, ...)
Pierre COLLET - Systèmes d'Exploitation
49
Structure système nécessaire
Table des pages du ps
Mémoire centrale
Avantages / inconvénients ?
Avantages :
• pas de trous,
• pas de compactage
• gain de temps
No page en MC
l e x (droits)
e (page évinçable)
m (segm modifié)
Inconvénients :
• Complexité de gestion
• Les pages sont des pages physiques et pas logiques pb si une
page contient des données en lecture seule, et d'autres en écriture.
Pierre COLLET - Systèmes d'Exploitation
50
Exemple
◆ Mémoire de 32Kmots, page de 512 mots, bloc disque de
512 mots
◆ Code C à faire tourner :
For (x=N; x<=0; x­=K)
T[X]=S[X]+V;
◆ Equivalent assembleur :
Pierre COLLET - Systèmes d'Exploitation
51
Exemple
Si chaque instruction ou variable occupe
un mot, quelles pages avec quels droits ?
Donnée
E
E+4
N
K
V
@ page/offset
1/508 E+3 1/511
2/0 E+6 2/2
6/500
8/10
8/100
droits
LX
LX
L
L
L
X : registre d'adresse
A : accumulateur
E : adresse = 512*1+508
S et T : tableaux [N]
S[0]=512*11+168
T[0]=512*12+456
N : cte = 799@512*6+500
V : cte = 2 @512*8+100
K : cte = 2 @512*8+10
Donnée
S[0]
S[344]
T[0]
T[56]
T[568]
@ page/offset
droits
11/168 S[343] 11/511 L
12/0 S[799] 12/455
LE
12/456 T[55] 12/511 E
13/0 T[567] 13/511
E
14/0 T[799] 13/231
E
Pierre COLLET - Systèmes d'Exploitation
52
Exécution du programme
◆
◆
◆
E
On a les pgs 17, 21, 22, 23, 37, 42 en MC.
En utilisant un algo premier chargé
premier déchargé, si aucune page n'est
chargée en mémoire au début de
l'exécution, décrire la gestion avec les
primitives :

mod (p,d) : p = page de ps, d = droits

trap(p) : défaut de page pour la page p

charg(p,c) : page p en page c de MC

dech (p) : déch. page p en page c
On met une marque sur toute page sale.
t1 : trap(1) charg(1,17) mode(1,XL)
t2 : trap(6) charg(2,21) mode(6,L)
E+1 t3 : trap(12) charg(12,22) mode(12,LE)
E+2 t4 : trap(8) charg(8,23) mode(8,L)
...
Table pages
E
t7
17 NC
E
42
N
21
K&V
23
S[0][343]
S[344][799] 22
T[0][55]
T[56][567]
17
T[568][799] 37
Pierre COLLET - Systèmes d'Exploitation
53
Comparaison des gestions mémoire
◆ Pagination / mémoire linéaire ?
◆ Pagination / segmentation
 Simplicité système ? Compilateur ?
 Compactage ?
◆ Intérêt d'une mémoire segmentée paginée ?
Pierre COLLET - Systèmes d'Exploitation
54
Algorithmes de remplacement de pages
◆ FIFO : lors d'un défaut de page, on remplace la plus ancienne
page qui ait été chargée.
◆ Si un ps fait référence à ses pages logiques dans l'ordre suivant :
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1.
◆ Combien de défauts de page si on donne au processus 3 pages
physiques A B C pour s'exécuter ?
3P 1 2 3 4 1
1 A
X B
B
X
2
C
3
A
4
5
D X X X X X
2 5 1 2 3 4 5 1 2 3 4 5 1
X
C
A
X
X
B
X C
B
X
A
C
X X
X X
X
C
X
X
X A
X
B
X X X X X X
Pierre COLLET - Systèmes d'Exploitation
55
Et avec 4 pages ???
4P 1 2 3 4 1 2 5 1 2 3 4 5
1 A
X B
X
B
2
X C
C
3
X D
X A
D
4
A
5
X B
X X X X X X
D X X X X
1 2 3 4 5 1
X D
C
X D
X
X A
X B
X C
X X X X X X
C'est l'anomalie de Belady
An anomaly in space-time characteristics of certain programs running in a paging machine,
Communications of the ACM, Vol 12, Issue 6, pp349-353, June 1969
Pierre COLLET - Systèmes d'Exploitation
56
Existe-t-il un algo optimal ?
◆ Si l'on connaît l'avenir, lors d'un défaut de page, remplacer
la page utilisée le plus tard possible.
4P 1 2 3 4 1 2 5 1 2 3 4 5 1 2 3 4 5 1
1 A
B
X
2
C
3
X
B
X
D
C
4
5
D
X
X
X
D X X X X

Pourquoi cet algo est-il
optimal ?
Pierre COLLET - Systèmes d'Exploitation
57
Algorithme LRU ?
4P 1 2 3 4 1 2 5 1 2 3 4 5 1 2 3 4 5 1
1 A
A
A
X
B
B
2
C
X
D
3
D
X C
4
C
X
5
X
D X X X X
X X X X X X X X X
◆ L'anomalie de Belady peut-elle apparaître avec un
algorithme LRU ?
◆ Comment réaliser LRU ? Attention à l'efficacité
(utilisation à chaque accès mémoire => algo hard !)
 Horloge incrémentée à chaque référence ?
 Timestamp à chaque utilisation d'une page ?
 Recherche de la page la plus ancienne ?
Pierre COLLET - Systèmes d'Exploitation
58
Réalisation de LRU
◆ Si n cases sont allouées au processus, on utilise une
matrice nxn bits.
◆ Si la case k est utilisée, on met des 1 sur la ligne k, puis
des 0 sur la colonne k.
◆ Lors d'un défaut de page, on utilise la case dont la ligne a
la plus petite valeur.
◆
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, 1, 4, 5, 2, 4, 1.
1
10111
0000
0000
0000
D
2
10011
21011
0000
0000
D
3
10001
21001
31101
0000
D
4
10000
21000
31100
41110
D
1
2
5
1
10111 10011 10001 10111
20000 21011 21001 20001
30100 30000 51101 50101
40110 40010 40000 40000
D
Pierre COLLET - Systèmes d'Exploitation
59
1
10111
20001
50101
40000
2
10011
21011
50001
40000
3
10010
21010
50000
31110
D
4
10000
21000
41101
31100
D
Pierre COLLET - Systèmes d'Exploitation
60
Approximation de LRU
◆
◆
◆
◆
◆
On utilise 1 bit de référence R (à 1 à chaque fois qu'on fait référence à
une page) et 1 compteur pour chaque page.
A chaque top d'horloge, pour toutes les pages (y compris non
chargées) on décale le compteur, on met R en poids fort, puis on
remet R à 0.
Lors d'un défaut de page, on remplace la page avec R=0 ayant le plus
petit compteur.
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, 1, 4, 5, 2, 4, 1.
4 cases, compteur sur 4 bits, 1 top tous les 2 accès mémoire
2 Top 3
4 Top 1
2 Top 5
1
4P 1
1 1,0000
0,1000
0,0100 1,0100
0,1010
1,1010
1,0000 0,1000
2
0,0100
1,0100 0,1010
0,1000
0,0100 x,0100
1,0000
3
0,0100
1,0000 0,1000
4
1,0000
5
Pierre COLLET - Systèmes d'Exploitation
61
X
X
X
X
D X
5
1
Top
1,1010 0,1101
2
3
Top
4
5
Top
1
0,0110
x,0110 x,0011 1,0011
x,0100
0,0101 1,0101
0,1010
x,0010
1,0010 0,1001
0,0101
0,0100 x,0100
1,0000
0,0010
0,1000
2
x,0010 x,0001 1,0001
0,1000
0,0100 x,0100 1,0100 0,1010
X
Pierre COLLET - Systèmes d'Exploitation
62
Algorithme NRU
◆ 2 bits R et M pour chaque page. R mis à 1 à chaque accès
à une page, et remis à 0 à chaque top d'horloge. M mis à 1
si la page est modifiée.
◆ En cas de besoin, on vire la page de plus petit numéro
4P 1E 2L Top 3E 4L
1 11
01
10
00
2
11
3
10
4
5
X
X
X
D X
Top
1L
01
11
00
01
2E Top
5L
01
11
00
Pierre COLLET - Systèmes d'Exploitation
1E
11
01
01
00
X
10
X
63
Téléchargement