No cache version.

Caching disabled. Default setting for this page:enabled (code LNG204)
If the display is too slow, you can disable the user mode to view the cached version.

Méthodes de partage de la mémoire réelle

Nous avons vu dans les pages précédentes comment gagner de la place en mémoire pour un processus, l'utilisateur simple, puis les problèmes du multiprogramming et de la gestion des parties de mémoire.
Nous allons ici avoir une vue d'ensemble des différentes techniques employées pour partager la mémoire entre les processus.

Partition fixe (Static Partition Specification)

Ce type de partage de la mémoire utilise des emplacements de tailles déterminées par le système d'exploitation (Fixed Partition Multiprogramming). Attention que ces tailles de partitions ne peuvent être modifiées une fois que le système d'exploitation est lancé.
Cette technique fixe la taille des partitions avant l'accomplissement des tàches, c'est pour cette raison qu'elle porte aussi le nom de Static Partition Specification.

Le système d'exploitation veillera donc à nous procurer différentes tailles de partitions pour stocker les processus.
Pour 32K de Mp, le système peut par exemple répartir la mémoire de cette manière : système résident = 10K, petits processus = 4K, processus moyens = 6K, gros processus = 12K.

Chaque partition ne peut contenir qu'un seul processus, qui nécessite une certaine quantité de mémoire.

Pour gérer la position en mémoire des processus en fonction de leur taille, nous avons une file par partition. Dans la file, nous retrouverons tous les processus de même taille en attente de pouvoir accéder à la partition.

Il existe certains problèmes avec ce type de gestion :

  • Si le processus n'occupe pas toute la taille de la partition, nous avons un gaspillage de la mémoire.
  • Si tous les processus qui se présentent nécessitent le même type de partition, une file sera encombrée, et les autres files peuvent être vides, ce qui est aussi un gaspillage de la mémoire.

Contents Haut

Protection de la mémoire

Même dans le cas de l'utilisateur simple, nous avons vu que nous devions nous prémunir des risques d'accès par un programme à des cellules mémoires du système d'exploitation.

Un système de protection était mis en place, par exemple gràce à un registre de séparation qui contenait l'adresse de la limite du système d'exploitation.

Le système de protection est identique dans ce cas, mais nous utilisons deux registres :

  • un registre pour l'adresse de début de la partition (low boundary).
  • un registre pour l'adresse de la fin de la partition (high boundary).

Remarques :

  • Ce système n'est valable que dans le cas de l'utilisation d'adresses relatives.
  • Les registres de début et de fin portent aussi les noms de registre de base et registre d'étendue.
  • Ce système à 2 registres permet une relocation des processus en cours d'exécution.

Contents Haut

Partition variable

Dans un système de gestion par partitions de tailles fixes le gaspillage d'espace mémoire est assez important.

Une solution est d'adapter la taille des partitions aux besoins des processus. C'est pourquoi nous parlons de multiprogrammation par partitions variables.

Fragmentation de la mémoire

Il existe deux types de fragmentation :

  • interne : le processus n'utilise pas tout l'espace de la partition. Une partie de la mémoire est inutilisée dans la partition.
  • externe : si aucun processus ne se présente avec une taille qui correspond à la partition, cet espace mémoire reste inutilisé.

Fragmentation externe

Au moment où un processus qui occupait une partition libère cet emplacement mémoire, il laisse un "trou" libre pour un autre processus.

Le problème est qu'il existe peu de chances que le processus suivant ait la même taille. Il s'en suit une fragmentation externe importante.

Coalescing holes

Une solution à cette fragmentation est de grouper les espaces mémoire libres. En effet, comme le système a défini une partition pour un processus, au moment où le processus quitte la mémoire les frontières de cette partition subsistent.

Si deux processus contigus libèrent la mémoire, nous nous retrouvons avec deux partitions contiguës libres, chacune est peut-être trop petite pour le nouveau processus. Il serait plus logique de dire que si plusieurs espaces libres sont contigus, ils forment en réalité un espace libre unique, et dans cet espace le nouveau processus peut accéder à la mémoire.

Cette technique porte le nom de coalescing holes. Aucun déplacement n'est effectué en mémoire, seules les limites des emplacements libres sont modifiées.

Compactage (Storage compaction)

La compaction n'est effectuée que si l'on utilise les registres de base et d'étendue.

La technique réside dans le déplacement des processus en mémoire pour les rendre contigus, en haut de la mémoire (juste après le système d'exploitation).

Il résulte de ce compactage des données vers le haut une place libre unique dans le bas de la mémoire.

Contents Haut

Algorithmes de placement en mémoire

Gestion des partitions de tailles variables

Comme nous ne travaillons plus avec des partitions fixes, des politiques de gestion de placement des processus en mémoire doit être adoptée par le système d'exploitation.

First-fit strategy

Cette technique est celle du premier emplacement mémoire trouvé.

Le système d'exploitation garde en mémoire une table des espaces mémoire vides pour en assurer la gestion. Dans le cas d'une politique first-fit, la table n'est pas triée par ordre de taille, mais correspond à la disposition réelle de la mémoire.

Quand un job se présente en mémoire, le système parcourt le tableau jusqu'au moment où il rencontre un emplacement vide de taille égale ou supérieure à la place nécessaire. Au premier emplacement qui correspond, le processus est placé en mémoire.

Comme les emplacements dans la table correspondent naturellement à la disposition réelle de la mémoire, nous assistons à un effet de tassement des processus vers le haut de la table.

Cet algorithme est le plus rapide, mais ne fournit pas le meilleur rendement car dès qu'un emplacement vide est de taille suffisante pour le processus, ce dernier y est placé, même si il n'occupe qu'une petite partie de cet emplacement. Il en résulte un gaspillage (fragmentation interne).

Best-fit strategy

Cette technique est celle du premier meilleur emplacement mémoire.

La table des espaces mémoire vides est triée en fonction de la taille des espaces libres, de manière ascendante.

La méthode pour insérer le nouveau processus est la même, mais comme le tableau est trié par ordre croissant d'espace libre le premier emplacement trouvé est celui qui correspond le plus aux besoins.

Worst-fit strategy

Cette technique est celle du pire emplacement.

La table est triée ici du plus grand espace mémoire libre au plus petit.

Ce qui signifie que quand un processus se présente, il est automatiquement placé dans le premier emplacement, car c'est le plus grand. Si cet emplacement ne convient pas, aucun emplacement ne conviendra avant que d'autres processus libèrent plus de mémoire.

La philosophie ici est que si on place un processus dans l'emplacement mémoire le plus grand, il est fort probable que l'emplacement restant puisse encore héberger un autre processus. Ce qui n'est pas le cas si l'espace restant est calculé au plus juste.

Next-fit strategy

Cette technique est celle du prochain emplacement.

Il s'agit d'une variante de la technique first-fit, mais ici la recherche ne démarre pas du début du tableau, mais bien de l'emplacement mémoire qui suit celui qui vient d'être utilisé.

Le but de cette technique est de répartir les jobs sur toute l'étendue de la mémoire pour éviter l'effet de tassement (une partie de la mémoire qui n'est jamais utilisée).

English translation

You have asked to visit this site in English. For now, only the interface is translated, but not all the content yet.

If you want to help me in translations, your contribution is welcome. All you need to do is register on the site, and send me a message asking me to add you to the group of translators, which will give you the opportunity to translate the pages you want. A link at the bottom of each translated page indicates that you are the translator, and has a link to your profile.

Thank you in advance.

Document created the 07/05/2004, last modified the 07/04/2023
Source of the printed document:https://www.gaudry.be/en/systeme-exploitation-memoire-partage.html

The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.