Seite 1 von 1

Virtuelle Adresse

Verfasst: 22. Mär 2009 11:44
von itportal2
Da jedes Programm seinen eigenen Adressraum hat, heißt es, dass 2 verschidene Programme die gleiche virtuelle Adresse haben können, die sich auf verschiedene Physikalische Adressen abbilden, oder? In der Vorlesung wird das nur erwähnt, aber wird der Fall betrachtet, wenn die virtuelle Adressen einzigartig für das ganze System sind. Habe ich es richtig verstanden?

Re: Virtuelle Adresse

Verfasst: 22. Mär 2009 12:24
von levitin
CPU erzeugt immer "gleiche" virtuelle Adressen. Virtuelle Seitennummer entspricht dabei einem Index der Seitentabelle. Mit Offset erfolgt sich die Navigation in der Seite. Die Frage ist jetzt, woher weiss CPU, dass er auf die richtige Seitentabelle zugreifft (gibt's ja mehrere). Antwort: es gibt ein Seitentabellenregister, der vom BS an den Anfang einer aktuellen Seitentabelle gesetzt wird als der Prozess zu einem aktiven wechselt.

Re: Virtuelle Adresse

Verfasst: 22. Mär 2009 12:33
von itportal2
Das ist mir klar. Aber stell dir vor, wenn du 2 Prozesse hast und jeder seine eigene Seitentabelle hat. Dann hast du noch ein TLB. 2 Prozesse haben die gleiche virtuelle Adressen, die eigene Seitentabellen geben anhand der virtuellen Adress die physikalische Adressen, die natürlich unterschidlich sind. Jetzt kommt die Frage - was wird in der TLB gespeichert? :)

Re: Virtuelle Adresse

Verfasst: 22. Mär 2009 15:01
von Tigger
Im tlb werden die zuletzt benutzen virtuellen und realen Speicheradressen zwischengespeichert. Der TLB ist quasi ein Cache für die Seitentabelle. Interessant ist allerdings was passiert, wenn ein Prozesswechsel stattfindet. So wie ich das sehe muss der TLB dann reseted werden, damit er nicht noch Zuweisungen des alten Prozesses enthält.

Re: Virtuelle Adresse

Verfasst: 22. Mär 2009 15:21
von xAx
in den folien steht, der "TLB wird mit der virtuellen Seitennummer adressiert.". Stimmt das überhaupt?

Re: Virtuelle Adresse

Verfasst: 22. Mär 2009 15:33
von itportal2
On a task switch, some TLB entries can become invalid, since for example the previously running process had access to a page, but the process to run has not. The simplest strategy to deal with this is to completely flush the TLB. Newer CPUs have more efficient strategies; for example in the Alpha EV6, each TLB entry is tagged with an "address space number" (ASN), and only TLB entries with an ASN matching the current task are considered valid.

Re: Virtuelle Adresse

Verfasst: 22. Mär 2009 15:38
von itportal2
xAx hat geschrieben:in den folien steht, der "TLB wird mit der virtuellen Seitennummer adressiert.". Stimmt das überhaupt?
Eigentlich ja, es werden aber nicht alle Bits für den Index benötigt. Es sieht wie ein Direct Mapped Cache. Siehe Kap 4, Teil 2, Folie 30.

Re: Virtuelle Adresse

Verfasst: 22. Mär 2009 15:42
von xAx
widerspruch dazu, dass ein tlb voll assoziativ ist?

Re: Virtuelle Adresse

Verfasst: 22. Mär 2009 15:49
von itportal2
Ach, sorry, habs übersehen. Es soll doch vollassoziativ sein. Wahrscheinlich ist mit "adressiert" gemeint, dass man anhand der virt. Seitennummer den entsprechenden Eintrag findet (durch Vergleich, wie es beim Vollassoziativen Caches gemacht wird).

Re: Virtuelle Adresse

Verfasst: 22. Mär 2009 15:50
von Steven
In den Folien steht zwar klar, dass der TLB vollaossiziativ ist (Folie 33 in Kapitel 4 Teil 2), andererseits steht dort auch, dass der Tag nur einen Teil der virtuellen Seitennummer enthält (Folie 29 ebda). Das passt meines Erachtens nicht zusammen: Für einen vollassoziativen Cache müsste ich doch bei jedem Eintrag die gesamte vituelle Seitennummer vergleichen, um den passenden Eintrag zu finden, oder?

Re: Virtuelle Adresse

Verfasst: 22. Mär 2009 15:56
von itportal2
Im Buch steht, dass der TLB vollassoziativ ist.