Fragen zum Paging

Gast #2460521
Lesenswert?

Hi Leute!

Ich hab hier eine Aufgabe zum "Paging" von Betriebssystemen.

Ein Computer stellt dem Benutzer einen virtuellen Speicher von 2^32 Byte 
zur Verfügung. Der PC hat 2^18 Byte physischen Speicher. Der virtuelle 
Speicher ist durch "Paging" implementiert und die Pagesize entspricht 
4096 Byte. Ein Benutzerprozess generiert nun die virtuelle Adresse 
11123456.

Zeigen sie nun auf, wie der PC die entsprechende physische Adresse 
ermittelt.


Ich hab hier nun erstmal so angefangen:

Die Pagesize ist ja 4096 byte groß und das entspricht 2^12 Byte. Was ich 
auch noch weiß ist, dass die Pagesize im physischen wie im virtuellen 
Speicher die gleiche Größe, also 4096 Byte, entspricht. Was ich auch 
noch verstanden habe, ist, dass das Betriebssystem die virtuelle Adresse 
vom virtuellen Speicher mit 2^32 Byte eben auf den physischen Speicher 
mit 2^18 Byte umlegen muss. Dazu ist es vielleicht Sinnvoll wenn man die 
virtuelle Adresse von Dezimal erstmal auf Hex umrechnet: 11123456 = 
E9AC8B.

Weiter weiß ich ehrlich gesagt nicht mehr. Ich weiß auch irgendwie gar 
nicht was ich bei dieser Aufgabe da jetzt noch alles berechnen soll!

Kann mir jemand helfen?
Gast #2460544
Lesenswert?

Zitat: "Hinweis: Frag dich mal, welche Teile der virtuelle Adresse 
A0..A31 hier welche Bedeutung haben."

11123456 = 0xE9AC8B = 101010011011101100000000

Gut. Wie man sehen kann ist die virtuelle Adresse genau 24 Bit lang. Der 
virtuelle Speicher hat aber 32 Bit. Das heißt bei meiner virtuellen 
Adresse fehlen doch auch erstmal 8 Bit, oder? Wenn ich nun die virtuelle 
Adresse von 24 Bit erstmal auf die 32 Bit "erweitern" möchte, sieht die 
ja dann so aus: 00000000101010011011101100000000. Stimmt das soweit?

(Ich nehme mal an, dass das höchstwertigste Bit ganz links steht.)

Die virtuelle Adresse wird meines Wissens nach in die Pagenumber und in 
den Offset unterteilt. Woher weiß ich aber nun zwischen welchen zwei 
Bits die Grenze von Pagenumber und Offset liegt?
#2460551
Lesenswert?

Hans Wurst schrieb:

> ja dann so aus: 00000000101010011011101100000000. Stimmt das soweit?

Ja.

> Die virtuelle Adresse wird meines Wissens nach in die Pagenumber und in
> den Offset unterteilt.

Richtig.

> Woher weiß ich aber nun zwischen welchen zwei
> Bits die Grenze von Pagenumber und Offset liegt?

Was würdest du denn vermuten, bzw. was käme dir logisch vor?
Gast #2460560
Lesenswert?

Jetzt im nachhinein ist's eigentlich klar, denn die Pagelänge ist mit 
2^12 BYTE (!) angegeben die virtuelle Adresse ist aber mit 24 BIT (!) 
angegeben; das kann nicht passen...

Zitat: "Was würdest du denn vermuten, bzw. was käme dir logisch vor?"

Ich denke mal, dass es irgendwas mit dem viruellen Speicher zu tun haben 
muss, oder? Aber 100%ig genau weiß ich es nicht...
#2460567
Lesenswert?

Hans Wurst schrieb:

> Jetzt im nachhinein ist's eigentlich klar, denn die Pagelänge ist mit
> 2^12 BYTE (!) angegeben die virtuelle Adresse ist aber mit 24 BIT (!)
> angegeben; das kann nicht passen...

Nix ist dir klar. Die Frage ändert sich auch dadurch nicht, dass sie mit 
der Angabe der virtuellen Adresse 0000000000000000000000000011123456 
gestellt wird. Führende Nullen werden zumindest bei dezimaler 
Schreibweise meistens weggelassen, ausser es ist das Who-is-Who eines 
Grosskonzerns.
#2460585
Lesenswert?

Mal etwas grundsätzlicher: Normalerweise kommen vor solchen Fragen 
irgendwelche Unterrichts/Vorlesungsstunden. Muss ich annehmen, das du 
eine längere Krankheit hinter dir hast und ohne jede Vorstellung von 
garnix nun im kalten Wasser schwimmst? (lies: komplett geschwänzt ;-)

Denn es sieht mir so aus, als ob du kaum eine Vorstellung davon hast, 
was eine Speicheradresse überhaupt ist. Und ob man bei Büchern immer 
erst den ersten Buchstaben der ersten Seite, dann den ersten Buchstaben 
der zweiten Seite usw liest, bevor man mit dem zweiten Buchstaben der 
ersten Seite weiter macht. Oder war das doch anders? (Hinweis: 
Seite=page)
Gast #2460592
Lesenswert?

Wenn ich dich beruhigen darf (sofern du es mir überhaupt glaubst) ich 
hab dieses Semester keine einzige Vorlesungsstunde ausfallen lassen / 
lassen müssen.

Naja, lassen wir das.

Die Pagesize entspricht ja 2^12 Byte. Kann es nun also sein, dass nach 
12 Bit die Grenze ist?
Gast #2460598
Lesenswert?

1
101010011011|101100000000

Die Pipe soll die Grenze mal markieren. Nehmen wir mal an die Pagesize 
wäre nur 2^10 Byte groß. Wie sieht dann die Grenze aus? Muss man da vom 
MSB oder vom LSB an dann abzählen? Im Beispiel hier ist das ja nicht so 
toll zu erkennen, da es ja die Hälfte ist. Da isses ja quasi egal von 
welcher Seite man anfängt!
#2460601
Lesenswert?

Hans Wurst schrieb:

> Wie sieht dann die Grenze aus? Muss man da vom
> MSB oder vom LSB an dann abzählen?

Zur Beantwortung dieser Frage hatte ich vorsorglich das Gleichnis mit 
dem Buch gebracht... 
Beitrag "Re: Fragen zum Paging"

> Im Beispiel hier ist das ja nicht so
> toll zu erkennen, da es ja die Hälfte ist.

Es schadet grad bei Hex/Binärdarstellung nicht, wenn man die führenden 
Nullen hinschreibt. Insbesondere wenn man sich andernfalls selbst 
verwirrt.
Gast #2460606
Lesenswert?

virtueller Adresse: 2^m = 2^24
Pagesize: 2^n = 2^12

Grenze von Pageoffset zu Pagenumber = n (quasi von rechts nach links 
gezählt)

Pagenumber : m - n (ebenfalls von rechts nach links gezählt nur beginnt 
das erste Bit nach dem letzten des Pageoffsets)

Soweit verständlich wie ich das gemeint habe?
Gast #2460615
Lesenswert?

Hm, shit.

00E9AC8B = 00000000111010011010110010001011

Jetzt hab ich 32 Bit für die virtuelle bzw. logische Adresse.

Pagesize = 4096 = 2^12 Byte, also muss ich von rechts nach links die 
ersten 12 Bit abzählen und dort die Grenze setzen, nicht wahr? Sieht 
dann so aus:

00000000111010011010|110010001011

Rechts von der Pipe Pageoffset links von der Pipe Pagenumber. Richtig?
Gast #2460644
Lesenswert?

Der physische Speicher ist 2^18 Byte groß. Also hat die Binärzahl der 
physischen Adresse maximal 18 Stellen, oder?

EDIT: Das ist eine Grundlagenvorlesung zu Betriebssysteme! 100%ige 
Details werden da nicht erwartet, denke ich!
#2460662
Lesenswert?

Hans Wurst schrieb:

> Der physische Speicher ist 2^18 Byte groß. Also hat die Binärzahl der
> physischen Adresse maximal 18 Stellen, oder?

Du und deine führenden Nullen... nicht "maximal" sondern "exakt". In 
diesem Beispiel hat auch die virtuelle Adresse 0 volle 32 Stellen/Bits 
und die physikalische Adresse 0 volle 18 Stellen/Bits.

> EDIT: Das ist eine Grundlagenvorlesung zu Betriebssysteme! 100%ige
> Details werden da nicht erwartet, denke ich!

Siehe Kepers erste Antwort. Ob das reicht, oder ob die "MMU" Box noch 
etwas genauer beleuchtet werden muss, das weiss nur die Vorlesung.
Gast #2460673
Lesenswert?

A. K. schrieb:
> Siehe Kepers Antwort. Ob das reicht, oder ob die "MMU" Box noch etwas
> genauer beleuchtet werden muss, das weiss nur die Vorlesung.

Da die MMU im wesentlichen ein Stück RAM ist gibt es dort eigentlich 
nicht besonders viel weiter zu beleuchten.

@Hans Wurst: Ich wünsche dir viel Spaß in der Vorlesung über 
Subnetzmasken.
#2460686
Lesenswert?

Keper schrieb:

> Da die MMU im wesentlichen ein Stück RAM ist gibt es dort eigentlich
> nicht besonders viel weiter zu beleuchten.

Bis auf die Tatsache, dass dieses RAM umso komplizierter wird, ja heller 
man es beleuchtet und je nach Betrachtungsweise nicht wirklich ein 
eigenes RAM ist, oder ein recht assoziativ adressiertes. Andernfalls 
wäre in der MMU mehr RAM drin als im Hauptspeicher.

> @Hans Wurst: Ich wünsche dir viel Spaß in der Vorlesung über
> Subnetzmasken.

Ich glaub er wird besser Theoretiker oder verlegt sich auf 
Computerlinguistik oder Homunkulusbau, wenns das heute noch gibt. ;-)
Gast #2460709
Lesenswert?

A. K. schrieb:
> Bis auf die Tatsache, dass dieses RAM umso komplizierter wird, ja heller
> man es beleuchtet und je nach Betrachtungsweise nicht wirklich ein
> eigenes RAM ist, oder ein recht assoziativ adressiertes. Andernfalls
> wäre in der MMU mehr RAM drin als im Hauptspeicher.

Das sind dann konkrete Implementierungen. Und in konkret implementierten 
64-Bit CPUs wird keine voller virtuellen 64-Bit Adressraum 
implementiert, z.b. die AMD Teile implementieren "nur" 48-Bit.

Hier noch anderes Bild: 
http://www.divms.uiowa.edu/~jones/assem/fall10/notes/14f/pdp11mmu.gif

Mann bin ich froh das ich mit 6502, 68K und 8088 angefangen habe.
#2460716
Lesenswert?

Keper schrieb:

> Das sind dann konkrete Implementierungen. Und in konkret implementierten
> 64-Bit CPUs wird keine voller virtuellen 64-Bit Adressraum
> implementiert, z.b. die AMD Teile implementieren "nur" 48-Bit.

So weit musst du nicht gehen. Hier wären es linear adressiert auch schon 
mindestens (2^20)*7 Bits, also knapp 4x Hauptspeicher. ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren