Différence entre les adresses logiques et physiques?
je suis en train de lire le concept des systèmes D'exploitation et je suis sur le 8ème chapitre! Toutefois, je pourrais avoir besoin de quelques clarifications, ou de l'assurance que ma compréhension est correcte.
adresses logiques: les adresses logiques sont générées par le CPU, selon le livre. Qu'est-ce exactement est-ce à dire? (Dans un système d'adresses généré par exécution..) Je suppose que lorsque le code est compilé pour un programme, le programme a aucun idée de l'endroit où le code sera chargé en mémoire. Tout le compilateur n'est défini une esquisse générale de la mise en page du programme et de la façon dont l'image doit être présentée, mais ne lui attribue pas d'adresse réelle. Quand le programme est exécuté le CPU prend cette image de mise en page que le compilateur a faite et distribue quelques adresses (logiques) à celles générées par le code.
adresses physiques: les adresses physiques ne sont pas générées avant que le CPU ne génère un ensemble d'adresses logiques (consistant en une adresse de base et un offset). Les adresses logiques passez par le MMU ou un autre périphérique et quelque part le long de la ligne les adresses logiques sont mappées en adresses RAM physiques.
Quelle est donc la différence réelle? Je peux voir un avantage. L'utilisation d'adresses logiques donne plus de liberté aux applications. Si les adresses physiques étaient codées en dur, le succès du programme dépendrait fortement de la machine informatique physique, des adresses de RAM disponibles, etc.
Ne pas utiliser des adresses logiques converti physique adresse imposer deux étapes au lieu d'un à un, et donc plus sur la tête?
alors, où résident les adresses logiques après la génération? Ils peuvent exister dans un registre sur la CPU alors que la CPU est au service d'un processus, mais avant et après, où vont-ils? Je comprends que cela dépend de la mise en œuvre. Je suppose qu'ils peuvent être stockés dans un espace de registre spécial ou un tampon sur le CPU tel QU'un TLB, correct? Si non, alors la table peut exister dans la RAM elle-même, et le CPU contient seulement un pointeur / adresse à l'adresse de base de la table en RAM, correct?
il semble que la conservation des adresses en mémoire vive est contre-productive au but des adresses mémoire logiques. Je ne peux que supposer que ma compréhension est erronée.
8 réponses
Cette réponse n'est pas exhaustive, mais elle peut l'expliquer assez pour rendre les choses sur.
dans les systèmes de mémoire virtuelle, il y a une déconnexion entre les adresses logiques et physiques.
une application peut recevoir un espace d'adresse virtuel de (disons) 4G. C'est sa mémoire utilisable et il est libre de l'utiliser comme bon lui semble. C'est un beau bloc contigu de mémoire (du point de vue de l'application).
Toutefois, il n'est pas le application en cours d'exécution, et L'OS doit servir de médiateur entre tous. Sous ce joli modèle contigu, il y a beaucoup de mapping en cours pour convertir les adresses logiques en adresses physiques.
avec ce mapping, le système D'exploitation et le matériel (je les appellerai simplement les couches inférieures à partir de Maintenant) sont libres de mettre les pages de l'application n'importe où (soit dans la mémoire physique, soit dans un stockage secondaire).
lorsque l'application essaie d'accéder à la mémoire l'adresse logique 50, les niveaux inférieurs peuvent traduire cela à une adresse physique en utilisant des tables de traduction. Et, s'il essaie d'accéder à la mémoire logique qui a été échangée sur un disque, une erreur de page est soulevée et les niveaux inférieurs peuvent ramener les données pertinentes dans la mémoire, à tout ce que physique adresse qu'il veut.
dans les mauvais vieux jours où les adresses physiques étaient tout ce que vous aviez, le code a dû être relocalisable (ou fixé sur le chargement) car il pouvait charger n'importe où. Avec virtuel mémoire, ce code (et les données) peut être à l'emplacement de mémoire logique 50 dans une douzaine de processus différents en même temps - il est réel physique adresse sera différent cependant.
il peut même être partagé de sorte qu'un physique copier existe dans l'espace d'adressage de nombreux processus à la fois. C'est l'essentiel du code partagé (donc nous n'utilisons pas plus de mémoire physique que nous n'en avons besoin) et de la mémoire partagée pour permettre une communication facile entre les processus).
Il est, de bien sûr, moins efficace qu'un environnement purement physique-adresse, mais les fabricants de CPU essaient de le rendre aussi incroyablement efficace que possible, car il est utilisé massivement. Les avantages loin l'emporte sur les inconvénients.
l'adresse logique est l'adresse relative au programme .Il indique combien de mémoire un processus particulier prendra,ne pas dire ce qui sera l'emplacement exact du processus et cet emplacement exact sera nous généré en utilisant une certaine cartographie, et est connu sous le nom d'adresse physique
adresse logique: - adresse logique générée par le CPU . quand nous sommes donner le problème à l'ordinateur puis notre ordinateur passer le problème au processeur par l'adresse logique , que nous ne sommes pas vu cette adresse appelée adresse logique .
adresse physique: - lorsque notre processeur crée un processus et résout notre problème, nous stockons les données dans la mémoire secondaire par l'adresse appelée adresse physique
- une adresse générée par le CPU est communément appelée adresse logique. L'ensemble de toutes les adresses logiques générées par un programme est connu sous le nom d'espace d'adresse logique. Alors qu'une adresse vue par l'unité mémoire - c'est-à - dire celle chargée dans le registre d'adresses mémoire de la mémoire-est communément appelée adresse physique. L'ensemble de toutes les adresses physiques correspondant aux adresses logiques est connu comme l'adresse physique de l'espace.
- le temps de compilation et les méthodes de liaison d'adresse charge-temps génèrent des adresses logiques et physiques identiques. Cependant, dans le schéma d'exécution-temps de liaison d'adresse, les espaces logiques et physiques d'adresse diffèrent.
- Le programme utilisateur ne voit jamais les adresses physiques. Le programme crée un pointeur vers une adresse logique, disons 346, le stocke en mémoire, le manipule, le compare à d'autres adresses logiques - tout comme le nombre 346. Seulement quand une adresse logique est utilisée comme adresse de mémoire, il est déplacé par rapport au registre de base/réinstallation. Le dispositif matériel de cartographie de mémoire appelé Unité de gestion de la mémoire (MMU) convertit les adresses logiques en adresses physiques.
- Les adresses logiques varient de 0 à max. Le programme utilisateur qui génère l'adresse logique pense que le processus s'exécute dans les emplacements 0 à max. Les adresses logiques doivent être mises en correspondance avec les adresses physiques avant d'être utilisées. Les adresses physiques varient de (R+0) à (R + max) pour une valeur de base / registre de réinstallation R.
- Exemple: Mise en correspondance des adresses logiques et physiques à l'aide de l'Unité de gestion de la mémoire (UGM) et du registre de réinstallation/base La valeur dans le registre de réinstallation / base est ajoutée à chaque adresse logique générée par un processus utilisateur, au moment où il est envoyé à la mémoire, pour générer l'adresse physique correspondante. Dans la figure ci-dessus, la valeur de base/ relocation est de 14000, puis une tentative par l'utilisateur d'accéder à l'emplacement 346 est mappé à 14346.
Logique Vs Adresse Physique de l'espace
une adresse générée par le CPU est généralement arbitrée comme adresse logique,alors que l'adresse vue par l'unité mémoire,c'est-à-dire celle chargée dans le registre d'adresses mémoire de la mémoire est communément arbitrée comme adresse physique.La liaison temps de compilation et temps de chargement génère des adresses logiques et physiques identiques.Toutefois, le schéma contraignant d'adresse d'exécution entraîne des différences logiques et physiques adresse.
l'ensemble de toutes les adresses logiques générées par un programme est connu sous le nom D'Espace D'adresse logique,alors que l'ensemble de toutes les adresses physiques correspondant à ces adresses logiques est L'Espace D'adresse physique.Maintenant, le mappage du temps d'exécution de l'adresse virtuelle à l'adresse physique est fait par un dispositif matériel connu sous le nom D'Unité de gestion de mémoire.Ici, dans le cas de la cartographie, le registre de base est connu sous le nom de registre de réinstallation.La valeur dans le registre de réinstallation est ajoutée à l'adresse généré par un processus utilisateur au moment où il est envoyé à la mémoire.Comprenons cette situation à l'aide d'un exemple:si le registre de base contient la valeur 1000,alors une tentative de l'utilisateur d'adresser l'emplacement 0 est déplacée dynamiquement à l'emplacement 1000,un accès à l'emplacement 346 est mappé à l'emplacement 1346.
le programme utilisateur ne voit jamais l'espace d'adresse physique réel,il traite toujours avec les adresses logiques.Comme nous avons deux types différents d'adresses adresse logique dans le fourchette (0 à max) et adresses physiques dans la fourchette(R à R+max) où R est la valeur du registre de délocalisation.L'utilisateur ne génère que des adresses logiques et pense que le processus s'exécute dans l'emplacement de 0 à max.Comme il ressort clairement du texte ci-dessus que le programme utilisateur ne fournit que des adresses logiques,ces adresses logiques doivent être mappées à l'adresse physique avant d'être utilisées.
Une adresse logique est une référence à l'emplacement de la mémoire indépendante de l'affectation actuelle de données en mémoire. Une adresse physique ou absolue est un emplacement réel dans la mémoire principale.
pour le meilleur de ma mémoire, une adresse physique est une adresse explicite, fixée en pierre dans la mémoire, alors qu'une adresse logique se compose d'un pointeur de base et d'un offset.
la raison est telle que vous l'avez essentiellement spécifiée. Il permet non seulement la segmentation des programmes et des processus en threads et données, mais aussi le chargement dynamique de ces programmes, et la prise en compte d'au moins pseudo-parallélisme, sans entrelacement réel des instructions en mémoire devant prendre lieu.
une adresse logique est l'adresse à laquelle un élément (cellule mémoire, élément de stockage, hôte réseau) semble résider du point de vue d'un programme d'application d'exécution.