Histoire des systèmes dʼexploitation

publicité
Quʼest-ce quʼun système dʼexploitation ?
“An operating system is a collection of things that
don’t fit into a language. There shouldn’t be one.”
Histoire des systèmes dʼexploitation
« Un système d’exploitation, c’est une collection
de choses qui ne tiennent pas dans un langage.
Çà ne devrait pas exister. »
Sacha Krakowiak
Université de Grenoble & Aconit
Dan Ingalls, “Design Principles Behind
Smalltalk”, Byte Magazine, August 1981.
© 2014, S. Krakowiak
Quʼest-ce quʼun système dʼexploitation ?
Histoire des systèmes dʼexploitation
2
Qualités dʼun système dʼexploitation
MV
MV
! Discrétion
assurer ses fonctions, et …se faire oublier
MV
! Économie
Interface
système
Interface
langage
Appli 1
Appli 2
Machine
abstraite
(virtuelle)
Système d’exploitation
Langage A
Langage B
Interface
physique
bon usage des ressources
performances
Isolation, sécurité, protection
Communication
Transformation d'interface
Virtualisation des ressources
temps de réponse
débit des travaux
Gestion des ressources physiques
Gestion des activités parallèles
Gestion et conservation de l'information
Fonctions d'intendance
(entrées-sorties, bibliothèques)
surcoût minimal
équité
! Ergonomie
facilité dʼusage
qualité de lʼinterface
prévisibilité
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
3
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
4
Temps
partagé
Ordinateurs
individuels
Traitement
par lots
économie non pertinente
ergonomie +++
économie +
ergonomie ++
…
économie ++
ergonomie --
Accès direct,
sans système
Machines virtuelles
1980
1990
NeXT
1973 CP/M
1973 Alto (Xerox PARC), Alto OS
1981 IBM PC, MS-DOS
1984 MacOS
1950
1949
1960
1970
1980
1956 Premier moniteur d’enchaînement : GM/NAA
1961 Premier système en temps partagé : CTSS
Premiers ordinateurs
à programme enregistré
(EDSAC, Manchester Mk1)
Ordinateurs
individuels
1962 Premier système multiprocesseur : Burroughs MCP B5000/5500
1964 Premier vrai «super-ordinateur» : CDC6600, E/S parallèles
1965 Multics, fondation des systèmes modernes
1969 Première version d’Unix (simplification de Multics)
1973 Alto (Xerox PARC), Alto OS
Ordinateurs
1973 CP/M
1981 IBM PC, MS-DOS
individuels
1982 Sun OS (Unix)
Minis/Stations
1977 DEC Vax VMS
1964 OS/360, moniteur batch sur IBM 360
Mainframes
TOPS-10
TENEX DEC PDP 10
1970
1967
Machines virtuelles
VMWare
1972 IBM VM/370
Les dates des
périodes sont
approximatives
…
économie -ergonomie ++
…
…
Mainframes
Minis/
stations
CP/CMS, générateur de
machines virtuelles
IBM MVS
SunOS
renaissance du
parallélisme
multiprocesseurs
interface
mémoire
conviviale
cohérence
virtuelle
ordonnancement
client-serveur
sécurité
protection
système de
fichiers
machine
virtuelle,
hyperviseur
Solaris
1995 Open BSD
Unix BSD
1987 Minix
1969
Linux
HP-Ux
1979
2007 iOS
1991
1983 Unix System V
Accent
2012
Windows-8
2003 Android
IBM AIX
1984 Mach
2006 OKL4
Mach3
L3
1980 Chorus
L4
2002
Contiki
Objets
connectés
ChorusOS
1982 QNX
1982 VxWorks
Mobiles
2008 Riot
1999 TinyOS
! Pas de système dʼexploitation !
cache
1970
1996
Windows-Vista
La préhistoire (1950-56)
processus,
synchronisation
modèle en couches,
abstraction
10.10
MacOS X
1993 Windows-NT
2000 IBM z/OS
1992 OpenVMS
Vax VMS
Concepts et techniques
1960
2010
1995 Windows-95
1987 Windows-2
2001 Windows-XP
1990 Windows-3
1974
Unix
Noyaux
temps réel
1972 IBM VM/370
2000
1985 Windows
1977
Micronoyaux
Xen
1980
micro-noyau
système de
fichiers réparti
tolérance
aux fautes
réalisations
du cloud
1990
2000
applications : recherche, calcul scientifique, puis gestion
! Fonctionnement sur réservation
mémoire
transactionnelle
le programmeur a le contrôle complet de la machine
programmation en binaire ou assembleur
mise au point interactive (clés)
quelques outils simples
2010
noyau certifié
systèmes pour
réseaux
(preuve de validité)
1956
assembleur et chargeur rudimentaires
renaissance
des machines
virtuelles
bibliothèque de sous-programmes
outils de mise au point
Premier moniteur batch
Premier compilateur Fortran
(arrêt sur adresse, affichage)
! Bon confort, mais...
peu économique, vu le coût élevé du matériel
faible productivité, vu la pauvreté des outils
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
7
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
8
Systèmes de traitement par lots
Moniteur de traitement par lots (batch)
Cette animation montre très schématiquement
le fonctionnement dʼun système dʼexploitation
à traitement par lots (batch) tel quʼil existait au
début des années 1950.
! Motivation
rentabiliser lʼinvestissement en matériel
Programmes
et données
Cliquez pour commencer.
maximiser le taux dʼutilisation des ressources
! Premier système (1956)
Salle dʼaccueil
développé par des utilisateurs (General Motors, North
American Aviation) sur IBM 704
IBM suivra avec IBSYS
Guichet
dʼentrée
Exécution
Ordinateur
Cartes
Listings
! Principe
Deux ou trois
heures plus tard …
regrouper les travaux par «fournées» (batch)
enchaînement automatique des travaux
entrées sur cartes, sortie sur imprimante
fgdgdh hhjd jjdj jjjjjjjj
fgdgdh hhjd jjdj jjjjjjjj
jjdjdjdkd
fgdgdh hhjd jjdj jjjjjjjj
jjdjdjdkd
fgdgdh hhjd jjdj jjjjjjjj
jjdjdjdkd
fgdgdhjjjkkk
hhjd jjdj jjjjjjjj
kdldldllljjdjdjdkd
hhdjdjk
fgdgdhjjjkkk
hhjd jjdj jjjjjjjj
kdldldlll
hhdjdjk
dkk
jjjjjjj jjdjdjdkd
kdldldlll
hhdjdjk jjjkkk
jjdjdjdkd
dkk
jjjjjjj
kdldldlll
dkk
jjjjjjj hhdjdjk jjjkkk
kdldldlll
dkk
jjjjjjj hhdjdjk jjjkkk
kdldldlll
dkk
jjjjjjj hhdjdjk jjjkkk
hg jkiuy ytzrz
dkk
jjjjjjj
hg
jkiuy
ytzrz
gdghdhh
hg jkiuy ytzrz
gdghdhh
hhhh
hg jkiuy ytzrz
gdghdhh
hhhhgdghdhh
hg jkiuy ytzrz
hhhh hg jkiuy ytzrz
gdghdhh
hhhh
gdghdhh
hhhh
hhhh
Guichet de
sortie
plus tard : bandes magnétiques
Tout est prêt pour la
fournée suivante !
Résultats
Cliquez pour recommencer.
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
9
Un nouveau modèle dʼexploitation
Avancées architecturales
Le système dʼexploitation impose des changements dans lʼarchitecture des machines
! Lʼutilisateur éloigné de la machine…
! Lʼhorloge programmable
perte de lʼinteractivité
longs délais dʼattente
faible tolérance aux erreurs
problème : boucle infinie dans un programme dʼutilisateur
bloque tout le train de travaux
remède : lʼhorloge programmable
! De nouveaux métiers
chaque travail indique une durée maximale dʼexécution
atelier de préparation des travaux
suite des ateliers de mécanographie
il est interrompu si cette limite est atteinte
© FEB - Jean Bellec
! La protection de mémoire
«perfo - vérif»
problème : un programme écrit «nʼimporte où» dans la mémoire
gestion et surveillance de lʼexécution
risque dʼécrire dans le programme ou les données du système
opérateur - pupitreur
remède
placer le système dans une zone de mémoire protégée
Courtesy Computer History Museum
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
11
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
12
Préparation
soumission
des travaux
guichet
d'entrée
préparation
du train de
travaux
lecteur de
cartes
Ordinateur
La course à lʼefficacité (2) :
La multiprogrammation
train de
travaux
Processeur
découpage
et tri des
résultats
guichet
de sortie
collecte des
résultats
Exécution
quelques
heures plus
tard…
unité centrale
listing collectif
des résultats
imprimante
Mémoire
centrale
La course à lʼefficacité (1) : ordinateurs couplés
lecteur de
cartes
train de
travaux
! Influence sur lʼarchitecture
mémoire secondaire rapide
(disques
Mémoire
secondaire
(disque)
unité de bandes
magnétiques
transfert
de bandes
canaux dʼentrée-sortie
(E/S simultanées)
sortie des
résultats
imprimante
Ordinateur auxiliaire
! Principe
plusieurs travaux coexistent
en mémoire
chargement des travaux en
parallèle avec lʼexécution
entrée des
programmes
transfert
de bandes
listing collectif
des résultats
! Objectif
réduire le temps de
commutation entre travaux
Ordinateur principal
registres de base
Lʼordinateur principal et l'ordinateur auxiliaire fonctionnent en parallèle et peuvent être en des lieux différents.
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
13
Entrées-sorties simultanées
Trois systèmes du début des années 60
! Le Spool (Simultaneous Peripherals Operation On Line)
! Deux systèmes novateurs (1961-62)
recouvrement entre exécution de programme et entrées-sorties
exploite les canaux dʼentrée-sortie et les disques
canal
processeur
images de
cartes
Burroughs MCP (Master Control Program) pour B5000/5500
premier système pour multiprocesseur
programmé en langage de haut niveau (sous-ensemble dʼAlgol 60)
canal
organisation originale de la mémoire
(segments gérés par logiciel, exécution sur une pile)
images de
pages
le système dʼexploitation est lui-même segmenté
Atlas (Univ. Manchester - Ferranti)
lecteur de cartes
tampon d’entrée
tampon de sortie
(mémoire)
(mémoire)
mémoire «à un niveau» : invention de la mémoire virtuelle paginée
première mise en œuvre du spool
imprimante
invention des appels au superviseur
! Un système à large diffusion : OS/360 (1964)
Disque
© 2014, S. Krakowiak
Disque
Histoire des systèmes dʼexploitation
Système dʼexploitation unique pour la gamme IBM/360
15
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
16
Un système batch typique : OS/360 (1)
Un système batch typique : OS/360 (2)
! Le défi
! Du côté de lʼutilisateur
un système dʼexploitation unique pour la gamme IBM/360
quelques compromis pour les petites configurations
lʼinterface : JCL (Job Control Language)
indications pour le traitement (priorité, temps max, etc.)
définition des programmes et données
! Les réalisations
un langage peu convivial
PCP : un travail (job) à la fois
MFT : multiprogrammé, nombre fixe de tâches (1964)
MVT : multiprogrammé, nombre variable de tâches (1967)
une syntaxe rigide (liée au format des cartes)
une définition de données complexe (pré-bases de données)
! Du côté du génie logiciel
exploitation quasi-optimale du matériel…
un système complexe (le plus gros logiciel de lʼépoque)
sans dessein architectural
… mais peu de considération pour lʼutilisateur
! Les extensions
(Fred Brooks : “a multi-million dollar mistake”)
TSO : Time sharing option (1971)
programmé en assembleur (initialement)
difficile à maintenir
accès interactif, soumission et mise au point des travaux à distance
OS/VS1, VS/2 : mémoire virtuelle (1972)
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
(“1000 bugs per release”)
17
Les débuts du temps partagé
Histoire des systèmes dʼexploitation
18
CTSS (Compatible Time-Sharing System)
! Un système novateur
! Motivations
premier système en temps partagé
retrouver lʼinteraction directe, perdue avec le traitement par lots…
… en maintenant une bonne exploitation des ressources
(compatible avec batch)
ordonnancement multi-niveaux
communication entre utilisateurs
langage de commande
! Une vision prophétique
“… computing may someday be organized as a public utility just as the
telephone system is a public utility”
Fernando Corbató
! La réalisation
John McCarthy (1961)
Jason Dorfman, MIT CSAIL
IBM 7094, modifié à la demande
! Principe de base
2 bancs de mémoire de 32K mots
Exploiter la différence dʼéchelle de temps entre lʼhomme (seconde)
et le processeur (microseconde)
Pendant le temps de réflexion dʼun usager, on peut servir beaucoup
dʼautres usagers
protection de mémoire, système de déroutements («trappes»)
version 0 : 1961 (4 terminaux), production : 1964-74
! Les retombées
démonstration de la viabilité du temps partagé
influence directe : Multics (MIT), CP/CMS (IBM)
! Un prototype de recherche : CTSS (MIT), 1961
© 2014, S. Krakowiak
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
19
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
20
Un système en temps partagé
Mémoire
Processeur
Utilisation du
processeur dans
le temps
3
1
5
2
7
programme 3
programme 5
…
1
! Une période charnière : 1965-70
2
1967 : First ACM Symposium on Operating Systems Principles
3
! Un concept clé : la virtualisation
…
programme 1
processeur#
#
processus
Les débuts dʼune
approche
scientifique
mémoire# #
#
mémoire virtuelle
des systèmes dʼexploitation segment
disque#
#
#
fichier
entrée-sortie#
#
flot
écran#
#
#
fenêtre
machine# #
#
machine virtuelle
…# #
#
#
…
n
quelques dizaines
de millisecondes
7
Disque
2
Grâce au partage du processeur :
Chaque utilisateur a lʼimpression quʼil dispose seul de lʼordinateur
! Des expériences fondatrices
Grâce à lʼutilisation du disque :
Chaque utilisateur a lʼimpression quʼil dispose dʼune mémoire pratiquement
illimitée (mémoire virtuelle)
© 2014, S. Krakowiak
THE, Multics, CP67
21
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
Les deux faces de la virtualisation
22
Programmes concurrents
! Les origines
! Ascendante (abstraction)
interface
exportée
Un outil de partage de ressources
Création de ressources «hautes»
La multiprogrammation permet lʼexécution concurrente de
plusieurs programmes : divers schémas possibles
temps
Multiplexage de ressources «basses»
pas de concurrence
a)
interface
existante
Interface visible, réalisation cachée
Transformation (ou non) dʼinterfaces
Préservation dʼinvariants
interface
souhaitée
(pseudo-parallélisme)
multiprocesseur
c)
! Un mécanisme
! Descendante (raffinement)
Un outil de conception
De la spécification à la réalisation
Hiérarchie de machines abstraites
processeur partagé
b)
(parallélisme réél)
ranger
contexte courant
1
interface
existante
2
interruption
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
23
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
charger
nouveau contexte
24
Dangers des interruptions (1)
Danger des interruptions (2)
«Cʼétait une grande invention, mais aussi une boîte de Pandore.»
! Exécution pseudo-parallèle
Edsger Dijkstra
! Effet dʼune interruption
les changements de programme sont déclenchés par des
interruptions dʼhorloge
(en lʼabsence de précautions)
exemple : deux opérations de dépôt sur un même compte bancaire
activité 1
activité 2
insérer une séquence dʼinstructions «nʼimporte où» dans le
corps dʼun programme
lʼexécution du programme devient indéterministe (non
reproductible)
un scénario dʼexécution : 1.1 ; 1.2 ; 2.1 ; 2.2 ; 2.3 ; 1.3
il devient difficile (voire impossible) de raisonner sur lʼeffet du
programme
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
résultat net ?
le compte est crédité de 1 000 € au lieu de 4 000 € !
25
© 2014, S. Krakowiak
Un problème de synchronisation
Histoire des systèmes dʼexploitation
La notion de processus
! Comment éviter la perte de mise à jour ?
! Un pas vers lʼabstraction…
un remède : imposer une exécution séquentielle des deux
opérations de dépôt (A1 et A2)
soit A1 puis A2, soit A2 puis A1 : tout entrelacement est interdit
autrement dit : une seule des activités (au plus) peut exécuter à
un instant donné lʼopération en cause (dite section critique)
quʼy a-t-il de commun entre les exécutions
suivantes ?
a)
b)
Edsger W. Dijkstra
(1930 - 2002)
c)
A1
A1
A2
permis
A1
permis
on arrive ainsi à la notion de processus (séquentiel), programme en
cours dʼexécution, indépendamment de ses ressources
interdit
Cette condition sʼappelle lʼexclusion mutuelle ; cʼest le premier
problème de synchronisation explicitement formulé (Dijkstra,
1965)
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
crédit : University of Texas at Austin
réponse : deux activités considérées comme séquences dʼactions,
indépendamment des conditions de leur exécution.
A2
A2
26
chaque processus a un processeur virtuel (éventuellement à vitesse
nulle)
avantage : séparer les aspects logiques de lʼallocation de ressources
27
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
28
Synchronisation des processus
Réaliser les processus : le noyau
Deux fonctions
! Objectif
imposer des contraintes logiques entre processus pour régler
la compétition ou la coopération
! Allouer le(s) processeur(s)
Choisir une politique dʼordonnancement
Exemple : le tourniquet (round robin), plus court dʼabord, etc.
! Moyens
bloquer (faire attendre) un processus jusquʼà réalisation dʼune
condition
! Exemple
processus p1
…
verrouiller (v)
section critique
déverrouiller (v)
…
processus p2
…
verrouiller (v)
section critique
déverrouiller (v)
…
Histoire des systèmes dʼexploitation
existence
actif
ordonnancement
élu
synchronisation
bloqué
éligible
29
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
Virtualiser la mémoire (1)
30
Virtualiser la mémoire (2)
! Un système précurseur…
! Deux problèmes à résoudre
LʼAtlas (Manchester, 1961)
Concept de «mémoire à un niveau» (one level store)
Un espace unique, réalisé par mémoire principale et secondaire
Définir la structure dʼune «mémoire virtuelle» (telle que vue par
lʼutilisateur)
Réaliser la correspondance entre mémoire virtuelle et mémoire
physique
mémoire principale
vue logique : un espace unique
192 pages de 512 mots de 48 bits
! Structure de la mémoire virtuelle
…
Mémoire linéaire (peut être plus grande que la mémoire physique)
Mémoire segmentée (ex : Burroughs MCP, Multics)
0
ensemble de segments de taille variable
190 191
3
table dʼimplantation
0
…
schéma idéal, mais peu utilisé à lʼétat «pur»
table associative
32 entrées
31
30
190
vue physique
31
30
3
…
instructions spéciales
verrous
sémaphores
moniteurs
messages
© 2014, S. Krakowiak
Création, destruction, examen des processus
Réalisation des primitives de synchronisation
exclusion mutuelle
…
! Outils
! Fournir une interface
Tambour
Tambour
Tambour
1
0
0
adresse tambour
32 cases de 512 mots
! Mise en œuvre de la mémoire virtuelle
! … mais des problèmes inattendus
Pagination à la demande
Dégradation brutale et inexpliquée des performances (écroulement)
Lʼexplication viendra… en 1968
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
31
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
32
Virtualiser la mémoire (3)
Pagination à la demande
Mémoire
virtuelle
npage
Mémoire
physique
Mémoire associative
(TLB)
P
2 —1
npage
ncase
npage
npage
UGM
dep
échec
adresse physique
ncase
npage
dep
10 0
0
0
© 2014, S. Krakowiak
défaut
de page
(b) Traduction des adresses
Histoire des systèmes dʼexploitation
adresse
disque
...
protect
ncase
présent = 0
Mémoire
(a) Correspondance pages-cases
adresse physique
succès
ncase
1
1
dep
adresse virtuelle
modif
Processeur
ncase
dep
adresse virtuelle
présent
2 M —1
33
Table de pages (en mémoire)
registre de base
de la table de pages
une par mémoire virtuelle
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
Un piège de la mémoire virtuelle
34
Comprendre et éviter lʼécroulement
! Lʼécroulement (thrashing)
taux dʼactivité
CPU
!
Lorsque la charge augmente, le système «sʼécroule»
! et n mesurés sur dernier
intervalle dʼobservation (t-∆t, t)
explosion du taux dʼactivité du disque et du temps de réponse
B. Brawn, F. Gustavson. Program behavior in a
paging environment. Proc. AFIPS FJCC, pp.
1019-1032 (1968)
100%
baisse dʼactivité du processeur
Prévention de lʼécroulement :
expériences IBM M44/44X (1968)
Charge normale
! Explication schématique
Sous-charge
Comportement des programmes
n
tout programme a besoin dʼune taille minimale pour fonctionner
dans de bonnes conditions
1200
1000
sans contrôle dʼadmission
avec contrôle dʼadmission
600
every ∆t do
if (overload)
move one process from ready set to waiting set
else
if (underload and (waiting set ≠ "))
$
admit one waiting process to ready set
T temps moyen de traitement dʼun défaut de page
t temps moyen dʼexécution dʼune instruction
à
Temps
dʼexécution
(secondes)
800
Coût élevé du défaut de page
T / t de lʼordre de
Nombre de
remplacements de
page
a) modèle simple de comportement du système
au-dessous de cette taille, le nombre de défauts de page augmente
très vite
103
Surcharge
104
400
200
1
2
3
4
5
Nombre de
processus actifs
b) effet de la limitation de charge par contrôle dʼadmission
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
35
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
36
Communication interne
Structure dʼun système dʼexploitation (1)
Application
gestion des
travaux
Appel
système
communication
Blocage/
réveil
mode utilisateur
Système
Traitant
gestion des
fichiers
interface machine
physique
read(fich, buf, n)
Application
mode noyau
asynchrone
Application
synchrone
interface
système
dans un système dʼexploitation
Traitant
vérifier paramètres
sauver état, bloquer
exécuter commande
restaurer état
réactiver
Matériel
gestion des
processus
Interruption
Commande E/S,
horloge, MMU, ...
gestion de la
mémoire
lecture disque
interruption
(b) Appel système
(a) Flot de contrôle
Machine physique
interface
indépendante
du matériel
Couche
dʼadaptation du
matériel
interface
processus
© 2014, S. Krakowiak
interface
mémoire
pilotes
37
Histoire des systèmes dʼexploitation
Causes dʼinterruption
Appel système
Déroutement
Horloge
Entrée-sortie
Organe externe
Incident
Opération sur fichier
Entrée-sortie
Opération sur processus
Opération impossible
Débordement
Erreur dʼadressage
© 2014, S. Krakowiak
Machines virtuelles
Histoire des systèmes dʼexploitation
Machines virtuelles : comment çà marche
! Lʼhyperviseur, un super-OS
Appli.
Présente une interface uniforme aux machines virtuelles (MVs)
Appli.
Gère (et protège) les ressources physiques
Mode
utilisateur
OS
Cʼest un composant critique
Appli.
Interface
machine
physique
Appli.
OS
MV1
! Première réalisation
Appli.
…
...
…
Interruption
Instructions
privilégiées
OS
MV2
Machine physique
Hyperviseur
Mode
privilégié
Trap
État
MV1
Entrées-sorties
Interruptions
Mémoire virtuelle
…
État
MV2
Machine physique
Hyperviseur
! Un problème …
CP67 (IBM 360/67)
Utilisation : CP/CMS
Trap
Machine physique
Base pour VM/370
© 2014, S. Krakowiak
Trap
Instructions
privilégiées
OS
Instructions
privilégiées
Encapsule lʼétat interne des MVs
Isolation
Défaillances
Sécurité
38
Histoire des systèmes dʼexploitation
39
Sur les machines actuelles (IA-32, etc.), lʼeffet de certaines
instructions dépend du mode courant (privilégié ou utilisateur)
De telles instructions ne sont pas virtualisables
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
40
Machines virtuelles
Sécurité et protection (1)
! Comment contourner le problème des instructions multi-modes ?
La paravirtualisation : changer lʼinterface de lʼhyperviseur
Remplacer les instructions non virtualisables
Lʼinterface nʼest plus celle de la machine physique
Les OS doivent donc être modifiés !
En pratique, on ne modifie que
la HAL (couche dʼabstraction)
Appli.
Interface
modifiée
La traduction dynamique
de code binaire :
Appli.
Appli.
…
Unix
Windows
MV2
modifié
HAL-W
Hyperviseur
Remplacer à la volée les instructions
non virtualisables
Agents et objets
Droits, domaines, capacités
Dans lʼavenir :
Les nouveaux processeurs sont conçus pour la virtualisation
Histoire des systèmes dʼexploitation
Confidentialité (qui peut accéder aux données, pour faire quoi)
Intégrité (pas de modification non désirée)
Accès aux services
Authentification (prouver que lʼon est celui quʼon prétend être)
! Protection : avancées 1968-70
Machine physique
© 2014, S. Krakowiak
Sécurité : définition de politiques visant à fixer des règles dʼaccès
aux ressources
Protection : ensemble de mécanismes permettant de mettre en
œuvre des politiques de sécurité
! Sécurité dans un système dʼexploitation
…
MV1
modifié
HAL-U
! Un exemple de séparation politique-mécanismes
41
© 2014, S. Krakowiak
Sécurité et protection (2)
Histoire des systèmes dʼexploitation
42
Failles de protection (1)
“You canʼt trust code that you did not totally create yourself (especially code from
companies that employ people like me)”
! Un problème (toujours) non résolu…
! Notion de domaine
«Vous ne pouvez pas vous fier à du code que vous nʼavez pas entièrement créé vousmême (et particulièrement sʼil vient dʼentreprises qui emploient des gens comme moi)»
un espace contenant des données et des points dʼaccès à des
services
lʼaccès à ce contenu est protégé
Ken Thompson (1984)
! Un point faible : lʼaccès au code objet
points de passage obligés («guichets»)
Développeurs, distributeurs, installateurs de mises à jour…
Insertion de code malveillant dans les compilateurs…
Une faille dans le code objet est très difficile à détecter
contrôle des droits dʼaccès
Exemples
les modes maître-esclave
les anneaux de Multics
! Des points dʼentrée non prévus
les systèmes à capacités (clé-serrure)
Cheval de Troie
Porte dérobée
! Mais le système nʼest pas invulnérable…
! Exemple : attaques contre Multics
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
43
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
44
Failles de protection (2)
! Exploiter les situations dʼerreur
la réaction aux défaillances est souvent moins sécurisée que le
code «normal»
exemples
Lʼépoque moderne
débordement de tampon
(après lʼavènement de lʼapproche scientifique)
introduire du code exécutable dans une zone de données
détournement dʼun mécanisme de pagination
découvrir rapidement un mot de passe dans le système Tenex
! Utiliser des canaux cachés
communication illégale entre domaines spécifiés comme isolés
peut altérer la confidentialité ou le droit dʼaccès
! Exploiter la vulnérabilité des réseaux
exemple : man in the middle
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
45
© 2014, S. Krakowiak
Multics, à la charnière de deux époques
Multics, système fondateur
! Un projet ambitieux…
! Matériel sur mesure
Suite du succès de CTSS
Objectif : un service universel de calcul
Consortium MIT, General Electric, Bell Labs
(support matériel)
pas de distinction entre segment et fichier
gestion des segments par pagination à la demande
! Modèle hiérarchique de gestion des fichiers
Les principes sont établis (processus, mémoire virtuelle,
protection, gestion de lʼinformation)
universellement adopté, avec variations
! Liaison dynamiqueracine
des segments procédures
Premier Symposium on Operating Systems Principles en 1967
Multics intègre ces principes et joue un rôle de pionnier
! Protectioncatalogue
par anneaux
catalogue
! … mais une histoire mouvementée
! Génie
logiciel
catalogue
fichier catalogue
Projet lourd et complexe, performances décevantes au début
Dissolution du consortium en 1969-70
Percée commerciale limitée et très tardive
Histoire des systèmes dʼexploitation
(GE-645, modification du GE-635 ~ IBM 7094)
! Mémoire virtuelle segmentée
! 1965-70 : le début de lʼère moderne des systèmes
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
catalogue
fichier
fichier
catalogue
système écrit en PL/1
fichier fichier fichier
fichier catalogue
fichier fichier
instrumentation
complète
lien
fichier avancé
fichier
système
dʼarchivage
- restauration
47
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
46
Vie de Multics
rachat informatique
GE par Honeywell
Cie Honeywell Bull
Bull GE
arrivée
GE 645
CTSS
1965
Honeywell
6180
installations en France
(INRIA, IMAG)
1970
arrêt Multics
arrêt Multics INRIA
MIT, IMAG
1980
Conception
articles
FJCC
De Multics à Unix
Multics en
service (12)
première installation
en Europe sur GE 645
(Honeywell-Bull)
1990
Bull reprend div.
informatique
Honeywell
1969
2000
Arrêt dernier
site Multics
retrait
Bell Labs
début Unix
1970
1972
Les Bell Labs
quittent Multics
Les Bell Labs
commencent à
sʼintéresser au projet
Ken Thompson et
Dennis Ritchie
lancent le projet Unics
«en perruque» sur PDP-7
Unics devient Unix,
multi-utilisateurs
porté sur PDP 11/20
1974
1975-76
Publication dʼun
article dans les CACM
Début de la
communauté Unix
“Lionsʼ Commentary” V6
Expansion de la
communauté
Première licence
Histoire des systèmes dʼexploitation
1979-80
Premières versions
industrielles
1988
Première version de
Posix
©FEB
photo du GE-645 des Études Bull Paris 1972 conservée par Marc Loux
Au premier rang Dave Vinograd, Allen Berglund (†), Rick Gumpertz
Au second rang l'équipe !Française : Albert Harari, Marc Loux, François Du Jeu,
Ainsi que! John Zona (Field Engineer), John Ammons (Cpu Designe)
© 2014, S. Krakowiak
Ritchie réécrit Unix
dans le langage C
Unix devient portable
Première installation
commerciale
49
© 2014, S. Krakowiak
La famille Unix
Histoire des systèmes dʼexploitation
50
Unix : architecture dʼensemble
1970
Applications
BSD
System V
1980
langage de
commande
Utilisateurs
shell 1
shell 2
Linux
1990
Outils de base
bibliothèque
(éditeurs, compilateurs, etc.)
appels
système
Bibliothèque standard
mode
utilisateur
Dennis Ritchie, Ken Thompson
Noyau Unix
2000
Hardware Adaptation Layer
Source : Wikipedia, author : Peter Hamer
mode
noyau
2010
Machine physique
source : Wikipedia, Levenez Unix History Diagram
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
51
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
52
Unix : principes de base
Micro-noyaux
! Motivations
! Entité de base : le processus
Éliminer les inconvénients des systèmes monolithiques
mémoire virtuelle linéaire + flots dʼexécution (threads)
segments «mappés» dans la mémoire virtuelle
mémoire virtuelle partagée
Modularité, construction de systèmes «à la carte»
! Principes
Le micro-noyau assure 3 fonctions
! Fichiers
gestion de mémoire à bas niveau
gestion des activités (threads)
communication par messages
système hiérarchique à la Multics + protection simple
descripteur (inode) + tables dʼimplantation multiniveaux
outil universel de gestion de lʼinformation (inclut entrées-sorties)
Un système dʼexploitation est construit à partir de ces fonctions
! Problèmes
! Allocation des ressources
Manque de souplesse
«Abstractions» imposées
Performances
processeur : tourniquet multiniveaux
mémoire paginée à la demande avec limiteur de charge
! Réalisations
! Shell
Mach ; Chorus ; L3, L4
composition dʼoutils élémentaires (pipe, flots, redirection)
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
53
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
Application
gestion des
travaux
communication
1973
Interface
indépendante
du matériel
Couche
d'adaptation
au matériel
Application
gestion des
processus
interface
processeur
gestion des
fichiers
interface
mémoire
1975
Interface
micro-noyau
S1
Micro-noyau
S2
2014
Windows 8
Seattle Computer
Products
Phone 8
Microsoft
Bill Gates
Application
S3
S4
S1 : serveur de processus
S2 : serveur de fichiers
S3 : serveur de mémoire
S4 : serveur de réseau
Gestion de threads
Gestion élémentaire de mémoire
Communication par messages
Image courtesy of Computer
History Museum
Schéma logique de lʼAlto
Chuck
Thacker
Alto
Machine
Apple Lisa
Xerox Star
Image courtesy of Computer
History Museum
Xerox PARC
55
Steve Jobs
Butler Lampson
Alto OS
Réseau
(b) Système à micro-noyau
Histoire des systèmes dʼexploitation
Windows
MS/DOS
©Tom OʼNeal
Image courtesy of Computer
History Museum
Application
2012
(quick & dirty)
Gary Kildall
(a) Système monolithique
1985
IBM PC
QDOS
Réseau
1983
Intel 8086
Digital Research
Exemples
Windows NT
Mac OS X (Darwin sur Mach 3)
1981
1979
CP/M
pilotes
Machine
© 2014, S. Krakowiak
1977
Altair, Amstrad,
Osborne, Apple II
gestion de
la mémoire
Interface
système
54
Les débuts des systèmes dʼexploitation
pour ordinateurs individuels
Système sur micro-noyau
Interface
système
Domaine actif dans les
années 1980 à 1995
En retrait depuis, mais renouveau
récent (systèmes embarqués)
© 2014, S. Krakowiak
Image courtesy of Computer
History Museum
NeXT
Macintosh
©Microsoft
MacOS
Pilot
Apple
Histoire des systèmes dʼexploitation
MacOS X
Unix, Mach
iOS
56
Systèmes pour objets connectés
Virtualisation dans les systèmes embarqués
! Domaine dʼapplication
! Contraintes spécifiques
micro-contrôleurs, réseaux de capteurs
Complexité croissante des applications
Maîtrise des performances
Réduction de la taille de la base informatique de confiance
! Contraintes
faible consommation dʼénergie
capacité de mémoire limitée
! Un renouveau pour les micro-noyaux
! Exigences
Le micro-noyau comme hyperviseur à bas niveau
Des systèmes dʼexploitation «sur mesure» pour une application
fiabilité, adaptabilité, qualité de service
permet de réaliser des «appareils virtuels» (appareil + son OS
spécifique)
! Exemple : TinyOS (U. Berkeley, Intel, Crossbow Technology)
Les pilotes peuvent sortir de la base de confiance
Les composants critiques peuvent être isolés dans des MV
système modulaire, état encapsulé
piloté par les événements (origine externe ou interne)
file dʼordonnancement
tâche de fond
G. Heiser, “The Role of Virtualization in Embedded Systems”, Proc. First Workshop on Isolation
and Integration in Embedded Systems (IIESʼ08), pp 11-16, April 2008
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
57
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
58
Les défis des systèmes dʼexploitation
Un micro-noyau vérifié
Isabelle/HOL
! Une version du micro-noyau L4
Machine virtuelle donnant une image
simplifiée du matériel
conception
! Sécurité
raffinement
preuve
! Difficultés
Asynchronisme
Gestion de la mémoire (pointeurs)
Accès direct aux fonctions du matériel
(MMU, …)
spécification
abstraite
prototype
Haskell
Simulateur
génération
automatique
! seL4, base dʼun “microviseur”
OKL4 (Open Kernel Labs)
Base installée : un milliard …
spécification
exécutable
! Certification
! Systèmes embarqués et mobiles
! Parallélisme (multi-cœurs)
raffinement
preuve
! Gestion de grands volumes de données
! Virtualisation à grande échelle
code C
optimisé
! Autonomie et adaptation
Gerwin Klein et al., “seL4: Formal Verification of an Operating-System Kernel”, Communications
of the ACM, vol. 53, no 6, pp. 107-115, June 2010
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
59
© 2014, S. Krakowiak
Histoire des systèmes dʼexploitation
60
Téléchargement