Seitentabelle - Ich verstehe nicht, wie diese Tabelle erstellt wurde [geschlossen]

Die CPU hat diese Folge von logischen Adressen (dezimal) generiert:

777, 2047, 1199, 1100, 546, 129, 3201

Seitengröße ist 512 Byte, CPU generiert logische Adressen, 12 BitLänge, Hauptspeicher hat 4Seiten.

Ich verstehe die folgende Tabelle: Wir haben gerade die Dezimaladressen in Binär umgewandelt. Die Gesamtadressenlänge beträgt 12 Bit. Aus der Aufgabe wissen wir, dass die Seitengröße 512 Byte, also 2^9 Byte = 9 Bitfür Offset ist. 12 Bit - 9 Bit = 3 Bitfür Seite. Also zuerst 3 Bitssind Seite und die anderen verbleibenden 9 Bitsind versetzt. Einfach so weit.

Geben Sie hier die Bildbeschreibung ein

Aber hier kommt der zweite Teil der Aufgabe und ich verstehe nicht, wie der Tisch gemacht wurde ...

Erstellen Sie eine Tabelle, die den Inhalt der obigen Tabelle (genannt MMU) nach jedem abgeschlossenen Speicherzugriff in der gleichen oben gezeigten Reihenfolge darstellt. Sie müssen nur die erforderlichen Einträge angeben (wenn also dieselbe Seite zweimal vorhanden ist, ignorieren Sie das Duplikat). Zu Beginn sind alle Seitenrahmen unbelegt und werden mit aufsteigender Seitenzahl verwendet. Wenn alle Seitenrahmen verwendet werden, findet der LRU-Ersatz statt.

Hier ist die Lösung der Tabelle, aber ich verstehe nicht ... Das ist meine Frage, wie wurde diese Tabelle erstellt? Ich verstehe die Logik nicht.

Geben Sie hier die Bildbeschreibung ein

Bearbeiten: Für die zweite Tabelle kann ich die Aufgabenseiten sehen 4. Also haben wir 00, 01, 10, 11(also in Dezimalzahl 0, 1, 2, 3), aber warum haben sie es in dieser Reihenfolge in der Tabelle gemacht? Das verstehe ich nicht.

Bearbeiten: Ich verstehe die Reihenfolge der zweiten Tabelle nicht. Warum haben wir mit 11 angefangen, dann 00, dann 10 usw. Das ergibt für mich keinen Sinn...

So hätte ich die Tabelle gefüllt:

Geben Sie hier die Bildbeschreibung ein

Was denken Sie?

Von welchem ​​System sprichst du? Das klingt wie totaler Unsinn ohne Kontext. Riecht auch nach Hausaufgaben.
Hausaufgaben, die vor Monaten erledigt wurden* (Ich habe alle Lösungen bekommen und versuche jetzt, sie für die Prüfung zu verstehen). Ist die erste Tabelle für Sie auch totaler Quatsch? Was über das System bekannt ist: Ein Computer, der virtuellen Speicher durch Paging realisiert.
Dies ist eine Frage zu einem Betriebssystem, nicht zu einer CPU. Es ist das Betriebssystem, das physische Seiten virtuellen Seiten zuordnet (und dies in der Seitentabelle speichert).

Antworten (2)

Sie haben vier physische Speicherseiten und acht virtuelle Seiten. Alle physikalischen Seiten beginnen ohne Zuordnung für einen bestimmten Zweck. Die virtuelle Tabelle mit acht Einträgen beginnt damit, dass alle virtuellen Seiten ungültig sind.

Das ist die Ausgangssituation. Ein weiteres Detail kann hier nützlich sein – die Definition, WIE neue physische Seiten zugewiesen werden. Angesichts der Ergebnisse denke ich, dass es klar ist, dass die Zuweisungsmethode zunächst mit der Zuweisung der physischen Seite 0 beginnt. Dann physische Seite 1. usw. Sobald alle physischen Seiten mindestens einmal zugewiesen wurden, kommt der LRU-Algorithmus (am längsten verwendet) ins Spiel.

Damit ist der Prozess eingerichtet.

Eine weitere Sache könnte nützlich sein, um das Hinzufügen in Betracht zu ziehen. So wird die LRU selbst gehandhabt. Stellen Sie sich das wie einen Stapel aus acht Karten vor. Eine Karte, die jede virtuelle Seite repräsentiert. Nennen wir die Karten also aus offensichtlichen Gründen 0, 1, 2, 3 usw. Das Deck enthält immer acht Karten. Anfänglich beginnt der Stapel mit 01234567 (oder einer anderen Reihenfolge, die Sie möchten). Wenn Sie eine neue Seite zuweisen, nehmen wir immer die oberste Karte (die hier die Ziffer ganz links sein wird) aus dem Stapel und verwenden die physische Seite, die sie anzeigt , und legen Sie diese Karte dann wieder unter den Stapel. Wenn wir also zum Beispiel eine neue physische Seite benötigen, gehen wir zu diesem Anfangsstapel von „0123“, ziehen die oberste Karte (die „0“ ist), weisen diese physische Seite zu und legen diese Karte dann wieder hinein das Deck ganz unten. Das neue Deck wäre also "1230" nachdem wir mit diesem Schritt fertig waren. Jedes Mal, wenn auf eine physische Seite zugegriffen wird, finden wir ihre Karte in diesem Stapel und verschieben sie ebenfalls nach unten.

Um das LRU-Deck zusammenzufassen: Wenn wir eine neue physische Seite brauchen, nehmen wir immer die oberste Karte und verwenden die Seite, die durch den Wert dort angezeigt wird, und verschieben diese Karte dann an die untere Seite des Decks. Wann immer wir auf eine physische Seite zugreifen, finden wir immer die Karte, die dieser Seite zugeordnet ist, und verschieben sie an das Ende des Stapels.

Das ist es. Ich zeige das Deck zusammen mit jedem gemachten Schritt.

Jetzt müssen Sie sich nur noch "wie der Computer verhalten" und die Arbeit von Hand erledigen, indem Sie die Liste der aufeinanderfolgenden Adressen der Reihe nach durchgehen. Es ist nur einfache Handarbeit.

Jede virtuelle Adresse hat eine Seite und einen Offset . Der Offset- Wert sind die niederwertigen 9 Bits der virtuellen Adresse und die Seite sind die oberen 3 Bits der virtuellen Adresse. Die Logik ist wie folgt:

Wenn der virtuelle Tabelleneintrag ungültig ist, dann weise eine Seite aus einer Liste freier physischer Seiten zu. Wenn jedoch keine freien physikalischen Seiten übrig sind, dann ordnen Sie aus einer Suche nach gültigen virtuellen Tabelleneinträgen die physikalische Seite aus dem virtuellen Tabelleneintrag zu, der die am längsten nicht verwendete Seite enthält. Markieren Sie in diesem Fall auch den gefundenen Eintrag in der virtuellen Tabelle als ungültig, da die physische Seite, die ihm gehört, jetzt neu zugewiesen wird. Nehmen Sie dann diese physische Seite und platzieren Sie sie in den aktuellen virtuellen Tabelleneintrag und markieren Sie sie als gültig. Ziehen Sie schließlich diesen virtuellen Tabelleneintrag an den Anfang der LRU-Liste, um anzuzeigen, dass er erst vor kurzem verwendet wurde.

Wenn der virtuelle Tabelleneintrag als gültig markiert ist, dann ziehe diesen virtuellen Tabelleneintrag an den Anfang der LRU-Liste, was wiederum anzeigt, dass er erst vor kurzem verwendet wurde.

Der obige Algorithmus wird immer wieder für jede Ihrer virtuellen Adressen der Reihe nach wiederholt. Es ignoriert die Details der Bildung der vollständigen physikalischen 11-Bit-Speicheradresse. Aber um diesen Teil brauche ich mich nicht zu kümmern, denn Ihre Frage bezieht sich nicht darauf, sondern darauf, wie dieser Tisch in den Zustand geraten ist, in dem er war. Ich vernachlässige dieses Detail, um hier übermäßige Details zu vermeiden.

Hier sind die Schritte mit Ihren Adressen in der angegebenen Reihenfolge:

Schritt _                                         Aktion     _ Frei _ LRU _ Gültig                       _ Rahmen         _ 0123 FFFFFFFF oooooooo neue Adresse 1:265 ( 1 ) A l l Ö C = F R e e 123 FFFFFFFF oooooooo ( 2 ) F R A M e 1 = A l l Ö C 123 FFFFFFFF o0oooooo ( 3 ) v A l ich D 1 = T R u e 123 FTFFFFFF o0oooooo ( 4 ) L R U ( 1 ) 123 1 FTFFFFFF o0oooooo neue Adresse 3:511 ( 1 ) A l l Ö C = F R e e 23 1 FTFFFFFF o0oooooo ( 2 ) F R A M e 3 = A l l Ö C 23 1 FTFFFFFF o0o1oooo ( 3 ) v A l ich D 3 = T R u e 23 1 FTFTFFFF o0o1oooo ( 4 ) L R U ( 3 ) 23 31 FTFTFFFF o0o1oooo neue Adresse 2:175 ( 1 ) A l l Ö C = F R e e 3 31 FTFTFFFF o0o1oooo ( 2 ) F R A M e 2 = A l l Ö C 3 31 FTFTFFFF o021oooo ( 3 ) v A l ich D 2 = T R u e 3 31 FTTTFFFF o021oooo ( 4 ) L R U ( 2 ) 3 231 FTTTFFFF o021oooo neue Adresse 2:76 ( 4 ) L R U ( 2 ) 3 231 FTTTFFFF o021oooo neue Adresse 1:34 ( 4 ) L R U ( 1 ) 3 123 FTTTFFFF o021oooo neue Adresse 0:129 ( 1 ) A l l Ö C = F R e e 123 FTTTFFFF o0o1oooo ( 2 ) F R A M e 0 = A l l Ö C 123 FTTTFFFF 3021oooo ( 3 ) v A l ich D 0 = T R u e 123 TTTTFFFF 3021oooo ( 4 ) L R U ( 0 ) 0123 TTTTFFFF 3021oooo neue Adresse 6:129 ( 1 ) A l l Ö C = F R A M e L R U 012 TTTFFFFF 3021oooo ( 2 ) F R A M e 6 = A l l Ö C 012 TTTFFFFF 3021oo1o ( 3 ) v A l ich D 6 = T R u e 012 TTTFFFTF 3021oo1o ( 4 ) L R U ( 6 ) 6012 TTTFFFTF 3021oo1o

Ich denke, Sie sollten in der Lage sein, den letzten Eintrag oben mit Ihrer Tabelle abzugleichen. Der einzige Trick besteht hier darin, zu beachten, dass der virtuelle LRU-Tabelleneintrag „3“ ist, aber die physische Seite, die diesem virtuellen Tabelleneintrag gehört, die physische Seite „1“ ist. Der virtuelle Tabelleneintrag für '3' wird als falsch markiert, aber die alloc- Variable wird auf 1 gesetzt, da dies die physische Seite ist, die dort zugewiesen wurde.

EDIT: Zu deiner Frage:

Ich verstehe die Reihenfolge der zweiten Tabelle nicht. Warum haben wir mit 11 angefangen, dann 00, dann 10 usw. Das ergibt für mich keinen Sinn...

Wir haben nicht mit 11 begonnen . Diese Spalte ist die physische Seitenzahl. Offensichtlich haben wir die physische Seite 3 (11 binär) nicht sofort zugewiesen. Stattdessen stellte sich heraus, dass bei Adresse 0:129 nur noch eine freie physische Seite übrig war – Seite 3. Aber die kommt natürlich in die virtuelle Seitentabellenreihe 0! Weil die von 0:129 referenzierte virtuelle Seite Zeile 0 in der virtuellen Tabelle ist. Aber die physische Seite (Frame) ist 3. Also wird dort 3 gespeichert (11 binär.)

Wow, vielen Dank für deine Antwort, so lang und ausführlich, sehr nett von dir! Ich habe die LRU jetzt verstanden, auch wie Seite und Offset zusammengesetzt sind, wie virtuell zu physikalisch gemacht wird. Aber ich verstehe immer noch nicht die Reihenfolge der zweiten Tabelle. Ich meine, der Professor gibt dir den zweiten Tisch, aber er wird leer sein. Dann fordert er Sie auf, den Tisch zu füllen. Wie füllst du es genau so aus? Warum fangen wir zuerst mit 11 an und gleich danach mit 00 ...? Ich werde meinen Beitrag bald bearbeiten und meine zweite Tabelle erstellen, damit Sie sehen, wie ich es gemacht hätte.
Super, verstanden!!! Vielen Dank an euch beide, dass ihr mir geholfen habt, ich bin im Moment so glücklich :))

Die in der ersten Tabelle angegebenen Adressen sind virtuelle Adressen in einem 12-Bit-Adressraum, und der Zweck der Seitentabelle besteht darin, diese physikalischen Adressen zuzuordnen. Da Seiten 512 Bytes groß sind und es 4 physikalische Seiten gibt, sind die physikalischen Adressen 11 Bit, bestehend aus einer 2-Bit-Rahmennummer und einem 9-Bit-Offset. Die Seitentabelle hat acht Schlitze, einen für jede Seite im virtuellen Adressraum. (Das ist natürlich alles völlig unpraktisch, aber das ist die Natur von Lehrbuchproblemen.)

Gemäß der Hypothese der Frage beginnt die Seitentabelle leer mit gültig = 0 in jedem Slot. Nach der Reihenfolge der Speicherreferenzen in der ersten Tabelle ist die erste Referenz auf Seite 1. Das ist ein Seitenfehler, weil das gültige Bit in Steckplatz 1 natürlich 0 ist. Also holen wir Seite 1 von der Platte, legen sie ein physische Seite 0, und aktualisieren Sie die Seitentabelle mit

1: frame=0, valid=1

Der nächste Verweis (2047) ist auf Seite 3 – wieder ein Fehler. Also fügen wir die virtuelle Seite 3 in die physische Seite 1 ein und aktualisieren die Seitentabelle mit

3: frame=1, valid=1

An dieser Stelle (nur um das klarzustellen) enthält die Seitentabelle

0:          valid=0
1: frame=0, valid=1
2:          valid=0
3: frame=1, valid=1
4:          valid=0
5:          valid=0
6:          valid=0
7:          valid=0

so dass für jede virtuelle Seitenzahl, die wir verwendet haben, die Seitentabelle die entsprechende physische Seitenzahl anzeigt. Diese Organisation macht die hardwareimplementierte Übersetzung von virtuellen zu physikalischen Adressen einfach und schnell.

Als nächstes folgt Seite 2, physisch Seite 2. Seitentabelleneintrag:

2: frame=2, valid=1

Der nächste Verweis erfolgt wieder auf die virtuelle Seite 2, so dass dies keinen Seitenfehler verursacht. Dann wieder virtuelle Seite 1, ebenfalls ohne Fehler. Als nächstes kommt die virtuelle Seite 0, die zur physischen Seite 3 gehört

0: frame=3, valid=1

Die letzte Referenz ist die virtuelle Seite 6, die wir vorher noch nicht gesehen haben. Wir müssen einen Seitenrahmen zuweisen, aber zu diesem Zeitpunkt werden alle 4 verwendet, was bedeutet, dass eine vorhandene Seite entfernt werden muss, um Platz zu schaffen. Um das Opfer auszuwählen, befolgen wir eine Ersetzungsrichtlinie, die in Software implementiert ist – und uns wird gesagt, dass wir die Richtlinie „Am wenigsten kürzlich verwendet“ verwenden sollen. Also suchen wir nach der residenten Seite, die am längsten nicht verwendet wurde, und das ist Seite 3. Wir entfernen diese Seite, holen Seite 6 herein und aktualisieren die Seitentabelle zum Lesen

3: (frame=1), valid=0
6: frame=1, valid=1

Das Frame-Feld von Slot 3 spielt keine Rolle, aber wir können es genauso gut bei 1 belassen. Wenn Sie alle Einträge zusammenfügen, erhalten Sie die Seitentabelle, die in Ihrer zweiten Tabelle angezeigt wird. Die Framenummern werden dort natürlich binär angezeigt.

Vielen Dank für die Antwort! Ich habe keine Stimme abgegeben und ich weiß nicht, warum jemand das getan hat ... Aber was ich immer noch nicht verstehe, ist, warum wir zuerst mit 11 beginnen, dann 00, dann 10 ... und so weiter? Warum? Bitte sagt mir, wenn ihr es wisst :)
@cnmesr Ich war derjenige, der die Ablehnung irgendwie durcheinander gebracht hat. Es war versehentlich (Mausproblem?) Und ich wollte es positiv bewerten. Das wurde korrigiert, denke ich.
Hallo Jonk, vielleicht kannst du mir bei meinem Problem helfen pls? Ich verstehe nicht, warum wir in der zweiten Tabelle mit 11 beginnen, dann 00, 10. Woher kommen diese Zahlen? Ich hätte stattdessen mit 00, 01, 10, ... begonnen.
Ich habe meine Antwort in der Hoffnung bearbeitet, sie klarer zu machen, und einen Fehler korrigiert. Entschuldigung für die schlechte Formatierung, aber ich habe jetzt keine Zeit, das Markup zu lernen. Beachten Sie, dass die Seitentabelleneinträge nicht von oben nach unten ausgefüllt werden, sondern in der Reihenfolge, in der die Speicherreferenzen erfolgen. Beseitigt das Ihre Verwirrung?
Ich werde morgen hier sein, ich brauche Schlaf, weil es sehr spät ist und ich eigentlich schon seit 2 Stunden im Bett sein sollte. Entschuldigung, aber vielen Dank für Ihre Antwort und Zeit für mich! Sind Sie morgen hier, damit ich fragen kann, ob ich Sie nicht verstehe?
In Ordnung, ich verstehe immer noch nicht, in welcher Reihenfolge die Tabelle erstellt wurde. Nehmen wir an, der Professor gibt Ihnen eine leere Tabelle, könnten Sie sie genau so füllen wie die Lösung (zweite Tabelle in meinem Beitrag)? Ich verstehe wirklich nicht, warum wir die Tabelle mit 11, 00, 10, ... beginnen. Ich hätte mit 00 begonnen, dann 01, dann 10 ... Verstehst du, warum die Lösung in dieser Reihenfolge ist? Das ist mein Problem, ich verstehe alles andere als das, nein : /
Sie müssen verstehen, dass die Seitentabelle inkrementell erstellt wird , wenn die Speicherreferenzen erfolgen, ohne zu wissen, welche Adressen in Zukunft verwendet werden. Sehen Sie sich den Schnappschuss an, den ich in der Antwort nach den ersten beiden Verweisen gebe, und sehen Sie, dass ich die Frames 0 und 1 den ersten beiden Seiten zugewiesen habe, auf die verwiesen werden soll. Wir wissen zu diesem Zeitpunkt nicht, dass die virtuellen Seiten 0 oder 2 jemals referenziert werden, daher wäre es falsch, ihnen an dieser Stelle Seitenrahmen (= physische Seiten) zuzuweisen. Folgen Sie dann, wie wir es in jeder Phase tun, genau dem, was erforderlich ist, um die nächste Anfrage zu erfüllen. HTH!