Académique Documents
Professionnel Documents
Culture Documents
1 - Introduction
Un programme ne peut s’exécuter que si ses instructions et ses données sont en
mémoire. Si l’on désire exécuter plusieurs programmes simultanément dans un ordinateur, il
faut que chacun soit charger dans la mémoire. Le système d’exploitation doit donc allouer à
chaque programme une zone de la mémoire. Mais tous les programmes n’ont pas la même
taille. De plus, les programmes sont lancés par les utilisateurs, puis se terminent à des
moments que le système ne connaît pas à l’avance. Chaque fois qu’un utilisateur demande le
lancement d’un programme, le système doit trouver une place dans la mémoire pour le
charger. Le fait de travailler en multiprogrammation implique donc que les programmes
d’application soient chargés dans des zones de la mémoire dont la localisation n’est décidée
qu’au moment de leur chargement. La gestion de la mémoire est donc du ressort du
gestionnaire de la mémoire. Il doit :
connaître les parties libres et occupées de la mémoire
allouer de la mémoire aux processus qui en ont besoin
récupérer la mémoire utilisée par un processus lorsque celui-ci se termine
traiter le va-et-vient (swapping) entre le disque et la mémoire principale lorsque cette
dernière ne peut pas contenir tous les processus.
Dr Guy Page
Le fonctionnement théorique d’un système d’exploitation
3 - Le va-et-vient
Dans les systèmes à temps partagé, la mémoire ne pouvant pas contenir les processus
de tous les utilisateurs, il faut donc placer quelques processus sur le disque. Pour les exécuter,
il faudra les ramener en mémoire principale et le mouvement des processus entre le disque et
la mémoire principale est appelé va-et-vient (swapping).
Dr Guy Page
Le fonctionnement théorique d’un système d’exploitation
Dr Guy Page
Le fonctionnement théorique d’un système d’exploitation
Dr Guy Page
Le fonctionnement théorique d’un système d’exploitation
a 21 listes dont les tailles varient de 1 octet à 1 Mo). Initialement, toute la mémoire est libre et
la liste de 1Mo n’a qu’une seule entrée qui pointe sur la zone libre de 1Mo. Les autres listes
sont vides.
Mémoire
Requêtes Nombres de
15 2ko 1Mozones
0ko 12 8k 25 ko 384k
o
768ko libres
o 6
Initialement 1024 1
Libération de C 1024 1
Etant donné que les tailles des zones sont des puissances de 2, lorsqu’un processus doit
être chargé en mémoire, on cherche un espace mémoire dont la taille est égale à la plus petite
puissance de 2 qui lui est supérieure. Si ça n’existe pas, on divise la mémoire en 2 jusqu’à ce
que cela soit possible.
Lorsqu’un bloc est recopié sur le disque, il est placé dans la liste des blocs libres de
taille 2ko telle que 2Ko > taille du processus et que 2Ko soit la taille la plus petite qui puisse
contenir le processus.
L’allocation par subdivision présente un avantage par rapport aux algorithmes qui
trient les blocs en fonctions de leur taille : quand un bloc de 2Ko est libéré, le gestionnaire de
mémoire doit examiner uniquement la liste des zones libres de 2Ko pour voir s’il peut
reconstruire un bloc plus grand. Bien qu’elle soit plus rapide, l’allocation par subdivision est
inefficace en ce qui concerne l’utilisation de la mémoire.
Le problème vient du fait que toutes les tailles doivent être arrondies à une puissance de
2. La partie non occupée est perdue car elle fait partie des zones allouées. On parle alors de
fragmentation interne car la mémoire perdue fait partie des segments alloués. Lorsque les
Dr Guy Page
Le fonctionnement théorique d’un système d’exploitation
zones libres se trouvent entre les segments et non à l’intérieur, on parle de fragmentation
externe ou phénomène du « damier ».
4 - La mémoire virtuelle
Les programmes étant trop volumineux pour tenir dans la mémoire disponible, la
solution générale adoptée fut de diviser les programmes en parties appelées segments de
recouvrement. Lorsqu’un segment se termine, il fait appel à autre. Le découpage du
programme en plusieurs parties devait être fait par les programmeurs : c’était long et
fastidieux. Pour pallier à cette situation, l’idée est d’automatiser ce découpage par l’ordinateur
: on adopte le principe de la mémoire virtuelle qui est un espace du disque dur alloué par le
système d’exploitation qui servira de mémoire lorsque la mémoire centrale ou vive (RAM)
sera insuffisante pour stocker des processus.
L’idée de base est que la taille du programme et de ses données peut dépasser la
mémoire disponible. Dans ce cas, le système d’exploitation garde en mémoire les parties du
programme qui sont utilisées et stocke le reste sur le disque (mémoire virtuelle). La mémoire
virtuelle est utilisable sur un système multiprogrammé surtout que la multiprogrammation et
la mémoire se complètent très bien. Un programme qui attend le chargement d’une de ses
parties ne peut pas s’exécuter puisqu’il est en attente sur une Entrée/Sortie. On peut alors
allouer le processus à un autre processus.
4.1 - La pagination
Le nombre de programmes à exécuter peut-être assez grand ou bien qu’il n’y ait plus
assez de place en mémoire pour contenir chaque processus. Pour ce, chaque processus est
divisé en page et stocké en mémoire virtuelle. Les adresses manipulées par les programmes
sont appelées des adresses virtuelles et constituent l’espace d’adressage virtuel.
Dans les ordinateurs sans mémoire virtuelle, ces adresses virtuelles sont directement
placées sur le bus de la mémoire et provoquent la lecture ou l’écriture du mot à l’adresse
spécifiée.
Lorsque la mémoire virtuelle est utilisée, les adresses virtuelles ne sont pas
directement placées sur le bus de la mémoire. Elles sont envoyées à l’unité de gestion de la
mémoire ou MMU (Memory Management Unit) qui est un composant traduisant les
adresses virtuelles en adresses physiques et vice-versa.
La mémoire virtuelle est divisée en pages et la mémoire physique en cases mémoire
(pages frames) de même taille que les pages de la mémoire virtuelle. A un moment donné, plus
Dr Guy Page
Le fonctionnement théorique d’un système d’exploitation
d’une page appartenant soit à un processus, soit à des processus différents peuvent être
chargés en mémoire centrale. Le MMU se charge de faire la correspondance entre les adresses
virtuelles et physiques. Pour passer des adresses virtuelles aux adresses physiques, le système
utilise une table de pages qui a autant d’entrée que de pages virtuelles. Le numéro de la page
virtuelle sert d’index dans la table des pages. Chaque élément de la table des pages contient le
numéro de la case mémoire où est mappée la page virtuelle. Si une page n’est pas mappée en
mémoire, l’élément correspondant de la table des pages verra son bit de présence à 0. Il vaut 1
lorsque la page est mappée.
Lorsqu’une page est référencée, le système d’exploitation consulte le bit de présence.
S’il est à 0, il se produit un défaut de page (page fault) ou déroutement. Le traitement du
déroutement va consister à localiser la page appropriée en mémoire virtuelle et s’il y a une
case mémoire libre en mémoire centrale, on y charge la page virtuelle ; sinon on est obligé de
remplacer une case mémoire choisie d’une certaine façon par la page virtuelle et selon
certains algorithmes.
4.2 - La segmentation
La pagination est une technique qui permet d'implanter un grand espace d'adressage
linéaire dans une mémoire physique limitée. Pour certaines applications, il est plus commode
d'avoir un espace d'adressage à 2 dimensions. L'idéal serait que chaque processus possède un
grand nombre de segments formé chacun d'un grand nombre d'octets. Les premiers segments
sont réservés aux procédures, aux données, à la pile et au tas du programme en cours
d'exécution. Les autres segments peuvent chacun contenir un fichier pour que les processus
puissent adresser directement leurs fichiers sans avoir à les ouvrir et à utiliser les primitives
d'Entrée/Sortie particulières pour les lire et les écrire.
Dr Guy Page
Le fonctionnement théorique d’un système d’exploitation
5.3 - Remplacement de la page Première Entrée, Premier Sortie (FIFO : First In First
Out)
Le Système d’exploitation mémorise une liste de toutes les pages en mémoire ; la
première page de cette liste étant la plus ancienne et la dernière la plus récente. Lorsqu’il se
produit un défaut de page, on retire la première page de la liste et on place la nouvelle page à
la fin de cette liste.
Une modification simple de FIFO consiste à examiner les bits R et M de la page la
plus ancienne. Si cette page appartient à la catégorie 0, elle est supprimée ; sinon on teste la
Dr Guy Page
Le fonctionnement théorique d’un système d’exploitation
page un peu moins ancienne et ainsi de suite. S’il n’y a pas de page de la catégorie 0, on
applique cet algorithme aux catégories 1, 2 puis 3.
Dr Guy Page
Le fonctionnement théorique d’un système d’exploitation
Une variante de FIFO est l’algorithme de la seconde chance : l’idée est de tester le
bit R de la page la plus ancienne. S’il est à 0, la page est immédiatement remplacée. Sinon ce
bit est remis à 0 et la page est placée en queue de la liste des pages comme si elle venait d’être
chargée en mémoire ; et l’algorithme continue. L’algorithme de la seconde chance cherche
donc une ancienne page qui n’a pas été référencée au cours du dernier top d’horloge. Si toutes
les pages ont été référencées, l’algorithme de la seconde chance est équivalent au FIFO
classique.
Dr Guy Page