2010-07-14 8 views
18

Dies ist eine Neuanmeldung, weil ich keine Antwort von superuser.com bekomme. Entschuldigen Sie das Missverständnis.Unterschied zwischen physikalischer Adressierung und virtuellem Adressierungskonzept

Ich muss den Unterschied zwischen physikalischer Adressierung und virtuellem Adressierungskonzept in eingebetteten Systemen kennen.

Warum virtuelles Adressierungskonzept in eingebetteten Systemen implementiert ist?

Welchen Vorteil hat die virtuelle Adressierung gegenüber einem System mit physikalischem Adressierungskonzept in eingebetteten Systemen?

Wie erfolgt die Zuordnung zwischen virtueller Adressierung und physischer Adressierung in eingebetteten Systemen?

Bitte erläutern Sie das obige Konzept mit einigen einfachen Beispielen in einer einfachen Architektur.

+1

Es ist nicht in Ordnung, Duplikate zu veröffentlichen, nur weil Sie noch keine Antworten haben. –

+9

ok. Die gleiche alte Post gelöscht. –

Antwort

40

Physikalische Adressierung bedeutet, dass Ihr Programm das tatsächliche Layout des Arbeitsspeichers tatsächlich kennt. Wenn Sie auf eine Variable mit der Adresse 0x8746b3 zugreifen, wird sie in den physischen RAM-Chips gespeichert.

Bei der virtuellen Adressierung werden alle Anwendungsspeicherzugriffe auf eine Seitentabelle übertragen, die dann von der virtuellen zur physischen Adresse mappt. Daher hat jede Anwendung ihren eigenen "privaten" Adressraum und kein Programm kann in den Speicher eines anderen Programms schreiben oder lesen. Dies wird Segmentierung genannt.

Die virtuelle Adressierung hat viele Vorteile. Es schützt Programme davor, sich gegenseitig durch schlechte Zeigermanipulation usw. zu stürzen. Da jedes Programm seinen eigenen virtuellen Speicher hat, kann kein Programm die Daten eines anderen lesen - dies ist sowohl ein Sicherheits- als auch ein Sicherheitsplus. Virtueller Speicher ermöglicht auch Paging, wo der physische RAM eines Programms auf einer Festplatte (oder jetzt langsamer Flash) gespeichert werden kann, wenn nicht verwendet, dann zurückgerufen, wenn eine Anwendung versucht, auf die Seite zuzugreifen. Da nur ein Programm auf einer bestimmten physikalischen Seite residieren kann, müssen in einem physischen Paging-System entweder a) alle Programme kompiliert sein, um an unterschiedliche Speicheradressen zu laden, oder b) jedes Programm positionsunabhängigen Code verwenden oder c) einige Programme können nicht gleichzeitig ausgeführt werden.

Das physisch-virtuelle Mapping kann in Software (mit Hardware-Unterstützung für Speicher-Traps) oder in reiner Hardware erfolgen. Manchmal befinden sich sogar die Seitentabellen selbst auf einem speziellen Satz von Hardwarespeicher. Ich weiß nicht von Anfang an, welches Embedded System was leistet, aber jeder Desktop hat einen Hardware-TLB (Translation Lookaside Buffer, im Grunde ein Cache für die Virtual-Physical Mappings) und einige haben jetzt erweiterte Memory Mapping Units, die dabei helfen virtuelle Maschinen und dergleichen.

Die einzigen Nachteile des virtuellen Speichers sind zusätzliche Komplexität in der Hardware-Implementierung und langsamere Leistung.

+0

"Jede Anwendung hat ihren eigenen" privaten "Adressraum und kein Programm kann in den Speicher eines anderen Programms schreiben oder lesen" Aber die MMU ordnet jede virtuelle Adresse der entsprechenden physikalischen Adresse zu, oder? Wenn die Programme die virtuelle Adresse verwenden, dann greift sie implizit auf denselben physischen Speicherbereich zu? /renjith_g –

+4

@Renjith G: Im Allgemeinen wird eine bestimmte physikalische Seite nur dem virtuellen Bereich einer Anwendung zugeordnet, sodass die Programme nicht miteinander interferieren können. Wenn Sie explizit freigegebenen Speicher zuweisen, werden die virtuellen Seiten von zwei verschiedenen Anwendungen derselben Seite zugeordnet. Im Allgemeinen sind die physischen Seitengruppen der Anwendungen jedoch nicht zusammenhängend. Die Zuordnung von virtuell zu physisch ist ** pro Anwendung ** und der TLB wird geleert, wenn Sie einen Kontextwechsel vornehmen. – Borealid

+0

Aber, wenn die zwei Anwendungen direkt auf die DMA/UART/Any h/w Steuerkontrollregister zugreifen (angenommen, dass die virtuelle Adressierung aktiviert ist)? Die Programme wurden gestört richtig? Auch wo kann ich die Mapping s/w virtuelle und physische Speicheradressierung sehen? (Ich meine MMU Seitentabelle?) –

1

Die VAX (virtuelle Adresse, die von Digital Equipment Corp, die zu Compaq wurde, wurde HP) ist ein sehr gutes Beispiel für ein virtuelles embedded Hardware-System. Es war ein 32-Bit-Mini-Computer, der ein Betriebssystem namens VMS oder Virtual Memory Systems hatte. Dave Cutler war einer der Hauptarchitekten der Systeme und er schrieb viel später den Kernel für Windows NT. Er ist ein sehr guter Leser für diese und andere Sachen. Der Vax hatte spezielle Hardware für die Kontrolle des virtuellen Raums und die Kontrolle des Opcode-Zugriffs für die Sicherheit durch Hardware ... sehr sicher. Dieses System war oder ist der Großvater des Modfern-PC auf der Kernal-Ebene. Der erste BSOD, den ich auf WNT 3.51 gesehen habe, konnte ich lesen, weil er aus dem in VMS verwendeten Crash-Dump stammt, um das System zu stoppen, wenn es instabil ist. By te way Sieh dir den Namen VMS und WNT an und du findest die nächsten Buchstaben im alhabet von VMS macht den Begriff WNT. Dies war kein Zufall.vielleicht einen Stoß bei DEC, um ihn gehen zu lassen.

Verwandte Themen