Je suis lisible le livre d'exploitation de Galvin. Dans l'adresse de la gestion de la mémoire, la liaison de la liaison indiquée sur 3 types de liaison d'adresse. Compiler l'heure, le temps de chargement, l'heure d'exécution. Et à propos de la liaison d'adresse de temps d'exécution: "L'adresse physique est calculée au moment de l'exécution." Mais ma question est que ces calculs pour l'adresse physique concernent l'adresse de base de la mémoire de charger le processus dans la mémoire. Pour exécuter le processus d'abord, il doit être chargé en mémoire. Pour cela, cela nécessite une certaine adresse de mémoire physique. Ensuite, comment l'heure d'exécution ces adresses sont-elles calculées? Je suis confus. P>
Certains peuvent-ils fournir une explication à cela. P>
merci p>
3 Réponses :
Lorsqu'il est indiqué que l'adresse de base réelle est générée à l'heure d'exécution, cela signifie que l'adresse de la RAM (adresse physique) est déterminée à l'heure d'exécution de l'adresse virtuelle à l'aide de la MMU. Cette conversion d'adresse complète est effectuée à la volée. Pour exécuter le processus, l'adresse virtuelle de départ doit être connue. Lorsque le processus doit être exécuté, sa table de page virtuelle est chargée dans la MMU, puis la MMU calcule rapidement l'adresse physique (en RAM) et l'exécution passe avec des adresses physiques génératrices de MMU des tables de page. Envisagez de lire les systèmes d'exploitation modernes de Tanenbaum. Je le trouve mieux. P>
Vous êtes correct dans votre pensée. La différence entre la liaison de charge de charge et de temps d'exécution est que, dans le temps d'exécution à chaque fois qu'il existe une recherche de mémoire, il passe par un "registre de relocalisation" qui ressemble au registre de base, puis vous ajoutez un décalage. P>
Dans la liaison de temps de charge, il fait la même chose que les recherches ultérieures ne nécessitent pas d'évaluation de ce registre. Les adresses sont définies lorsqu'elles sont d'abord tirées dans la mémoire. Par conséquent, si l'adresse de base change vous devez recharger l'ensemble du processus pour réparer toutes les adresses relocatables. P>
Dans le cas du temps d'exécution, vous pouvez déplacer le processus dans la mémoire physique et ne pas avoir besoin de vous soucier de la ré-charger pour réparer le mappage de la cartographie car chaque fois qu'il y a un accès à la mémoire, il le mappe alors. < / p>
La liaison de temps de charge entraîne des résultats associés à des adresses logiques / physiques, mais le temps d'exécution entraîne des adresses logiques / physiques différentes. P>
J'espère que cela est plus clair pour vous. Je viens de commencer à apprendre la gestion de la mémoire :) p>
La liaison d'adresse de temps d'exécution ne s'applique généralement qu'aux variables dans les programmes et constitue la forme la plus courante de liaison pour les scripts, qui ne sont pas compilées. Dans ce scénario, le programme demande un espace mémoire pour une variable dans un programme la première fois que la variable est rencontrée lors du traitement des instructions du script. La mémoire sera attribuée à cette variable jusqu'à la fin de la séquence de programme, ou si une instruction spécifique dans le script libère l'adresse de la mémoire lié à une variable. P>