Vous êtes sur la page 1sur 44

Informatique Générale

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

 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

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 …

 L’OS est le programme qui


a l’accès privilégié
 La calculatrice, le navigateur
distributions Linux (source
web … ne font en théorie http://blog.tuxforge.com)
pas partie de l’OS

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é :

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

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

 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

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 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 ?

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

 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
14
Processus

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

 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

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

 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)

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

 É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

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

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é
26
Round-Robin avec priorité
 Le scheduler regarde la file de plus haute priorité
 Si processus en attente, il lui donne le CPU
 Sinon il passe à la file de priorité plus basse
 Avantage
 Les processus prioritaires ont le CPU
 Problème
 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

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

 Globalement très difficile à faire correctement

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

 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

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)

 Bien sûr ils sont beaucoup plus lents que la RAM

 On essaie de maintenir en RAM le maximum

36
Swap Mémoire
Mémoire
physique
virtuelle

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
37
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…
38
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
39
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 ?

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

 Un interrupt handler de l’OS est exécuté

 En général, le processus est tué (segfault)

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

Vous aimerez peut-être aussi