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.
Es ist nicht in Ordnung, Duplikate zu veröffentlichen, nur weil Sie noch keine Antworten haben. –
ok. Die gleiche alte Post gelöscht. –