Hallo, ich lerne gerade für eine Betriebssysteme-Klausur und komme bei
einer Aufgabe auf keinen grünen Zweig. Wäre super nett, wenn mir jemand
einen Denkanstoß geben könnte.
Die Aufgabe lautet:
1
Gegeben sei eine MMU, die 2 KB (2^11 = 2048 Byte) Seitengröße unterstützt.
2
Insgesamt stehen 16 KB Hauptspeicher (2^14 = 16834 Byte) zur Verfügung.
3
Sie haben insgesamt 16 Bit zur Adressierung von virtuellem Speicher zur Verfügung.
4
5
a) Wie groß ist der virtuelle Speicher, den Sie maximal adressieren können?
6
7
b) Wie groß ist dann der benötigte Platz für Auslagerungsspeicher auf der Festplatte?
8
9
c) Aus welchen Komponenten bestehen die virtuellen Adressen und wie groß (in Bits) sind diese jeweils?
10
11
d) Wie groß ist die Seitentabelle in der MMU?
Aktuell ist mir vor allem unklar was mit "Insgesamt" gemeint ist. Kann
mir jemand aus der Logik sagen, wie das zu verstehen sein wird?
Zu a) keine Idee..
Zu b) Falls Wert aus a) > 16KB, dann Ergebnis = Wert aus a) - 16KB
Zu c) Aus Seitennummer und Offset. Besteht eine virtuelle Adresse aus 16
Bit und beträgt das Offset 11 Bit, dann wird die Seitennummer durch 5
Bit dargestellt.
Zu d) Die Seitentabelle umfasst 8 Rahmen (Rechnung: 16KB / 2KB = 8)
Ist bestimmt komplett falsch, oder?
Besten Dank vorab
a)Virtueller Speicher ist nicht vorhanden. Man hat also 16 bit als
Seitenselektor. Das ergibt zusammen ?
b) Wieviel will man auslagern koennen ?
c) Die vistuellen adressen setzen sich wie zusammen ?
d) Die Seitentabelle enthaelt ?
So gesehen - alles falsch. Vieleicht diese Vorlesung nochmals mit etwas
mehr Aufmerksamkeit reinziehen ...
Erstmal vielen Dank für deine Hilfe :)
Wenn ich deine Bezeichnung "Selektor" richtig deute...
a) 16^2 = 64KB
b) Im Prinzip will man ja so viel auslagern können, wie das jeweilige
Programm eben benötigt. Übersteigt der Bedarf die Größe des
Hauptspeichers, werden mittels Paging die Seiten ersetzt.
c) aus Seitenadresse und Offset-Bit. Gibt wohl aber auch noch diese
Status-Bits (zB R[ecent] und M[odified]) - wo die jetzt aber stehen
erschließt sich für mich auch schon wieder nicht.
d) die Seitentabelle referenziert die virtuellen Adressen ("Mapping").
Daher komme ich jetzt auf: 64KB / 2KB = 32.
Jo, den Schuh muss ich mir anziehen, hab in den Vorlesungen durch
Abwesenheit geglänzt. Normalerweise kann ich mir Vieles ganz gut selbst
aneignen, aber beim Thema "BS" tue ich mir doch ziemlich schwer.
Habe gerade mal kurz gesucht und auf Anhieb nix "brauchbares" im Web
gefunden. Hat jemand einen URL oder gibt es einen Link auf dein
Vorlesungsscript?!
Mike R. schrieb:> a) 16^2 = 64KB
✓ (2^16)
> Zu b) Falls Wert aus a) > 16KB, dann Ergebnis = Wert aus a) - 16KB
✓
Wobei man eigentlich noch einen zusätzlichen HDD-Sektor braucht wenn der
komplette virt. Speicher in Benutzung ist und ein Page Fault auftritt.
> Zu c) Aus Seitennummer und Offset. Besteht eine virtuelle Adresse aus 16> Bit und beträgt das Offset 11 Bit, dann wird die Seitennummer durch 5> Bit dargestellt.
✓ (Ergebnis 5+11 ist ok, Herleitung etwas wirr)
Man bestimmt die (physical) page frame number mit Hilfe der page table,
d.h. man braucht den Page Table Index (high bits VA). Der Offset
innerhalb der Pfn und die low bits der VA sind identisch.
> d) die Seitentabelle referenziert die virtuellen Adressen ("Mapping").> Daher komme ich jetzt auf: 64KB / 2KB = 32.
✓ (die Seitentabelle wird durch die VA (high bits) "indiziert" und
"referenziert" die Position der Page (bspw. pfn, zero page, disk
address)).
...alle meine Kommentare "aus dem Bauch" heraus.
Auch dir vielen Dank für deine Antwort. Hat nochmal gut geholfen :)
Das Skript würde ich wg. dem Urheberrecht ungern hochladen, macht
sowieso den Eindruck als wenn es fast ausschließlich zur Teilnahme an
der Vorlesung zu gebrauchen ist (das Skript wirft jedenfalls mehr Fragen
auf, als es beantwortet :/ )
Eher nicht.
Erst muss man die Seite in den speicher mappen. 2k auf 16k macht faktor
8.
ich brauch also eine Seitentabelle, die mir sagt welche Seite wo im
speicher ist mit 8 Eintraegen. Macht 3 bit.
2^16 Seiten koennen adressiert werden, macht 25 Bit adressen fuer ein
byte aus dem gesammten virtuellen speicher. Heisst adressierbarer
Bereich 25 bit, irgendwas mit 32MByte.
ohne mich in irgendeiner weise auszukennen…
soll das so eine art real-mode segment:offset geschichte sein?
man braucht von den "16 Bit zur Adressierung" 11 für jedes byte in einem
2048byte segment, weitere 3bit um die 8*2kb RAM Pages ansprechen zu
können, und hat dann noch 2bit frei um "externen speicher" ansprechen zu
können.
so in etwa?
Nicht ganz. Es gibt 2^16 pages. macht 16 bit. Eine page hat 2^11
adressen macht nochmals 11 bit. also ist der virtuelle Bereich 25 bit
Adressen. Der reele Bereich ist 16k = 14bit, welche sich auf 11bit
innerhalb einer page plus 3 bit fuer 8 pages aufteilen.
Die Seitetabelle mapt also die 3 bit auf die 16 bit fuer die pages, und
die 11 bit innerhalb einer page bleiben erhalten.
c. m. schrieb:> ohne mich in irgendeiner weise auszukennen…>> soll das so eine art real-mode segment:offset geschichte sein?
Das ist reine Adressierungssache im Real-Mode: 2x 16-Bit-Register um 20
Bit zu adressieren.
> man braucht von den "16 Bit zur Adressierung" 11 für jedes byte in einem> 2048byte segment, weitere 3bit um die 8*2kb RAM Pages ansprechen zu> können, und hat dann noch 2bit frei um "externen speicher" ansprechen zu> können.
Hier gibt es physisch 14-Bit und virtuell 16-Bit. D.h. 2^16 - 2^14 Bytes
müssen extern untergebracht werden.
Die MMU mit einer Pagegröße von 2K ist lediglich eine von vielen
Möglichkeiten das umzusetzen.
Nicht jede Antwort auf deine Frage ist richtiger als deine Antworten.
Leider ist nicht jede Frage eindeutig beantwortbar, ohne das Modell von
MMU und Auslagerungsspeicher zu kennen, das in der Vorlesung verwendet
wurde. So ist (d) davon abhängig, ob die MMU mit einer linear
adressierten Tabelle arbeitet, oder assoziativ.
Eine eigene Frage?
Dieser Thread ist über 9 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.