Le fonctionnement théorique d’un système d’exploitation Objectif 23 : Allouer l

Le fonctionnement théorique d’un système d’exploitation Objectif 23 : Allouer la mémoire Dr Guy Page 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. 2 - La gestion de la mémoire sans va-et-vient, ni pagination Les systèmes de gestion de mémoire se répartissent en deux catégories : La première comprend les systèmes qui déplacent les processus entre la mémoire principale et le disque (va-et-vient). La seconde, ceux qui ne le font pas. Le va-et-vient et la pagination sont des artifices qui pallient un manque de mémoire principale. 2.1 - La monoprogrammation sans va-et-vient, ni pagination La gestion de la mémoire la plus simple consiste à avoir un seul processus en mémoire à un instant donné et à lui permettre d’utiliser toute la mémoire disponible. Cette approche, courante avant 1960, n’est plus utilisée de nos jours parce qu’elle implique que chaque processus contienne les pilotes des périphériques d’Entrée/Sortie qu’il utilise. La technique utilisée généralement est la suivante : Le Système d’Exploitation est situé en mémoire vive. Le Système d’Exploitation est situé en mémoire morte. Le fonctionnement théorique d’un système d’exploitation Dr Guy Page Le système d’exploitation est situé en mémoire vive et les pilotes de périphérique en mémoire morte. Dans cette organisation, il ne peut y avoir qu’un seul processus qui s’exécute à un instant donné. MS-DOS (MicroSoft Disk Operating System) est un exemple de système d’exploitation utilisant la monoprogrammation. 2.2 - La multiprogrammation et l’utilisation de la mémoire La multiprogrammation facilite le développement des programmes en permettant de les diviser en plusieurs processus. Elle se justifie aussi si plusieurs personnes travaillent simultanément en mode interactif. Il serait inefficace de charger un processus, de l’exécuter pendant 100 ms par exemple puis de passer quelques centaines de millisecondes à le réécrire sur le disque. Il serait intéressant de permettre à un programme de s’exécuter lors de la durée du transfert d’un autre programme. Il faut donc conserver simultanément plusieurs programmes en mémoire, en partie ou en totalité. Ce mode de partage est appelé multiprogrammation. Une multiprogrammation sans réimplantation dynamique est assurée par la partition de la mémoire. 2.3 - La multiprogrammation avec des partitions fixes. Dans un système à partitions fixes, la mémoire est partagée statiquement en un nombre fixe de zones. Les tailles et les limites de ces zones sont définies lors de la génération du système. Chaque nouvelle tâche est placée dans la file d’attente de la plus petite partition qui peut la contenir. Tout espace inutilisé dans une partition est dès lors perdu. Cette technique consistant à trier des tâches en fonction de leurs tailles dans des files multiples présente un inconvénient lorsque la file des grandes partitions est vide et celle des petites pleines. Une alternative consiste à utiliser une seule file : dès qu’une partition se libère, on y place la première tâche de la file d’attente qui peut y tenir et on l’exécute. 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). Le fonctionnement théorique d’un système d’exploitation Dr Guy Page 3.1 - La multiprogrammation avec partitions variables En principe, on peut utiliser des partitions fixes pour les va-et-vient. Dès qu’un processus se bloque, on le déplace sur le disque et on le remplace par un autre. En pratique, les partitions fixes ne sont pas très intéressantes lorsque la mémoire est limitée car on perd beaucoup de place à cause des programmes qui sont plus petites que les partitions. Il faut donc utiliser les partitions variables. Avec les partitions variables, le nombre et la taille des processus en mémoire varient au cours du temps. Le nombre, la taille et la position des partitions varient dynamiquement au fur et à mesure que les processus entrent ou sortent de la mémoire. On peut réunir les espaces inutilisés en une seule partition de grande taille en déplaçant tous les processus vers le bas de la mémoire. Cette opération appelée compactage n’est pas généralement utilisé car elle requiert beaucoup de temps processus. 3.2 - La gestion de la mémoire par table de bits La mémoire est divisée en unités d’allocation dont la taille peut s’exprimer en mots ou en kilooctets. A chaque unité, on fait correspondre un bit dans la table de bits qui est à 0 si l’unité est libre et à 1 si elle est occupée. Plus la taille de l’unité d’allocation est faible, plus la table de bits est importante. La table de bits permet de mémoriser l’occupation de la mémoire dans un espace mémoire de taille fixe car la taille d’une table de bits ne dépend que de la taille de la mémoire principale et de la taille de l’unité d’allocation. Le problème de cette technique de gestion de la mémoire vient du fait que lorsqu’on doit ramener en mémoire un processus de N unités, le gestionnaire de la mémoire doit alors parcourir la table de bits à la recherche de N zéros consécutifs. Cette recherche est lente entraînant ainsi la rareté de son utilisation en pratique. 3.3 - La gestion de la mémoire par listes chaînées Cette technique de mémorisation de la mémoire consiste à gérer une liste chaîne des segments libres et occupés, un segment étant un processus ou un espace libre entre 2 processus. Cette liste est triée sur les adresses permettant de mettre la liste à jour facilement lorsqu’un processus se termine ou se place sur le disque. Quand on mémorise les processus et les zones libres dans une liste triée en fonction des adresses, on peut utiliser plusieurs algorithmes pour allouer la mémoire aux nouveaux processus ou aux processus ramenés en mémoire principale. En supposant que le gestionnaire de la mémoire connaît la taille de la mémoire à allouer, voici quelques algorithmes utilisés : Le fonctionnement théorique d’un système d’exploitation Dr Guy Page a)L’algorithme de la première zone libre (first fit) Le gestionnaire parcourt la liste des segments à la recherche de la première zone libre qui peut contenir le processus. Cette zone est scindée en 2 parties. La première contient le processus et la deuxième, l’espace mémoire inutilisé (sauf si le processus à exactement la même taille que la zone). Cet algorithme est rapide puisqu’il y’a très peu de recherche. b) L’algorithme de la zone libre suivante (next fit) Cet algorithme est identique au précédent mais, ici, on mémorise en plus la position de l’espace libre trouvé. La recherche suivante commencera à partir de cette position et non à partir du début. c) L’algorithme du meilleur ajustement (best fit) On recherche dans toute la liste la plus petite zone libre qui convient. On évite alors de fractionner une grande zone dont on pouvait avoir besoin ultérieurement. L’algorithme du meilleur ajustement est plus lent que celui de la première zone libre puisqu’il doit parcourir à chaque appel toute la liste chaînée. Ce qui est plus étonnant c’est qu’il fait perdre plus de place mémoire que l’algorithme de la première zone libre ou de la zone libre suivant car il tend à remplir la mémoire avec des petites zones libres inutilisables. L’algorithme de la première zone libre engendre des zones plus grandes en moyenne. d) L’algorithme du plus grand résidu (worst fit) Cet algorithme consiste à prendre toujours la plus grande zone libre disponible pour que la zone libre restante soit la plus grande possible. e)L’algorithme de placement rapide (quick fit) Cet algorithme utilise des listes séparées pour les tailles les plus courantes. Il peut par exemple utiliser une table de N entrées où la première entrée pointe sur la tête d’une liste chaîne de zone 4ko, la seconde sur la tête d’une liste chaîne de zone 8ko, etc. 3.4 - uploads/Industriel/ objectif-23-allouer-la-memoire.pdf

  • 37
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager