Académique Documents
Professionnel Documents
Culture Documents
Systèmes d'exploitation
(d'après Fabrice Huet, Wikipedia ... et bien
d'autres)
1
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)
Pourtant plein sont connus : Windows, Linux,
Mac OS, Solaris, FreeBSD, Android ….
On peut dégager des éléments
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
2
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
3
Utilisation
des
principaux
OS
(2012)
4
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 …
5
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é :
6
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
7
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
8
Droits sur les fichiers
Principal intérêt de la notion d’utilisateur : restreindre
l’accès aux fichiers
Qui a le droit de lire, écrire un fichier
Qui a le droit d’exécuter un programme, de regarder un dossier
Règle de base : tout ce qui n’est pas autorisé est interdit
Unix :
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
9
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
10
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
Modification/installation de logiciels
Maintenance
il peut tout faire
Lire les fichiers des autres utilisateurs sans autorisation
Terminer les programmes des autres utilisateurs
Utilisation prudente
ne pas utiliser l’ordinateur au quotidien en étant
super utilisateur
11
Résumons
L’OS est un programme critique
qui sert aux autres programmes
qui le lance ?
12
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)
13
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
15
Notion de Processus
Processus : programme en cours d’exécution
Composé :
de ses instructions
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
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
16
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
mais tous les processus en ont besoin
et l’OS aussi en a besoin
Considérons le CPU comme une ressource
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
17
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)
18
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
interruption
19
Notion d'interruption
Une interruption est un signal indiquant un
évenement nécessitant une action
Interruption logicielle
Signal envoyé par un logiciel
Interruption matérielle
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
20
Multitâche préemptif - suite
Une horloge génère des interruptions régulières
100-1000 Hz
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)
21
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
22
Transitions d’états
Running 1
Blocked
3 2
Ready
1. Début I/O
2. Fin I/O
3. Sélection par le scheduler
4. Selection d’un autre processus par le scheduler
23
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
et le CPU)
Temps de réponse : répondre rapidement aux demandes
aura eu le CPU
Faible : ce serait bien que P ait le CPU avant une durée x
24
Scheduling Round-Robin
À chaque processus est associé un 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
Quelle est la bonne valeur pour le quantum?
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 P1 P1 P2 P2 P2 P3 P3 P3 P1 P1 P2 P3 P3 P3
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70
25
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
27
Ordonnancement avec
priorité dynamique
On donne à chaque processus
Une priorité de base et une priorité dynamique
Les processus sont organisés en file de même priorité dynamique
Objectif
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
28
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
29
Gestion de la
mémoire
30
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
31
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
32
Pagination
Adresse linéaire Adresse
(memoire physique
virtuelle) (mémoire réelle)
Programme MMU
Table de
Pagination
33
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
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
34
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
35
Mémoire Virtuelle
Grâce à la pagination, chaque processus voit
toute la mémoire comme si elle était à lui
Mais il n’a le droit d’utiliser que les morceaux qu’il a
demandé à l’OS
Que se passe-t-il si il n’y a plus de mémoire
physique libre ?
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)
36
Swap Mémoire
Mémoire
physique
virtuelle
Programm
e
40
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
41
Fragmentation mémoire
Souvent un programme a besoin que la
mémoire soit attribuée de manière contigüe
Exemple : dans un tableau, une donnée en case i+1
est en mémoire à coté de la donnée de la case i
Mais le garantir ne serait pas efficace. Par
exemple
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
42
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
43
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
...
44