Présentation d`un système d`exploitation

publicité
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
Présentation d’un système d’exploitation
1- Définition et objectifs d’un système d’exploitation
2- Evolution des systèmes d’exploitation
3- Fonctions d’un système d’exploitation
a. Gestion de mémoire.
i. Allocation en zones contigües de tailles fixes.
ii. Allocation en zones contigües de tailles variables.
iii. -Pagination.
iv. Segmentation.
v. Mémoire virtuelle.
b. Gestion des processus.
i. Etats d’un processus.
ii. Type d’exécution.
iii. Ordonnanceur.
c. Gestion des périphériques E/S.
d. Gestion des fichiers.
4- Structure d’un système d’exploitation
a.
Les systèmes monolithiques
b.
Les systèmes à couches
c.
Les machines virtuelles
M.Nasri
Page 1
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
1- Définition et objectifs d’un système d’exploitation
d’exploitation
Sans système d’exploitation,
d’exploitation un ordinateur est un ensemble de métal
inutile.
Un système d’exploitation
d’
(SE ou OS : operating system)
d’une
machine, comme son nom le dit est l’ensemble de composant qui permet
d’exploiter les fonctionnalités de
d la machine (machine à laver,
TV,
Smartphone,…)..
Un système d’exploitation est donc l’interface homme-machine
machine.
Pour un ordinateur, le système d’exploitation permet
ermet de faire la liaison
entre les utilisateurs, le matériel et les applications (traitement de texte,
texte jeu
vidéo…).
Si un programme désire envoyer des données à un périphérique, il suffit
de les envoyer
nvoyer au SE qui va
v le faire moyennant les pilotes.
pilotes
Ci-dessous
dessous un schéma explicatif d’un système d’exploitation
d’exploitation :
Fig.1
M.Nasri
Page 2
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
2- Evolution des systèmes d’exploitation
• Exploitations porte ouverte : 1945-1955
• Traitement par lots : 1955-1965
• Multiprogrammation et traitement par lots : 1965-1980
• Multiprogrammation et partage de temps : 1965-1980
• Systèmes d'exploitation d'ordinateurs personnels
• Exploitations en réseau
• Exploitations en distribué
• Systèmes multiprocesseurs
• Système d'exploitation temps réel
3- Fonctions d’un système d’exploitation
Ci-dessous un modèle en couche qui permet de voir les
principales
fonctions d’un système d’exploitation :
Fig.2
Ci-après
nous
allons
décortiquer
chaque
fonction
du
système
d’exploitation (gestion de la mémoire, gestion des processus, gestion de
périphériques, gestion de fichiers).
M.Nasri
Page 3
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
a. Gestion de mémoire
La gestion de mémoire au niveau d’un système d’exploitation, consiste à :
o
o
o
o
o
o
o
o
Connaître les zones de mémoires libres et occupées.
Allouer la mémoire nécessaire aux processus qui ont le besoin.
Gérer le va et vient entre les disques et la mémoire centrale.
Répartir la mémoire entre les différents processus actifs.
Répartir la mémoire entre les différents utilisateurs présents.
Maintenir l’intégrité des zones réservées.
Maintient des données de chaque processus.
Utiliser la mémoire virtuelle.
o Faire la pagination.
Pour manipuler la mémoire, le système d’exploitation utilise les techniques
suivantes :
Allocation en zones contigües fixes.
Allocation en zones contigües variables.
Segmentation.
Pagination.
Mémoire virtuelle.
Dans ce qui suit, nous allons voir en détail chaque technique.
i. Allocation en zones contigües de taille fixe.
Initialement la mémoire est découpée en zones ou partitions de tailles
fixes (pas obligatoirement identiques).
Pour allouer de la mémoire à un programme P de taille Taille(P). le SE
cherche la partition tel que :
Taille(partition) - Taille(P) : soit la plus petite possible.
M.Nasri
Page 4
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
Fig. 3
Ci-dessous un exemple d’allocation en zones contigües de taille fixe.
On voit ici que le programme occupe la zone mémoire qui le suffit et laisse
derrière lui des trous inutilisables.
Fig. 4
Chaque partition est identifiée par son adresse et sa taille.
M.Nasri
Page 5
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
ii. Allocation en zones contigües de taille variable.
Le principe ici est que le système initialement va partitionner sa mémoire
selon les tailles des programmes qu’il va charger.
Une fois le programme est terminé, la partition qu’il occupait avant sera
dite libre => la mémoire du système sera donc composée de partitions
occupées et d’autres libres.
Si le système va charger un processus de taille égale à T il cherchera
la partition libre dont la taille est supérieure ou égale à T. cette recherche
peut se faire selon 2 techniques :
First fit : il utilisera la première zone libre qui peut héberger le
processus.
Best Fit : il cherche la zone libre qui présente le minimum d’espace
perdu (la taille du trou causée est la plus petite possible)
Ci-dessous un exemple d’allocation de partitions à taille variables.
On voit dans la figure qu’après la fin des p2 et p4, on a eu 2 autres
partitions libres.
Fig.5
M.Nasri
Page 6
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
La figure qui va suivre nous montrera un exemple d’allocation selon la
technique First FIT.
Fig.6
La figure qui suit nous montrera un cas d’allocation d’un processus selon
la technique Best Fit.
Fig. 7
M.Nasri
Page 7
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
Le problème ici, c’est qu’après avoir alloué et libéré plusieurs programmes
on va se trouver avec plusieurs fragments de mémoires non contigües.
C’est le phénomène de fragmentation.
La figure suivante Fig.8 montre que réellement nous avons de l’espace
mais cette espace n’est pas contigües du coup on ne peut pas l’utiliser en
tant que partition libre. D’où la nécessité
de compacter ou de
défragmenter la mémoire.
La défragmentation est couteuse vu qu’elle revient à translater les
adresses dynamiques afin de créer une seule zone libre.
Fig. 8
Ci-dessous 3 exemples de compactage de mémoire dont le coût varie.
M.Nasri
Page 8
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
Fig.9
L’allocation d’une zone de mémoire contigüe à taille variables présente
des avantages et des inconvénients.
+ : protège le processus en limitant sa zone de mémoire. Même s’il
génère d’autres adresses lors de son exécution, le programme ne
dépassera pas la zone mémoire qui lui est allouée.
+ : l’accès au programme chargé en mémoire est facile.
- : oblige de charger tout le programme peu importe sa taille dans
une seule partition.
- : nécessite un compactage ou défragmentation.
Les inconvénients de l’allocation contigües, nous laisse penser à diviser
la mémoire du processus ou du programme à charger en des petits
morceaux facile à caser. Cela nous ramène à parler de la pagination.
M.Nasri
Page 9
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
iii. Pagination
L’unité d’allocation de la mémoire centrale s’appelle page.
La mémoire centrale est divisée en morceaux linéaires de même taille
appelés cases ou cadre de page (frame).
L’espace d’adressage du programme est divisé en pages.
Le principe est simple :
o
Affecter chaque page du programme dans n’importe quel cadre
disponible.
o
Remplir une table de pagination qui indiquera l’ordre des pages du
programme ainsi que leurs nouveaux emplacements dans la mémoire
centrale afin de pouvoir restituer le programme.
Fig.10
Inconvénients :
o Maintien de la table de pagination.
o
M.Nasri
Le temps d’accès à un emplacement en mémoire d’un programme
Page 10
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
Avantage :
o Il n’y a plus de problèmes de fragmentation.
iv. Segmentation
Consiste à diviser le programme en des portions de mémoire linéaires
appelés segments.
La segmentation du programme peut être logique sous la forme de :
Un segment pour le code.
Un segment pour les données.
Un segment pour la pile d’exécution.
Fig.11
La mémoire centrale étant linéaire.
Le principe ici revient à placer les segments du programme en mémoire
centrale. Et utiliser une table de segmentation pour pouvoir restituer le
programme.
Dans l’exemple qui suit (Fig.12) on verra comment segmenter la mémoire
tout en remplissant la table de segmentation.
M.Nasri
Page 11
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
Fig.12
Initialement la programme est divisé en 4 segments, identifiés par <num
segment, taille du segment mais à partir du 0> :
Adresse du segment 1 = <1, 20>
Adresse du segment 2 = <2, 45>
Adresse du segment 3 = <3, 60>
Adresse du segment 2 = <4, 70>
Après chargement en mémoire centrale, les segments sont identifiés par <
position du segment en M.C, offset (= taille du segment) > :
Adresse du segment 1 = <50, 20>
Adresse du segment 2 = <195, 25>
Adresse du segment 3 = <95, 15>
Adresse du segment 2 = <150, 10>
Toutes ces données sont sauvegardées dans la table des segments pour
pouvoir identifier le programme.
Inconvénients :
M.Nasri
Page 12
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
o Le problème de fragmentation existe.
o
Il faut passer par la table de segmentation pour pouvoir accéder au
programme chargée => temps d’accès plus grand.
Avantage :
o L’unité d’allocation est plus petite que le programme entier.
o Les segments peuvent changer de places en mémoire.
o La protection et le partage des données sont aisés.
On appelle écroulement, lorsqu’un processus passe trop de temps à
paginer qu’à s’exécuter.
On combine souvent la pagination et la segmentation. Cette technique
revient à paginer les segments.
v. Mémoire virtuelle
Le mécanisme de mémoire virtuelle ou swap, est utilisé afin d’aider le
système à exécuter des programmes quand il n’y a pas suffisamment de
mémoire centrale, il repose sur les mémoires de masse (disque dur,…).
La mémoire centrale ne peut pas charger tous les programmes du coup le
système charge seulement les pages dont il a besoin pour l’exécution.
Dans la figure qui suit (Fig.13), le SE ne va charger que les pages dont il
a besoin pour un instant t.
On voit donc, que le programme 1 aura besoin de charger seulement 3
pages (Page1-1, Page2-1, Page3-1), le programme 2 a besoin d’une
seule page (Page3-2),…. De cette manière on allège la mémoire centrale.
Fig.13
M.Nasri
Page 13
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
Pour connaître si une page est déjà chargée en la mémoire centrale ou
pas, le système utilise le bit de validation :
Fig.14
Quand un programme essaye d’accéder à une page en MC et ne la trouve
pas, le système génère un problème de défaut de page.
Suite au défaut de page, le système fait une E/S sur la mémoire virtuelle
pour charger la page manquante.
Si la mémoire centrale est pleine. Le système libère les pages selon un
des algorithmes suivants :
FIFO : first in first out.
LRU (last recently used) : la dernière récemment utilisée.
Au hasard.
b. Gestion des processus
Un programme : est un ensemble d’instructions.
Un processus est un programme en cours d’exécution.
Un thread : est un processus léger qui partage la mémoire du processus
principale.
Contexte d’un processus ou thread : est l’ensemble des informations
utilisées par le processus ou thread en cours d’exécution.
Contexte : est également défini en tant que ensemble de données
minimum et nécessaire pour permettre à un processus ou thread de
reprendre de l’état d’où est ce qu’il a été interrompu.
i. Etats d’un processus.
Étant donné que le processeur ne peut exécuter qu’un seul processus à la
fois.
Un processus peut avoir 3 états :
o Bloqué : en attente du processeur.
M.Nasri
Page 14
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
o Elu : va être exécuté.
o Prêt : en attente d’une ressource.
Fig.15
La préemption est le fait de forcer le blocage d’un processus.
ii.
Ordonnanceur
L’ordonnanceur (ou scheduler) est un composant au niveau du noyau du
système d’exploitation qui permet d’ordonner l’exécution des processus
prêts.
L’ordonnanceur permet à l’ordinateur d’exécuter plusieurs processus
simultanément en commutant rapidement les contextes des processus.
L’ordonnanceur
organise
les
processus
selon
plusieurs
types
d’algorithmes, parmi ces algorithmes :
Round robin
FIFO.
Round Robin, son principe est le suivant :
o Soit 3 le nombre de processus à ordonner.
o 1- le noyau sauvegarde les contextes des 3 processus.
o 2
Election du processus1.
Chargement du contexte du processus1.
Exécution pendant x milli - secondes.
Sauvegarde du contexte du processus 1.
o 3
M.Nasri
Election du processus2.
Page 15
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
Chargement du contexte du processus2.
Exécution pendant x milli - secondes.
Sauvegarde du contexte du processus 2.
o 4
Election du processus3.
Chargement du contexte du processus3.
Exécution pendant x milli - secondes.
Sauvegarde du contexte du processus 3.
o 5
Election du processus1.
Chargement du contexte du processus1.
Exécution pendant x milli - secondes.
Sauvegarde du contexte du processus 1.
o ….jusqu’à la fin de l’exécution des processus.
Fifo, son principe est simple, le premier élu sera exécuté jusqu’à la fin =>
ce qui va pénaliser les petites tâches qui seront parfois obligées d’attendre
la fin des longues tâches.
Le scheduler doit avoir les qualités suivantes :
o Equitable : chaque processus reçoit sa part du temps processeur.
o Efficacité : pas de temps processeur perdu sans rien faire.
o Temps d’exécution : minimiser le temps d’attentes des travaux en
traitement pas lots
o Rendement : maximiser le nombre de travaux effectués par unité de
temps.
iii.
Type de programmation.
Le SE, peut exécuter de plusieurs façons les processus, principalement il
peut appliquer
La multiprogrammation consiste à faire exécuter plusieurs processus en
même temps (pas besoin d’attendre la fin de l’un pour lancer l’autre) c’est
l’ancêtre de la programmation dite multitâches.
La programmation temps-partagés consiste à partager le temps
processeur entre les différentes tâches.
M.Nasri
Page 16
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
c. Gestion des périphériques E/S.
Pour la gestion de périphériques E/S, le SE doit assurer les fonctions
suivantes :
o Cacher la complexité des périphériques
o Faire abstractions aux différentes architectures matérielles offertes par
différents constructeurs.
o Configurer le matériel.
o Réaliser des fonctions d’accès et de contrôle de ces matériels.
d. Gestion des fichiers
Un fichier est l’ensemble de données codées de même nature et
stockées sur un support externe.
Le SE doit assurer :
o L’accès à ces fichiers en lecture et écriture.
o Sécurité et confidentialités des données des fichiers.
o Les fonctions de manipulations des fichiers (copie, déplacement,
suppression,…).
o Permet le partage des fichiers
4- Structure d’un système d’exploitation
a. Les systèmes monolithiques
La plus largement répandue.
Le SE est une collection de procédures, chacune pouvant appeler à tout
moment
n'importe quelle autre.
Pour construire le code objet du système, il faut compiler toutes les
procédures, pas de masquage des informations; chaque procédure est
visible de toutes les autres
Systèmes monolithiques avec une structure minimale
Les services offerts par le système d'exploitation sont appelés par des
instructions de type SVC (Supervisor Call ) Cette instruction commute la
machine du mode utilisateur au mode noyau et
Transfère le contrôle au système d'exploitation.
M.Nasri
Page 17
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
Fig.16
b. Les systèmes à couches
La généralisation de la structuration simple
Chaque couche ne pouvant être appelée que par des procédures qui lui
sont immédiatement inférieures
Structurer le système d'exploitation en plusieurs couches, chaque couche
s'appuyant sur celle qui lui est immédiatement inférieure.
Exemple : THE de Dijkstra (un simple système de traitement par lots batch)
Couche
Description
C5
Opérateur
C4
Programmes utilisateurs
C3
Gestion
des
E/S
,
chaque
processus
dialoguait avec des périphériques abstraits
C2
communication entre les processus et la
console de l’opérateur
C1
M.Nasri
Gestion de la mémoire, allocation d'espace
Page 18
ENSI : 2011/2012
Système d’exploitation et mise en œuvre UNIX
mémoire pour les processus (pagination).
C0
Allocation du processeur par commutation
de temps entre les processus, soit à la
suite d'expiration de délais, soit à la suite
d'interruption ; multiprogrammation de base
du
processeur
c. Les machines virtuelles
a été l'adaptation temps partagé de l'OS/360 d'IBM, proposé vers 1968
sous le nom de VM/370 en 1979.
Dissocier les deux fonctions d’un SE
Gestionnaire de ressources (multiprogrammation)
Fournir une machine étendue (interface)
Le VM/370, s'exécute sur le même matériel et fournit à la couche
supérieure plusieurs machines virtuelles, copies conformes de la machine
réelle (interruptions, mode noyau/utilisateur, etc...)
Chaque machine virtuelle peut exécuter son propre SE.
Lorsqu'une machine virtuelle exécute en mode interactif un appel système,
l'appel est analysé par le moniteur temps partagé de cette machine, CMS.
Fig. 17
Avantage:
o Chaque VM peut exécuter un SE tout comme sur le matériel! Plus d’un
SE par machine!
o En séparant la machine étendue de la multiprogrammation chaque
fonction est plus facile à entretenir
Inconvénient: plusieurs couches de traps (déroutement).
M.Nasri
Page 19
Téléchargement