Etienne Tremblay - PowerPoint PPT Presentation

1 / 18
About This Presentation
Title:

Etienne Tremblay

Description:

La m moire du DOS est s par e en deux: une partie pour le syst me d'op ration, ... Le programme ex cut est segment (Le DOS a t construit pour fonctionner avec ... – PowerPoint PPT presentation

Number of Views:59
Avg rating:3.0/5.0
Slides: 19
Provided by: Sab70
Category:

less

Transcript and Presenter's Notes

Title: Etienne Tremblay


1
Etienne Tremblay
  • Ordinateurs, Structure et Applications

GIF-16116
Cours 15, Gestion de la mémoire
Université Laval, Hiver 2007
2
Rappel Allocation de la mémoire pour le DOS
  • La mémoire du DOS est séparée en deux une partie
    pour le système dopération,
  • Nous avons vu que le DOS allouait de la mémoire
    pour un seul programme à la fois.
  • Le programme exécuté est segmenté (Le DOS a été
    construit pour fonctionner avec le 8086 qui opère
    avec des segments).

3
Rappel Allocation de la mémoire pour Minos
  • La mémoire du MINOS est séparée en six partitions
    de taille fixe.
  • Une partition de MINOS est réservée au système
    dexploitation. Les cinq autres partitions
    contiennent des programmes.
  • Lusager décide où seront placés les programmes
    en mémoire. Minos se contente de vérifier les
    tailles des programmes afin de sassurer quelles
    ne dépassent pas la taille de la partition.

4
Allocation contiguë et translation dadresse
  • Lallocation contiguë de mémoire consiste à
    placer les programmes entiers dans une zone
    unique de la mémoire.
  • Chaque programme a ses adresses internes (adresse
    logique) et une adresse réelle (adresse physique)
    en mémoire.
  • Pour faire la transition entre ladresse réelle
    et ladresse logique, le MMU (voir le cours 3)
    peut être conçu de façon très simple il suffit
    de dadditionner ladresse de base du programme
    (sa première adresse dans la mémoire physique) à
    son adresse dans le programme. Il sagit dune
    translation dadresse.

5
Allocation contiguë, partitions de taille
variable ou fixe
  • Lespace mémoire pour les programmes peut être
    alloué dans des partitions de tailles fixes.
    Lemplacement des partitions est alors
    prédéterminé.
  • Lespace mémoire pour les programmes peut être
    alloué dans des partitions de tailles variables.
    Dans ce cas, les partitions sont créées de la
    même taille que les programmes quelles
    contiennent. Cela implique que lemplacement de
    chaque partition est variable.
  • Lallocation contiguë de mémoire dans des
    partitions à taille fixe est la méthode
    dallocation de mémoire la plus simple, mais
    beaucoup despace peut être perdu si les
    programmes chargés en mémoire sont plus petits
    que les partitions. Lallocation contiguë de
    mémoire dans des partitions de taille variable
    est mieux, mais plus difficile à gérer. Par
    exemple, il faut maintenir une liste des espaces
    mémoires disponibles.

6
Fragmentation de la mémoire
  • On définit un bloc de mémoire comme était un
    espace contigu de mémoire.
  • La fragmentation de mémoire est une mesure du
    nombre de blocs de la mémoire qui sont libres
    (qui ne contiennent pas le OS ou un processus).
    Une mémoire fragmentée est une mémoire dans
    laquelle plusieurs blocs de mémoires non
    contiguës sont libres.
  • Lallocation contiguë de partitions à taille fixe
    crée de la fragmentation interne. Entre chaque
    partition de taille fixe, un peu de mémoire est
    perdue parce que le programme contenu dans la
    partition na pas nécessairement la même taille
    que la partition.
  • Lallocation contiguë de partitions à taille
    variable crée de la fragmentation externe.
    Lorsquun programme est retiré de la mémoire, il
    laisse un bloc de mémoire libre. Il est possible,
    par la suite, que ce bloc soit rempli
    partiellement par un processus de taille moindre
    (dans une nouvelle partition). Il reste alors de
    la mémoire libre à lextérieur des partitions.
  • Une mémoire très fragmentée est une mémoire lente
    et une mémoire dans laquelle des blocs
    (programmes) de grandes dimensions ne peuvent
    plus être mis, car lespace libre est répartie
    partout dans le mémoire. Il existe des méthodes
    de compaction (pour la mémoire) et
    défragmentation (pour un disque dur) afin de
    réduire la fragmentation.

7
Un mot sur les algos dordonnancement de la
mémoire
  • Il existe plusieurs algorithmes afin de
    déterminer lemplacement dun programme en
    mémoire (allocation contiguë). Le but de tous ces
    algorithmes est de maximiser lespace mémoire
    occupé.
  • First Fit Le programme est mis dans le premier
    bloc de mémoire suffisamment grand à partir du
    début de la mémoire.
  • Next Fit Le programme est mis dans le premier
    bloc de mémoire suffisamment grand à partir du
    dernier bloc alloué.
  • Best Fit Le programme est mis dans le bloc de
    mémoire le plus petit dont la taille est
    suffisamment grande pour lespace requis.
  • Worse Fit Le programme est mis dans le bloc de
    mémoire le plus grand.
  • Même si Best Fit semble le meilleur, ce nest pas
    lalgo retenu en pratique il demande trop de
    temps de calcul. Par ailleurs, Next Fit crée plus
    de fragmentation que First Fit. Aussi First Fit,
    malgré sa simplicité apparente, est souvent
    utilisé.

8
Mémoire paginée
  • Un gros programme peut être difficile à placer de
    manière contiguë en mémoire. La solution à ce
    problème consiste à séparer le programme en
    petite parties de taille fixes des pages. Chaque
    partie se retrouve à un endroit différent de la
    mémoire.
  • Il faut maintenir une table de correspondance
    entre les pages des programmes et les pages de la
    mémoire (appelées frames). La table de
    correspondance sappelle Table des pages (page
    table). Il peut exister une table par programme
    ou une table pour tous les programmes.
  • Le principe de localité (les prochaines
    instructions à exécuter dun programme sont
    probablement adjacentes à linstruction en cours)
    permet de conclure quavoir quelques pages dun
    programme seulement dans la mémoire physique est
    suffisant. Ainsi mettre une partie seulement du
    programme dans la mémoire peut permettre
    déconomiser de lespace mémoire précieux.
  • Ajouter de linformation dans la table des pages
    permet de dire si les pages dun programme sont
    dans la mémoire ou encore sur le disque. Cet
    ajout conduit au concept de mémoire virtuelle
    présenté dans le cours 3.

9
Allocation, désallocation et remplacement de pages
  • Les pages allouées à un programme peuvent se
    retrouver séparées dans la mémoire. Lallocation
    de pages est très simple il suffit de maintenir
    une liste des pages libres et de retirer une page
    libre pour lallouer.
  • Il est possible que plusieurs programmes
    utilisent une même page sils ont du code en
    commun.
  • Désallouer des pages est simple il suffit de
    mettre une page dans les pages libres.
  • Une faute de page survient lorsque la page dun
    programme qui est requise nest pas en mémoire.
    Si toute la mémoire est occupée, il faut
    remplacer une autre page par la page requise.
    Plusieurs algorithmes permettent de déterminer
    quelle page sera remplacée. Par exemple, il est
    possible de remplacer la page qui a été
    inutilisée depuis le plus long temps ou il est
    possible de remplacer la plus vieille page
    allouée.

10
Table des pages
Tiré de The architecture of computer hardware
and software, p. 484
11
Illustration de la mémoire virtuelle
Tiré de The architecture of computer hardware
and software, p. 484
12
Traduction dadresse, MMU et TLB
  • Le MMU dune mémoire paginée est plus complexe
    que celui dune mémoire allouée de façon
    contiguë. En effet, pour tous les accès à la
    mémoire, il faut accéder à la table de pages afin
    de décoder ladresse à lire. Comme la table de
    page est souvent volumineuse, elle est elle-même
    en mémoire il faut faire deux lectures de la
    mémoire pour aller chercher une instruction, ce
    qui est très long et quasi-inadmissible.
  • Le TLB, Translation Lookaside Buffer, est une
    table de registres très rapides à lintérieur du
    CPU. Le TLB contient quelques entrées de la table
    de pages, les dernières utilisées. Il sagit
    dune forme de cache. Pour faire de la traduction
    dadresse, le MMU regarde dabord si la page à
    traduire est dans le TLB. Puisque le TLB contient
    les dernières entrées de la page de table
    utilisées, alors le MMU y trouve presque toujours
    la page à lire. Lorsquun hit se produit dans le
    TLB, le temps daccès à la mémoire nest pas
    augmenter par la pagination.

13
Table des pages inversée
  • Pour plusieurs raisons, il peut être utile de
    savoir quel page de quel processus utilise quel
    page physique. Afin davoir cette information, il
    faut construire une page de table inversée. Une
    page de table inversée est donc une table pour
    laquelle lindice de la table est un numéro de
    frame et le contenu de la table est une page de
    processus.
  • La taille dune page de table inversée est fixe
    et directement proportionnelle à la taille de la
    mémoire ou à la taille des pages.

14
Segmentation
  • Il est possible de séparer la mémoire physique en
    segments plutôt quen page. Les segments sont
    identifiés par des registres spéciaux (comme par
    exemple CS,DS,ES et SS du 8086).
  • Pour le 8086, les registres segments sont
    multipliés par 16 afin dobtenir ladresse de
    base dun segment.
  • Pour les processeurs x86 plus récents (ex.
    pentium) les registres segments sont en fait des
    sélecteurs ils contiennent un numéro de segment.
    À partir de ce numéro, ladresse de base dun
    segment est extraite dune table, la table des
    segments.

15
Segmentation vs pagination
  • Les segments sont décrits par des registres et
    une petite table de segments alors que les pages
    sont décrites par une table volumineuse.
  • La méthode de calcul de ladresse physique en
    fonction de ladresse logique nest pas la même
    pour la segmentation que pour la pagination
  • Pour la pagination, le numéro de page est
    remplacé par un numéro de frame et loffset est
    conservé afin dobtenir ladresse physique.
  • Pour la segmentation, le numéro de segment permet
    de déterminer une adresse qui est additionnée à
    loffset afin dobtenir ladresse physique.

16
Segmentation vs pagination (système 16 bits)
17
Adresse dun programme vs adresse de mémoire
  • Lorsquun programme est écrit, des références à
    des adresses logiques ou variables/fonctions sont
    définis.
  • Lors de la compilation, un fichier objet est
    créé. Le fichier objet contient le code et des
    tables pour les références.
  • Léditeur de lien utilise le code et les tables
    de plusieurs fichiers objets afin de construire
    un programme.
  • Le programme est sur le disque dur. Lorsquil est
    chargé en mémoire à plusieurs endroits ou même à
    un seul, les adresses du programmes ne
    correspondent pas nécessairement aux adresses de
    la mémoire le MMU fera la translation entre
    ladresse contenue dans le programme et ladresse
    physique.
  • Ladresse utilisée dans le code dun programme
    est rarement ladresse véritable dune
    instruction ou dune variable.

18
Références et exercices
  • Références
  • Irv Englander 15.5 et 15.6
  • IFT-10544 Systèmes dexploitation, Notes de cours
    Édition 2004.
  • William Stallings section 8.3
  • Exercices
  • 15.11, 15.21 et 15.22
Write a Comment
User Comments (0)
About PowerShow.com