| |
Lab 4: HAL MMU
Assignment 12
Die HAL (-Interpreter) soll um eine Memory Management Unit (MMU) erweitert
werden:
-
Die Seitengröße beträgt 2K
-
Die zu adressierende Speicherzellen (= HAL-Register)
sind 2 Bytes lang.
-
Die Größe des virtuellen Speichers ist 64K.
-
Die Größe des physischen Speichers ist 16K.
-
Die MMU soll Paging verwenden.
-
Die MMU soll dabei als Seitenersetzungsverfahren Least
Recently Used (LRU) verwenden.
-
Der Programm-Speicher (Text-Segment) ist separat untergebracht, braucht somit hierbei nicht betrachtet zu werden.
-
Jeder Prozess verwaltet seine eigene Seitentabelle.
-
Jeder Prozess sollte gegen ungewollte, durch andere
Prozesse beabsichtigt oder unbeabsichtigt verursachte Störungen geschützt
werden.
-
Prozesse sollen nicht auf den selben Teil des
Hauptspeichers zugreifen können.
(a) Wie viele Bits braucht man zur Adressierung (Seitennummer,
Offset)?
(b) Erweitern Sie Ihren HAL-Interpreter um folgende Instruktionen:
Name |
Operand |
Bemerkung |
LOADIND |
r |
Lädt den Inhalt der Speicherzelle, deren Adresse im
Register r abgelegt ist. |
STOREIND |
r |
Speichert den Inhalt des Akkus in der Speicherzelle,
deren Adresse im Register r steht. |
DUMPREG |
|
Gibt den Inhalt aller Register über
den Kanal 1 in der Form
“Registernummer: Registerinhalt \n”
aus. |
(c) Implementieren Sie das oben beschriebene
Speicherverwaltungskonzept in Ihrer HAL. Jeder Seitenfehler ist in
einer Log-Datei zu dokumentieren.
(d) Schreiben Sie ein HAL-Programm, welches vom ersten
Eingabekanal Zahlen einliest und diese in einem Feld im Speicher ablegt. Bei
Einlesen der Zahl -1 wird der Einlesevorgang beendet und das nun vorliegende
Feld mit Hilfe von Bubble-Sort aufsteigend sortiert. Nach erfolgreicher
Sortierung wird das Feld auf dem ersten Ausgabekanal ausgegeben.
Assignment 13
Testen Sie Ihr Programm
(Unittest).
|