0% ont trouvé ce document utile (0 vote)
78 vues44 pages

Systeme

Ce document décrit les principaux éléments d'un système d'exploitation, notamment sa définition, son rôle de gestionnaire des ressources matérielles et des accès des programmes, la notion d'utilisateurs et les droits associés, ainsi que le rôle du BIOS dans le démarrage des systèmes.

Transféré par

GEEKGHAZI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
78 vues44 pages

Systeme

Ce document décrit les principaux éléments d'un système d'exploitation, notamment sa définition, son rôle de gestionnaire des ressources matérielles et des accès des programmes, la notion d'utilisateurs et les droits associés, ainsi que le rôle du BIOS dans le démarrage des systèmes.

Transféré par

GEEKGHAZI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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