View
103
Download
0
Category
Preview:
Citation preview
GEF 435Principes des systèmes d’exploitation
Gestion de la mémoire de base et permutation
(va-et-vient, process swapping)(Tanenbaum 4.1 & 4.2)
Revue
• Qu’est-ce qu’un état sécuritaire?• Quelle est la différence entre l’évitement et la
prévention des interblocages?
Synopsis
• Synopsis de la gestion de la mémoire• Base de la gestion de la mémoire
Monoprogrammation Multiprogrammation avec partitions fixes
• Permutation (Swapping)Gestion: Management: Tableaux de bits (Bitmaps) vs.
Listes chaînées
La loi de Parkinson
“Les programmes s’accroissent pour remplir la mémoire disponible qui leur est réservée’’
Synopsis de la gestion de la mémoire
• Pourquoi avons-nous besoin de la gérer la mémoire?
• Combien peut-on adresser de mémoire pour un processus dans Windows XP?4 GB (232 bits)Est-ce que la plupart des ordinateurs PC à la maison ont
autant de RAM?
• Qu’est-ce que les SE font quand ils exécutent des programmes qui demandent de la mémoire qui excède leurs capacités?Une partie du programme est permuté au disque
(swapped)
Synopsis de la gestion de la mémoire
• On a besoin de quelque chose pour gérer le mouvement des programmes entre le(s) disque(s) et la mémoire (ou en général: pour gérer la hiérarchie de mémoire).
• La partie du système d’exploitation qui fait cela s’appel le gestionnaire de mémoire.
Synopsis de la gestion de la mémoire
• Est-ce que la multiprogrammation vaut la peine de faire de la gestion de mémoire?Considérez un nombre de processus qui attendent pour les E/S
en moyenne de 80% du temps La probabilité que n processus vont tous attendrent pour des
E/S en même temps est pn. Ce qui veut dire que l’utilisation du CPU pour n processus est 1-pn (p est le % d’E/S)
Cinq processus en mémoire avec 80% d’attente pour les E/S donne une utilisation du CPU de 1-(0.8)5 = 67% (assumant que le temps de changement de contexte est négligeable)
• Beaucoup mieux que 20% pour un processus simple!
Synopsis de la gestion de la mémoire
• Les processus avec un temps d’attente pour les E/S en excès de 80% ne sont pas rares!
Synopsis de la gestion de la mémoire
• En premier on considère deux systèmes simples:MonoprogrammationPartitions fixe
• En grande part, utile pour les systèmes de lots (batch)
• Quand les processus sont chargés en mémoire ils exécutent jusqu’à la terminaison
Synopsis de la gestion de la mémoire
• Monoprogrammation sans permutation ou paginationL’arrangement le plus simple possibleSeulement un programme va exécuter à la foisLe SE copie le programme du disque en mémoire et
l’exécute. Quand c’est fini, le SE est prêt à accepter une nouvelle commande de l’utilisateur
Les nouvelles commandes écrase le dernier programme en mémoire avec le nouveau
Trois configurations, prochaine diapositive
Synopsis de la gestion de la mémoire
a) Rarement utilisé de nos joursb) Utilisé dans les baladeurs MP3, les ordinateurs de poche (Palm)c) Était le modèle initiale pour les PCs, ex: DOS
Synopsis de la gestion de la mémoire
• Multiprogrammation avec partitions fixesPour exploiter les bénéfices de la multiprogrammation
nous avons besoin d’avoir plus d’un programme en mémoire à la fois
Solution simple (pour les systèmes de lots): diviser la mémoire en n partitions (possiblement égales), et de mettre la prochaine job qui arrive dans la plus petite partition qui peut la contenir (ou dans la queue pour cette partition)
Désavantage: Il y a une perte d’espace de mémoire parce que les partition sont fixes; toute l’espace non utilisée par une job est perdu
Synopsis de la gestion de la mémoire
• L’image montre un autre désavantage:Parce que nous utilisons
des queues multiples, nous avons des attentes sur certaines partitions et certaines partitions sont complètement inutilisées!
• Une queue simple donne normalement un service supérieur (tout comme dans une banque)
Synopsis de la gestion de la mémoire
• Plusieurs stratégies pour choisir les jobs:Permettre à la job la plus
proche du front et qui peut entrer dans une partition libre d’exécuter
Chercher dans toute la queue pour la job la plus large qui entre dans l’espace• On doit garder une petite
partition pour que les petites jobs puissent exécuter!
Permutation
• Les systèmes antérieurs étaient plus simples parce que quand les programmes étaient chargés en mémoire, ils étaient laissés là jusqu’à la terminaison
• Dans un système à temps partagé nous ne pouvons pas choisir combien de processus nous gardons en mémoire pour garder le CPU occupé… maintenant les utilisateurs décident combien de processus exécutent
• Quand nous n’avons pas assez de mémoire principale existante pour garder touts les processus actifs en mémoire, nous devons les permuter entre la mémoire principale et le disque...
Permutation
• La permutation d’un processus consiste à amener un processus du disque à la mémoire dans son entièreté. Le processus est exécuté pour un temps et remis sur le disque
Permutation
• La différence entre ce système et les partitions fixes est que le nombre, la location et la grandeur des partitions varient dynamiquementAvantages:
• Une solution bien plus flexible
• Une meilleur utilisation de la mémoire
Désavantages:• Plus compliqué à implémenter
• Il peut y avoir des “trous” laissés dans la mémoire, qui peuvent être compactés pour corriger le problème
Permutation – Combien de mémoire
• Combien de mémoire devrait-on assigner à un processus quand il est permuté dans la mémoire?Si une grandeur de données fixe peut être
déterminé alors cette grandeur exacte est allouéeCependant, si un processus a une pile et/ou un tas
(heap), alors nous devons allouer de l’espace pour grandir pour empêcher d’avoir à déplacer le processus continuellement dans la mémoire
Permutation – Combien de mémoire
Segment de données Segment de données et pile
Permutation - Gestion
• Comment est-ce que l’on trace où les processus sont dans la mémoire et où est-ce qu’il y a de la mémoire pour les chargés?
• Deux méthodes: Tableaux de bits et listes chaînées
Permutation - Gestion
• Gestion de la mémoire avec tableaux de bits:Divise la mémoire en unités d’allocation tel que 4 octets
ou plusieurs kilooctetsUtilise un tableau de bits avec des 1 pour désigner les
unités alloués et des 0 pour désigner les unités libresDe quelle grandeur sont nos unités d’allocation?
Permutation - Gestion
Permutation - Gestion
• Gestion de la mémoire avec tableaux de bits:La plus petite est l’unité d’allocation, le plus grand sera le
tableau de bits correspondantCependant, même avec des unités de 4 octets (32 bits) on
perd seulement 1/33 de la mémoireLes unités qui sont larges nous font perdre la fin de la
dernière unité, ex: pour un unité de 64KO, si nous avons un programme qui a 65KO, alors nous perdons 63 kilooctets!
• Cependant, nous avons réduit le tableau de bits à seulement 1/512001 = 1.9x10-4% de la mémoire
Permutation - Gestion
• Gestion de la mémoire avec tableaux de bits:Avantages:
• Facile à implémenter
• Le tableau de bits est de grandeur fixe peu importe combien de programme sont en mémoire
Désavantage• Peut prendre du temps pour chercher dans le tableau pour
trouver une série de 0 consécutifs pour placer un programme
Permutation - Gestion
• Gestion de la mémoire avec des listes chaînées:Utilise une liste chaînée pour tracer les “segments”
• Segments sont ou bien un processus ou un trou entre les processus – commode de trier par adresses
Avantage: moins de recherche à faire
Permutation - Gestion
• Comment est-ce que l’on utilise les listes chaînées pour gérer les processus qui quittent la mémoire?On combine simplement le nouveau trou avec les trous
adjacent:
Permutation - Gestion
• Comment est-ce que les nouveaux processus sont placés en mémoire?Premier segment (first fit) – Trouve le premier
segment vide qui est assez large pour tenir le processus et on brise le segment en un segment de processus et un segment de trou (plus petit que le dernier)
Prochain segment (Next fit) – Un amélioration simple sur premier segment. Dénote la place où le dernier programme a été inséré et commence à regarder là
• Donne une petite augmentation de performance sur le premier segment (simulation Bays)
Permutation - Gestion
• Comment est-ce que les nouveaux processus sont placés en mémoire? Plus grand segment (Worst fit) – Au lieu de prendre un segment
qui fait juste et de le briser en laissant un petit trou presque inutilisable; on trouve le trou le plus grand pour laisser un trou maximum pour le autres processus
• Simulations montre que ce choix n’est pas bon du tout
Placement rapide (Quick fit) – On garde les segments tel que 4KB, 8KB, etc dans une table séparée pour une localisation facile des trous
• Bon pour l’allocation, mais lent pour la dé-allocation parce que plusieurs listes doivent être réconciliés
Permutation - Gestion
• Note finale sur les listes: on pourrait garder des listes séparées pour les trous et les processusAccélère la recherche de trous!Permet d’ordonner les trous par grandeur pour un allocation
encore plus rapide!!Nous laisse utiliser les trous même pour stocker les pointeurs
pour voyager d’un trou à un autre!!!Plus compliqué pour la dé-allocation parce que la mémoire qui
devient un trou doit être placée dans le bon espace sur l’autre liste (en ordre)...
Quiz Time!
Questions?
Recommended