| | Lab 4: HAL MMUAssignment 12Die 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 13Testen Sie Ihr Programm (Unittest). |