Tutoriels recommandés : FAQ
Introduction
Dans la gestion de la mémoire, la méthode d'allocation continue formera de nombreux "fragments". Bien que de nombreux fragments puissent être fusionnés dans un grand espace utilisable grâce à la méthode "compacte", cela doit être Payez beaucoup de dépenses.
Si un processus peut être chargé directement dans de nombreuses partitions non adjacentes, il n'est pas nécessaire de le "compacter". C'est sur la base de cette idée qu'a été élaborée la méthode d'allocation discrète. Si l'unité de base d'allocation discrète est une page, on parle de méthode de gestion du stockage de pagination . Dans le mode de gestion du stockage de pagination, s'il n'a pas la fonction d'échange de page, on l'appelle le mode de gestion du stockage de pagination de base , ou on l'appelle le mode de gestion du stockage de pagination pur. Il n'a pas la fonction. de prendre en charge la mise en œuvre de la mémoire virtuelle. Chaque tâche doit être chargée en mémoire avant de pouvoir être exécutée.
Pourquoi le stockage des pages est nécessaire
Pendant le processus d'allocation de mémoire, la méthode d'allocation continue est susceptible de produire un grand nombre de fragments, bien que il peut être "compacté". Organisez-le, mais cela nécessite beaucoup de frais généraux.
Par conséquent, si la mémoire logique continue peut être dispersée et allouée sur plusieurs mémoires physiques qui peuvent être déconnectées pendant l'allocation de mémoire du processus, alors les gros morceaux de fragments initialement gaspillés seront utilisés. taille maximale des fragments indisponibles (à la taille de la page, car si la taille du fragment dépasse la taille de la page, il sera exploitable) et améliorer l'utilisation de la mémoire. Sur la base de cette idée, la méthode d'allocation discrète est produite. Si l'unité de base d'allocation discrète est une page, elle est appelée méthode de gestion du stockage de pagination ; si elle n'a pas la fonction d'échange de page, il s'agit d'une méthode de gestion de stockage de pagination de base ; .
Concepts de base
Page
La méthode de gestion du stockage de pagination combine les adresses logiques continues de le processus L'espace est divisé en plusieurs tranches d'adresse de taille égale, appelées pages ou pages. Et numérotez-les, comme la page 0, la page 1. Logiquement, les adresses de ces pages sont contiguës, mais leurs adresses de blocs physiques correspondantes peuvent être discontinues. Les blocs physiques correspondants sont également nommés bloc 0, bloc 1, etc. en conséquence. Lorsqu'un processus alloue de la mémoire, plusieurs pages du processus sont chargées respectivement dans les blocs physiques correspondants. Étant donné que la dernière page n'est souvent pas pleine, une fragmentation intra-page se forme qui ne peut pas être utilisée
Utilisation de la méthode de gestion du stockage par pagination. Le but est d'utiliser davantage la fragmentation de la mémoire. Par conséquent, la taille de la page est relativement plus petite que la taille de l'espace d'adressage requis par un processus normal. Alors, quelle est la taille appropriée de la page ? Si la page est trop petite, bien que cela puisse réduire la taille maximale des fragments indisponibles dans la mémoire et améliorer l'utilisation de l'espace mémoire, le processus occupera également trop de pages, ce qui rendra la table des pages trop longue et réduira l'efficacité. d'échange de pages entrantes et sortantes. De même, si la page est trop volumineuse, même si cela améliore l’efficacité de l’échange de pages, cela augmentera également la fragmentation de la mémoire. Par conséquent, selon l’expérience, la taille de page optimale est d’environ 512 Go à 8 Ko.
Table des pages
La table des pages est un espace d'adressage maintenu dans le processus, qui stocke la relation de mappage entre les pages et les blocs physiques. Avant de discuter d'abord de la table des pages. comprendre Effacer la structure de l'adresse dans la pagination.
Pour l'espace d'adressage physique, l'espace d'adressage mémoire total est fixe. Pour un processus, l'espace mémoire logique alloué est également fixe et continu. L'espace d'adressage logique commence à 0. Supposons que l'adresse logique d'un octet dans un processus soit 1088B et que la taille de la page soit 512B. Comme mentionné lors de l'introduction de la page, bien que l'espace d'adressage logique soit divisé en plusieurs pages, les adresses logiques de ces pages restent continues. Nous pouvons alors connaître le numéro de page P = 2 (à partir de 0) auquel appartient l'octet, et l'adresse de la page d = (1088 - 512 * 2) = 64.
C'est-à-dire que lorsque la longueur de la page est connue, le numéro de page auquel appartient l'espace d'adressage et l'adresse relative dans la page peuvent être simplement connus sur la base de l'adresse logique. Sur la base de ces deux paramètres et de la table des pages, l'adresse physique correspondant à l'adresse peut être connue.
La table des pages est une table utilisée pour mapper les pages et les blocs physiques, comme indiqué ci-dessous :
Via la table des pages et numéro de page, nous connaissons le numéro de bloc physique, et nous connaissons également l'adresse de départ de l'espace de bloc physique correspondant. Couplée à l'adresse sur la page, l'adresse physique correspondante est connue. De cette manière, nous sommes en mesure de réaliser la conversion d’une adresse logique en adresse physique.
Traduction d'adresse
L'introduction du concept de base ci-dessus présente brièvement le principe de la traduction d'adresses. Examinons le processus spécifique en détail.
Comme mentionné ci-dessus, le mappage du numéro de page au numéro de bloc physique est trouvé en recherchant dans la table des pages. Alors, où est stockée la table des pages et comment trouver la table des pages ? ?
La table de pages peut être implémentée via un ensemble de registres. Chaque registre stocke une entrée de table de pages. La vitesse d'accès du registre étant rapide, elle peut augmenter la vitesse de traduction des adresses de la table de pages. Cependant, le coût du registre est élevé et les entrées de la table des pages dans la table des pages peuvent être très volumineuses, atteignant des centaines ou des milliers d'entrées. Par conséquent, les tables de pages sont généralement stockées en mémoire. Dans le système, un seul registre de table de pages PTR est défini pour stocker l'adresse de début et la longueur de la table de pages en mémoire. Normalement, lorsque le processus n'est pas exécuté, l'adresse de départ et la longueur de la table des pages sont stockées dans le PCB de ce processus. Lorsque le planificateur planifie un processus, ces deux données sont chargées dans le registre de la table des pages. Par conséquent, dans un environnement monoprocesseur, bien que plusieurs processus puissent s'exécuter dans le système, un seul registre de table de pages est nécessaire (c'est-à-dire que lorsque plusieurs processus s'exécutent en même temps, les données de la table de pages de plusieurs processus doivent être stockées). séparément) .
Lorsqu'un processus souhaite accéder aux données dans une certaine adresse logique, le mécanisme de conversion d'adresse de pagination divisera automatiquement l'adresse effective (adresse relative) en deux parties, le numéro de page et l'adresse interne, puis utilisera le numéro de page comme index. Avant d'effectuer la récupération, comparez le numéro de page avec la longueur de la table des pages. Si le numéro de page est supérieur ou égal à la longueur de la table des pages, cela signifie que l'adresse accédée cette fois a dépassé l'espace d'adressage du processus. Ensuite, cette erreur sera détectée par le système et une interruption d'adresse hors limites sera générée. Si aucune erreur hors limites ne se produit, ajoutez l'adresse de début de la table des pages au produit du numéro de page et de la longueur de l'entrée de la table des pages pour obtenir la position de l'entrée dans la table des pages, puis obtenez l'adresse physique. numéro de bloc de la page à partir de celui-ci. En même temps, l'adresse de page dans le registre d'adresses effectif est envoyée au champ d'adresse de bloc du registre d'adresses physique. Ceci termine la conversion de l’adresse logique en adresse physique. La figure suivante montre le mécanisme de traduction d'adresses du système de radiomessagerie
Table rapide
Puisque la table des pages est plutôt stockée en mémoire que les registres, donc chaque fois que vous lisez une adresse, vous devez accéder à la mémoire deux fois. La première fois que vous accédez à la table des pages pour trouver le numéro de bloc physique, et la deuxième fois que vous accédez à l'adresse physique réelle pour obtenir les données. Par conséquent, l’adoption de cette approche réduira la vitesse de traitement de l’ordinateur de près de 1/2.
Afin d'améliorer l'efficacité de la traduction d'adresses, un ensemble de registres de cache spéciaux avec des capacités de recherche parallèles sont ajoutés au mécanisme de traduction d'adresses, également connu sous le nom de « Mémoire associative » (Mémoire associative) ou « Table rapide " , utilisé pour stocker les données d'entrée de table de pages actuellement consultées (similaire au cache, stockant les entrées de table de pages précédemment recherchées, améliorant l'efficacité de la conversion du numéro de page en numéro de bloc physique). De cette façon, le processus de traduction d'adresse devient comme indiqué ci-dessous :
Une fois que le processeur a obtenu l'adresse logique, le mécanisme de traduction d'adresse transmet le numéro de page à la table rapide pour l'interroger. le correspondant Si le numéro de bloc physique est trouvé, l'adresse physique sera trouvée directement en fonction de l'adresse dans la page d'accès aux données. Sinon, le numéro de bloc physique sera recherché de la manière normale et enregistré dans la table rapide à l'adresse. en même temps. Si la table rapide est pleine, le système supprimera automatiquement une entrée de la table de pages et la remplacera.
En bref, la table rapide est équivalente au cache d'entrée de la table des pages.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!