web-dev-qa-db-fra.com

Différence entre l'adressage physique et le concept d'adressage virtuel

Il s'agit d'une nouvelle soumission, car je ne reçois aucune réponse de superuser.com. Désolé pour le malentendu.

J'ai besoin de connaître la différence entre l'adressage physique et le concept d'adressage virtuel dans les systèmes embarqués.

Pourquoi le concept d'adressage virtuel est implémenté dans les systèmes embarqués?

Quel est l'avantage de l'adressage virtuel sur un système avec concept d'adressage physique dans les systèmes embarqués?

Comment le mappage entre l'adressage virtuel et l'adressage physique est-il effectué dans les systèmes embarqués?

Veuillez expliquer le concept ci-dessus avec quelques exemples simples dans une architecture simple.

24
Renjith G

L'adressage physique signifie que votre programme connaît réellement la disposition réelle de la RAM. Lorsque vous accédez à une variable à l'adresse 0x8746b3, c'est là qu'elle est vraiment stockée dans les puces physiques RAM.

Avec l'adressage virtuel, tous les accès à la mémoire d'application vont à une table de pages, qui est ensuite mappée de l'adresse virtuelle à l'adresse physique. Ainsi, chaque application possède son propre espace d'adressage "privé", et aucun programme ne peut lire ou écrire dans la mémoire d'un autre programme. C'est ce qu'on appelle segmentation .

L'adressage virtuel présente de nombreux avantages. Il protège les programmes contre les pannes les uns des autres par une mauvaise manipulation du pointeur, etc. Parce que chaque programme a son propre jeu de mémoire virtuelle distinct, aucun programme ne peut lire les données d'un autre - c'est à la fois une sécurité et un plus. La mémoire virtuelle active également la pagination , où un programme physique RAM peut être stocké sur un disque (ou, maintenant, plus lentement flash) lorsqu'elle n'est pas utilisée, puis rappelée lorsqu'une application tente d'accéder à la page. En outre, étant donné qu'un seul programme peut résider sur une page physique particulière, dans un système de radiomessagerie physique, soit a) tous les programmes doivent être compilés pour se charger à différentes adresses mémoire ou b) chaque programme doit utiliser un code indépendant de la position, ou c) certains ensembles de programmes ne peuvent pas s'exécuter simultanément.

Le mappage physique-virtuel peut être effectué en logiciel (avec prise en charge matérielle des interruptions de mémoire) ou en matériel pur. Parfois, même les tables de pages elles-mêmes se trouvent sur un ensemble spécial de mémoire matérielle. Je ne sais pas du haut de ma tête quel système embarqué fait quoi, mais chaque bureau a un TLB matériel (Translation Lookaside Buffer, essentiellement un cache pour les mappages virtuels-physiques) et certains ont maintenant des unités de mappage de mémoire avancées qui aident à machines virtuelles et similaires.

Les seuls inconvénients de la mémoire virtuelle sont une complexité accrue dans la mise en œuvre matérielle et des performances plus lentes.

48
Borealid

Le VAX (Virtual Address développé par Digital Equipment Corp qui est devenu Compaq, qui est devenu HP) est un très bon exemple de système matériel virtuel intégré. Il s'agissait d'un mini-ordinateur 32 bits doté d'un système d'exploitation appelé VMS ou Virtual Memory Systems. Dave Cutler était l'un des principaux architectes des systèmes et il a écrit beaucoup plus tard le Kernal pour Windows NT. Il est une très bonne lecture pour cela et d'autres choses. Le Vax avait un matériel spécial pour le contrôle de l'espace virtuel et le contrôle de l'accès opcode pour la sécurité via le matériel ... très sécurisé. Ce système était ou est le grand-père du PC de jour moderne au niveau Kernal. Le premier BSOD que j'ai vu sur WNT 3.51, j'ai pu le lire car il provenait du vidage sur incident utilisé dans VMS pour arrêter le système lorsqu'il était instable. En passant Regardez le nom VMS et WNT et vous trouverez les lettres suivantes dans l'alhabet de VMS qui font le terme WNT. Ce n'était pas un accident. peut-être un coup au DEC pour l'avoir laissé partir.

1
MarkC