Informatique Générale Systèmes d`exploitation

publicité
Université de Nice – Sophia Antipolis
Licence 1 Sciences & Technologies
Informatique Générale
Systèmes d'exploitation
(d'après Fabrice Huet, Wikipedia ... et bien
d'autres)
Jacques Farré
[email protected]
http://deptinfo.unice.fr/~jf/InfoGene
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
1/44
Qu'est-ce qu'un système d'exploitation ?

Il n’existe pas une unique définition pour un Système
d’Exploitation (Operating System - OS)


On peut dégager des éléments





Pourtant plein sont connus : Windows, Linux,
Mac OS, Solaris, FreeBSD, Android ….
C’est un programme
Il fournit des services aux autres programmes,
leur permet de s'exécuter et de communiquer
entre eux
Il masque la diversité matérielle
Il gère l’accès aux ressources matérielles
L’OS est un programme, donc écrit dans un langage de
programmation


Premiers OS écrits en assembleur, maintenant en C
(et en assembleur quand nécessaire)
Exemple Linux 2.6.27 : 6 399 191 lignes de code, 96.39% en
ANSI C, 3.32% en assembleur
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
2/44
L'OS est un programme
privilégié

L’OS est différent des autres programmes





C’est le premier à s’exécuter
Il bénéficie d’un accès privilégié au processeur
L’OS peut exécuter des instructions interdites aux autres
programmes
Notion de niveau de privilège (ring en x86)
 Niveau 0 : OS, tous les droits
 Niveau 3 : programme classique
L’OS, quand il existe, est vital : sans lui




Aucun programme ne peut s’exécuter
Aucun programme ne peut accéder aux ressources
S'il a un problème, la machine devient instable
 Blue Screen of Death en Windows, Kernel Panic en Linux
Pas d’autre solution que de redémarrer
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
3/44
Utilisation
des
principaux
OS
(2012)
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
4/44
OS et distributions


On confond souvent l’OS et une distribution
Distribution : ensemble formé par un OS et des
logiciels


Exemple de distribution : Windows Vista, Windows 7,
Windows 8 ...
Linux Fedora, Linux Ubuntu …
L’OS est le programme qui
a l’accès privilégié

La calculatrice, le navigateur
web … ne font en théorie
pas partie de l’OS
Jacques Farré 2012
distributions Linux (source
http://blog.tuxforge.com)
Informatique générale – systèmes d'exploitation
5/44
OS et diversité des
matériels

Un OS doit s’exécuter sur un maximum de matériel
différent




Impossible d’avoir une version différente pour chaque
processeur, mémoire, carte vidéo …
Comment faire ?
 Limiter la diversité en ayant du matériel normalisé :
norme USB 1.0, 2.0, …
Spécialiser l’OS en lui ajoutant des extensions pour
communiquer avec du matériel spécialisé
Pour cela, on a des pilotes (drivers)

extensions du système
d’exploitation qui lui
permettent de gérer un
périphérique
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
6/44
Accès aux ressources

Un programme passe par l’OS pour accéder à une
ressource, par exemple




demande de mémoire
demande de lecture/écriture sur un périphérique de
stockage
demande d’affichage
L’OS vérifie



que le programme a le droit (sécurité)
que la ressource est libre (graveur par exemple) ou
partageable (mémoire)
que l’accès à une ressource partagée est équitable
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
7/44
Notion d’utilisateur

Besoin de distinguer entre les personnes utilisant
une même machine
 Sécurité


Confidentialité
Un OS supportant la notion d’utilisateur est dit
multi-utilisateur
 Chaque utilisateur est identifié de manière
unique


Toute action/objet est associé à un utilisateur
Utilisateurs simultanés ou
se succédant dans le temps
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
8/44
Droits sur les fichiers

Principal intérêt de la notion d’utilisateur : restreindre
l’accès aux fichiers




Règle de base : tout ce qui n’est pas autorisé est interdit
Unix :



Qui a le droit de lire, écrire un fichier
Qui a le droit d’exécuter un programme, de regarder un dossier
Supporte 3 catégories : l’utilisateur, le groupe (e.g.
« Etudiants »), et le reste du monde, soit (user, group, all)
Assez grossier
Windows :


Gestion fine à base d’Access Control List (ACL)
 inspiré de Multics, ancêtre de Unix, abandonné par Linux
 possibilité de dire quel utilisateur a le droit de faire quoi
précisément (e.g. « Alice peut lire/écrire le fichier toto »)
Très (trop) complexe
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
9/44
Restrictions sur les
ressources


Possibilité de restreindre les ressources
utilisables par un utilisateur ou par un groupe
d'utilisateurs
Quelques exemples :




Limiter la quantité d’espace disque par utilisateur
(quota)
Limiter le nombre de processus (programmes en
cours d'exécution)
Limiter le nombre de connexions réseau
Limiter le nombre d'impressions ou de pages
imprimées
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
10/44
Super utilisateur

Un utilisateur a plus de droits que les autres



administrateur en windows
root en Unix/Linux
il a la charge de l’administration de la
machine



il peut tout faire



Modification/installation de logiciels
Maintenance
Lire les fichiers des autres utilisateurs sans autorisation
Terminer les programmes des autres utilisateurs
Utilisation prudente

Jacques Farré 2012
ne pas utiliser l’ordinateur au quotidien en étant
super utilisateur
Informatique générale – systèmes d'exploitation
11/44
Résumons



L’OS est un programme critique
 qui sert aux autres programmes
 qui a le contrôle sur les ressources du système
 qui applique des règles de contrôle d’accès
Mais si c’est un programme,
 il s’exécute sur le CPU
 qui le lance ?
Comment d’autres programmes peuvent-ils
s’exécuter ?
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
12/44
Basic Input Output System BIOS


Programme élémentaire (firmware) contenu dans la
mémoire de la carte-mère (mémoire rémanente ROM)
Le BIOS a un rôle essentiel pour le fonctionnement de
la carte mère :




Il initialise tous les composants de la carte mère, du chipset
et de certain périphériques
Il identifie tous les périphériques internes et externes qui lui
sont connectés
Si cela n'a pas déjà été fait il initialise l'ordre de priorité des
périphériques d'entrée (choix de l'ordre modifiable par
l'utilisateur)
Il démarre le système d'exploitation présent sur
le premier périphérique disponible (via le
chargeur d'amorçage – boot loader)
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
13/44
Unified Extensible Firmware
Interface (UEFI)


A tendance à remplacer le BIOS (Mac OS depuis Tiger,
Windows 8, Linux ...)
Vise à dépasser certaines limites du BIOS
 boot à partir de disques plus grands




autorise beaucoup plus de partitions que le BIOS
gestion intégrée du réseau, du graphique et de
plusieurs systèmes d'exploitation sur une même
machine
un démarrage plus sûr (en particulier contre les
virus de boot)
A mi-chemin entre un firmware et un système
d'exploitation
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
14/44
Processus
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
15/44
Notion de Processus


Processus : programme en cours d’exécution
Composé :




de ses données (variables, liste des ressources
utilisées…)
de l’état du processeur
La notion de processus est un service offert par l’OS


de ses instructions
les données composant un processus varient suivant
les OS
Un processus a toujours besoin de deux ressources
au moins

le CPU et la mémoire
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
16/44
CPU partagé


Quand il peut y avoir plusieurs processus en cours
d’exécution, on parle de multitâches
Il n’y a souvent qu’un CPU par machine 1



Considérons le CPU comme une ressource



mais tous les processus en ont besoin
et l’OS aussi en a besoin
chaque processus devrait avoir un peu de cette ressource
si chaque processus utilise un peu le CPU par petites
tranches de temps, on aura l’impression que tout le
monde l’a (effet dessin animé)
Le passage d’un processus à un autre est appelé
changement de contexte :

Opération relativement coûteuse
1
le problème est analogue si plusieurs processus doivent se partager un
même coeur
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
17/44
Multitâche collaboratif


Comment partager le CPU ?
Solution simple :

l’OS donne le CPU a un processus

le processus utilise le CPU


quand il a fini, il rend le CPU à l’OS ou à un autre
processus
Facile à mettre en œuvre mais

Problème si un processus ne rend pas le CPU
(volontairement ou bug)
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
18/44
Multitâche préemptif

Il faut pouvoir limiter le temps que passe un
processus sur le CPU
 chaque processus a le CPU pour une durée x



s'il termine avant la durée x, il rend le CPU à
l’OS
sinon le processus est interrompu et l’OS est
remis sur le CPU
Ok, mais remis comment ?
 On utilise un mécanisme du CPU appelé
interruption
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
19/44
Notion d'interruption

Une interruption est un signal indiquant un
évenement nécessitant une action

Interruption logicielle


Interruption matérielle


Signal envoyé par un logiciel
Signal envoyé par du matériel (clavier, souris, carte
réseau, horloge, …)
Quand une interruption est levée, elle arrive au
CPU



Le CPU doit la traiter
Il exécute un programme (fonction) appelé
gestionnaire d'interruption (interrupt handler)
C’est l’OS qui enregistre son propre code comme
interrupt handler
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
20/44
Multitâche préemptif - suite


Une horloge génère des interruptions régulières
 100-1000 Hz
L’OS place un handler pour les interruptions de
l’horloge
 toutes les 1-10 ms, le CPU exécute ce
handler


donc l’OS est remis sur le CPU même si un
processus ne l’avait pas rendu
L’OS peut ensuite décider quel processus aura
le CPU
 c’est l'ordonnancement (scheduling)
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
21/44
Ordonnancement et états
de processus

Question : le processus P vient d’avoir le CPU,
quel sera le suivant ?


Une partie de l’OS est chargé de cette décision :
l'ordonnanceur (scheduler)
Dans un système, chaque processus est dans un
certain état, variant plus ou moins suivant l’OS ; par
exemple :

Running : actuellement sur le CPU

combien de running dans un système ?

Ready : attend le CPU pour continuer

Blocked : attend la fin d’une entrée/sortie
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
22/44
Transitions d’états
1
Running
Blocked
4
3
2
Ready
1.
2.
3.
4.
Jacques Farré 2012
Début I/O
Fin I/O
Sélection par le scheduler
Selection d’un autre processus par le scheduler
Informatique générale – systèmes d'exploitation
23/44
Principes pour
l'ordonnancement

Objectif possibles pour déterminer quel processus aura le CPU :
 Équité : chaque processus doit avoir la même durée de CPU
 Équilibre : maximiser l’utilisation du système (alterner les I/O
et le CPU)
 Temps de réponse : répondre rapidement aux demandes
 L’utilisateur clique sur une fenêtre, rien ne se passe tant
que le processus qui a créé la fenêtre n’a pas le CPU


Proportionnalité : être proche des attentes de l’utilisateur
 Les utilisateurs ont souvent une idée de la durée d’une
opération (click = rapide)
Contraintes temps réel
 Forte: il faut garantir que dans une durée x, le processus P
aura eu le CPU
 Faible : ce serait bien que P ait le CPU avant une durée x
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
24/44
Scheduling Round-Robin

À chaque processus est associé un quantum




Quelle est la bonne valeur pour le quantum?




Durée maximale durant laquelle il peut s’exécuter
S'il atteint son quantum, il est préempté
S'il est bloqué avant, un autre processus est mis à sa place
Quantum long : meilleur efficacité
Quantum court : meilleur réactivité
En général entre 20 et 50 ms
Exemple simple :
P1 a besoin du CPU pendant 25ms, P2 pendant 20ms,
P3 pendant 30ms, quantum de 15ms, pas d’I/O :
P1
0
Jacques Farré 2012
P1
P1
P2
P2
P2
P3
P3
P3
P1
P1
P2
P3
P3
P3
5
10
15
20
25
30
35
40
45
50
55
60
65
70
Informatique générale – systèmes d'exploitation
25/44
Notion de priorité

Limites du Round Robin




Il peut y avoir beaucoup de processus en attente
Dans ce cas, certains n’auront pas le CPU avant plusieurs
secondes
Tous les processus sont-ils égaux ?
 Un processus qui joue de la musique a besoin du CPU
régulièrement
 Pour un processus qui affiche l’heure, ce n’est pas
grave s'il n’a pas le CPU de suite
Des processus devraient avoir le CPU plus souvent
que d’autres



Donnons leur une plus grande priorité
La priorité est souvent un nombre entier ; 20 à -20 pour
Linux
Les processus sont organisés en file par priorité
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
26/44
Round-Robin avec priorité

Le scheduler regarde la file de plus haute priorité



Avantage


Les processus prioritaires ont le CPU
Problème



Si processus en attente, il lui donne le CPU
Sinon il passe à la file de priorité plus basse
Risque de famine pour les processus de basse priorité
Le problème vient d’une priorité statique : tant qu’un
processus haute priorité veut le CPU, il l’a
Il faudrait faire varier la priorité


Pour favoriser les processus basse priorité, mais pas trop
Toujours avoir plus de temps CPU pour les processus de
priorité élevée
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
27/44
Ordonnancement avec
priorité dynamique

On donne à chaque processus



Objectif





Une priorité de base et une priorité dynamique
Les processus sont organisés en file de même priorité dynamique
Donner du CPU à ceux qui n’en ont pas eu
Ne pas en donner trop à ceux qui en consomment déjà beaucoup
Donner du CPU à ceux qui en ont besoin
Favoriser les processus bloqués pour quand ils se débloqueront
Algorithme


Analogue au Round Robin avec priorité statique, ajoute juste une
étape de calcul de priorité
 Si un processus consomme tout son quantum de temps, alors
sa priorité diminue
 Si un processus devient bloqué, alors sa priorité augmente
Globalement très difficile à faire correctement
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
28/44
Exemple : Windows XP

6 classes de priorité (realtime, high, above normal,
normal, below normal, idle)



32 priorités possibles
Certaines sont dites priorité dynamiques
Le système peut les augmenter/diminuer



Augmente si le processus appartient à une fenêtre qui
vient de passer en premier plan
Un processus qui atteint la fin de son quantum a sa priorité
courante diminuée de 1, jusqu’à atteindre sa priorité
initiale
Un processus qui n’a pas eu le CPU depuis longtemps
passe en priorité 15 pour 2 quanta



15 est le max des priorités dynamiques
Retour à son ancienne priorité courante ensuite
Quantum 30ms pour un XP Pro, 120ms pour un XP
Serveur
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
29/44
Gestion de la
mémoire
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
30/44
Gestion de la mémoire


L’OS gère la mémoire

Il en utilise une partie pour son fonctionnement

Il décide ce qu’il donne à chaque processus
La façon dont l’OS gère la mémoire est liée au
CPU


Support par le CPU (MMU) ?
 Les processeurs
empiètent de plus
en plus sur les
fonctionnalités des OS
La protection mémoire est assurée en partie par
le CPU
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
31/44
Pagination


Intel introduit la pagination dans le 80386

La mémoire est découpé en blocs, appelés pages

4Ko (x86) ou 4Mo (x86 avec pagination étendue)
L’OS ne peut pas donner moins qu’une page à un
processus




Même si il n’a besoin que de quelques octets
Le processus manipule des adresses linéaires
(virtuelles) : on parle de mémoire virtuelle
La MMU les transforme en adresses physiques
Utilisation de tables de pagination, maintenues
par l’OS
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
32/44
Pagination
Adresse
physique
(mémoire réelle)
Adresse linéaire
(memoire
virtuelle)
Programme
MMU
Table de
Pagination
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
33/44
Allocation mémoire

Un processus ayant besoin de mémoire le demande à
l’OS




Qui peut accepter ou refuser
Quand accepter?
 Idéalement, il faut accepter le plus souvent possible
 Permet d’avoir plein de processus, et donc utiliser au
mieux l’ordinateur
La mémoire est implicitement rendue lorsque le processus
termine, ou qu'il en rend explicitement une partie
Allocation


L’allocation consiste à marquer la mémoire comme
appartenant au processus
Pas de nettoyage (on ne met pas la zone à 0), sauf demande
explicite
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
34/44
Allocation différée


Si l’OS accepte une demande d’un processus,
doit-il lui donner la mémoire de suite ?
Pas forcément car un processus :



n’utilise pas toujours la mémoire qu’il demande (il a
trop demandé par rapport à ses besoins)
n’utilise pas immédiatement la mémoire qu’il
demande (principe de localité)
L’OS fait de l’allocation différée


Il répond oui au processus, mais ne fait rien
Quand le processus utilise la mémoire, la MMU râle,
l’OS est appelé, et il fait l’allocation
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
35/44
Mémoire Virtuelle

Grâce à la pagination, chaque processus voit
toute la mémoire comme si elle était à lui


Que se passe-t-il si il n’y a plus de mémoire
physique libre ?



Mais il n’a le droit d’utiliser que les morceaux qu’il a
demandé à l’OS
L’OS pourra refuser les demandes d’un processus
Mais pourquoi se limiter à la mémoire physique ?
On ajoute à la mémoire physique des disques
 Zone de swap (ou pagefile)
 Bien sûr ils sont beaucoup plus lents que la RAM
 On essaie de maintenir en RAM le maximum
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
36/44
Swap
Mémoire
virtuelle
Mémoire
physique
Programm
e

Granularité : on peut mettre dans le swap






Le processus complet
Seulement une partie de sa mémoire, celle qu’il n’utilise
pas ou peu
L’OS décide quand mettre dans le swap (swap-in)
Quand un processus accède à une zone mémoire dans
le cache, elle est remise en RAM (swap-out)
Si l’OS n’utilise pas le swap judicieusement, très
mauvaises performances (Swap Storm)
Quelle quantité de Swap faut-il avoir ? Suffisamment
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
37/44
Surengagement (overcommit)

Combien de mémoire l’OS peut-il allouer ?





À priori, autant que RAM + Swap
Mais ça limite ce qu’il est possible de faire
Si un processus demande beaucoup de mémoire, il
va bloquer tous les autres
Un processus qui demande beaucoup de mémoire
mais ne l’utilise pas va gêner les autres
L’OS se comporte comme une banque



Il promet (beaucoup) plus de mémoire
que ce qu’il a de disponible
Dans la majorité des cas, pas de soucis
(allocation différée et principe de localité)
Mais si tout le monde a besoin de la
mémoire demandée, alors c’est la faillite…
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
38/44
Dénouer le noeud du
surengagement


Quand un processus réclame la mémoire promise
par l’OS, l’OS doit en trouver, il l’avait promis…
Que faire s'il n’y en a plus ?





Solution : arrêter (tuer) un processus
Lequel ?
Celui qui vient de demander ? … mais il n’est pas
responsable
Il vaut mieux tuer un processus tel que le problème
sera résolu
 Quelqu’un qui consomme beaucoup de mémoire
 Et qui ne sert pas à grand chose
Comment est choisie la victime ? Voir par exemple
http://linuxdevcenter.com/pub/a/linux/2006/11/30/linux-out-of-memory.html?
page=2
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
39/44
Protection mémoire


L'OS est prioritaire et n’a pas de limite, sauf
physique, pour l'allocation mémoire, ni de
restriction pour l'accès en mémoire
Mais si un processus peut lire/écrire la mémoire
d’un autre processus




pas de confidentialité (un programme peut aller lire
votre numéro de carte bleue)
pas de stabilité (un programme peut modifier la
mémoire d’un autre et le faire planter)
Dans un OS multitâche, il est vital d’avoir une forme de
protection mémoire
Est-ce que l’OS peut assurer la protection mémoire ?
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
40/44
OS et protection mémoire

L'OS donne la mémoire aux processus




Donc il sait qui a quoi
Quand un processus accède à de la mémoire, l’OS
sait si c’est la sienne ou celle d’un autre
Mais, ça arrive alors que le processus a le CPU, pas
l’OS, comment l’OS pourrait-il savoir ?
L’OS a recours à la Memory Management Unit
(MMU)


Lors du changement de processus sur le CPU (aussi
dit changement de contexte), l’OS indique à la MMU
les zones mémoire appartenant au processus
Si le processus essaie d’accéder à une autre zone
 La MMU génère une interruption
 Un interrupt handler de l’OS est exécuté
 En général, le processus est tué (segfault)
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
41/44
Fragmentation mémoire

Souvent un programme a besoin que la
mémoire soit attribuée de manière contigüe


Mais le garantir ne serait pas efficace. Par
exemple





Exemple : dans un tableau, une donnée en case i+1
est en mémoire à coté de la donnée de la case i
Un programme réclame 200Mo
Il y a 200Mo de libre, mais en plusieurs morceaux.
Que faire ? Défragmenter la mémoire ?
Efficace dans quelques rares cas, trop coûteux la
plupart du temps
Solution : séparer la mémoire vue par le
processus de la mémoire physique

D'où l'intérêt de la mémoire virtuelle
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
42/44
Et si l'OS perd la tête ?





L’OS protège les processus entre eux
Mais il ne se protège pas contre lui-même
L’OS contrôle tout, donc il doit
pouvoir écrire/lire où il veut
S'il écrit dans la mémoire d’un
processus, la MMU va le lui dire
Que faire si la MMU râle ?




Vérifier si l’action est volontaire
Si oui, on ignore la MMU
Si non, on a un problème, l’OS
fait n’importe quoi… suicide !
http://aedena.over-blog.com
Blue Screen of Death ou Kernel Panic
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
43/44
Machines virtuelles virtualisation

La virtualisation fait fonctionner plusieurs OS
simultanément sur une même machine



ne pas confondre avec le dual-boot, qui permet d'utiliser
plusieurs OS sur une même machine, mais 1 seul à la fois
ni avec les machines virtuelles (par ex. la Java Virtual Machine –
JVM ), qui sont des logiciels émulant une machine abstraite (par
ex. le Java Runtime Environment - JRE), pour permettre aux
compilateurs de ne produire qu'un seul code « exécutable » sur
des architectures variées (du smartphone au supercalculateur :
write once, run anywhere)
Nombreux intérêts




installation, tests, développements, cassage et possibilité de
recommencer sans casser le système d'exploitation hôte (TP
système)
sécurisation et/ou isolation d'un réseau (cassage malveillants des
systèmes d'exploitation virtuels mais pas des systèmes
d'exploitation hôtes, invisibles pour l'attaquant, ...)
allocation dynamique de la puissance de calcul en fonction des
besoins
...
Jacques Farré 2012
Informatique générale – systèmes d'exploitation
44/44
Téléchargement