Speichermanagement mit Seitenfehler I

osion

Bekanntes Mitglied
Hallo

Ich habe eine Aufgabe, welche mit Paging funktioniert.
1648906182947.png
Ich habe Rot die Adressen angeben (stimmt aber so laut Lösung nicht).

Aufgabe:
1648906273351.png

Lösung die ich im Internet gefunden habe:
1648906306232.png

Was ich nicht verstehe?
1. Laut Lösung wird der Adressraum von Page 2,3,5 und 7 angegeben. Ich hätte aber folgendes gesagt 0 = 1, 1=2,4=5,6=7
2. Bei b) wird bei 0 die Start Adr. von Page 3 verwendet, aber bei 1023 die End. Adr. von Page 3 (warum einmal Start und einmal Ende?)
2. Was ist die Auswirkung, wenn es 8 virtuellen Seiten und 4 physikalische Seiten hat?
 

osion

Bekanntes Mitglied
Ich habe rausgefunden wie ich es rechnen muss, aber nicht warum.
1648937909233.png
Ich muss die Adresse nehmen und dann die physikalische Seite ansehen und danach auf diese virtuelle Seite wechseln und dort nochmals die Adresse berechnen.
 

mihe7

Top Contributor
Ich muss die Adresse nehmen und dann die physikalische Seite ansehen und danach auf diese virtuelle Seite wechseln und dort nochmals die Adresse berechnen.
Nein, das ist ganz einfach. Du hast eine Seitengröße von n und möchtest zu einer virtuellen Adresse V die physikalische Adresse A ermitteln.

Mal ganz ausführlich:
  1. Es wird die virtuelle Seite ermittelt: v = V / n (ganzzahlige Division)
  2. Es wird das Offset in der virtuellen Seite ermittelt: o = V % n (% = Restoperator)
  3. In der Tabelle schlägst Du die physikalische Seite a nach. Ist diese nicht im Hauptspeicher -> Fehler, sonst weiter mit 4.
  4. Die physikalische Seite a beginnt an der physikalischen Adresse s = a * n
  5. Für die physikalische Adresse A gilt also A = s + o
Beispiel: virtuelle Adresse V = 4111.
  1. v = V / n = 4111 / 1024 = 4
  2. o = V % n = 4111 % 1024 = 15
  3. Lt. Tabelle verweist die virtuelle Seite 4 auf die physikalische Seite 2, also kein Fehler sondern a = 2 und weiter.
  4. Die physikalische Seite a = 2 beginnt an der physikalischen Adresse s = 2 * 1024 = 2048.
  5. Die physikalische Adresse der virtuellen Adresse 4111 ist demnach A = 2048 + 15 = 2063.
 

osion

Bekanntes Mitglied
Nein, das ist ganz einfach. Du hast eine Seitengröße von n und möchtest zu einer virtuellen Adresse V die physikalische Adresse A ermitteln.

Mal ganz ausführlich:
  1. Es wird die virtuelle Seite ermittelt: v = V / n (ganzzahlige Division)
  2. Es wird das Offset in der virtuellen Seite ermittelt: o = V % n (% = Restoperator)
  3. In der Tabelle schlägst Du die physikalische Seite a nach. Ist diese nicht im Hauptspeicher -> Fehler, sonst weiter mit 4.
  4. Die physikalische Seite a beginnt an der physikalischen Adresse s = a * n
  5. Für die physikalische Adresse A gilt also A = s + o
Beispiel: virtuelle Adresse V = 4111.
  1. v = V / n = 4111 / 1024 = 4
  2. o = V % n = 4111 % 1024 = 15
  3. Lt. Tabelle verweist die virtuelle Seite 4 auf die physikalische Seite 2, also kein Fehler sondern a = 2 und weiter.
  4. Die physikalische Seite a = 2 beginnt an der physikalischen Adresse s = 2 * 1024 = 2048.
  5. Die physikalische Adresse der virtuellen Adresse 4111 ist demnach A = 2048 + 15 = 2063.
Danke für die Antwort.

Ich finde es verwirrend. Wenn ich die Virtuelle Seite 0 anschaue und danach die Adresse bei der virtuellen Seite 3 finde.
 

mihe7

Top Contributor
Wenn ich die Virtuelle Seite 0 anschaue und danach die Adresse bei der virtuellen Seite 3 finde.
Nein! Wenn Du in die virtuelle Seite 0 schaust, findest Du den Verweis auf die physikalische Seite 3. Und nachdem jede Seite 1024 groß ist, fängt die physikalische Seite 3 eben bei Adresse 3 x 1024 = 3072 an.
 

Neue Themen


Oben