geschrieben in einer leicht modifizierten Version von BCPL
(http://rabbit.eng.miami.edu/class/een521/bcpl-2.pdf)
Für einen Intel 80486 Emulator
- http://rabbit.eng.miami.edu/class/een521/hardware-1.pdf
- http://rabbit.eng.miami.edu/class/een521/hardware-2a.pdf
- http://rabbit.eng.miami.edu/class/een521/intel486vm.pdf
Emulator geschrieben von Dr. Stephen Murrell
(Quellcode: http://rabbit.eng.miami.edu/class/een521/een521.zip)
In diesem Repot:
- Start.b: Virtual Memory (für den 80846. 4 GB Speicher = 512 Seiten * 2048 Wörter pro Seite. Word = 32 Bit)
Seitenverzeichnis mit Seitentabellen für sechs separate Regionen
des virtuellen Adressraums (Benutzer- und Systemcode, Heap und Stack) - OS.B: Seitenfehlerhandler zum Anbau von Haufen und Stapel
Fähigkeit, Benutzerprogramme zu lesen und auszuführen
Exit () Systemaufruf zum Wiederherstellen von System FP, SP und PC, setzen Sie CPU -Flags und recyceln Benutzerprozess Seiten
Interrupt -basierte Tastatureingangssystem
Befehlszeilenschale
(im Prozess) Warteschlange von Runnable -Prozessen - newVec.b: Zuweisen und Recycling von Haufen mit NewVec und FreeVec
- Datei_System.b: Basic -Dateisystem (MKDIR, CD, RMDIR, FCREATE, FDELETE, FOPEN, FCLOSE, FWRITE, FREED)
- sys_lib.b: grundlegende Systemanruf -API für Benutzerprozesse
- Benutzerprozesse XB, YB: Zum Testen
Im Moment sind Verzeichniseinträge auf jeweils einen Block beschränkt (128 Wörter = 512 Bytes),
Dies bedeutet, dass Verzeichnisse auf 16 untergeordnete Dateien und Verzeichnisse begrenzt sind. Dieses Kind
Verzeichnisse sind auch auf 16 Einträge usw. begrenzt.
Jedes Verzeichnis enthält:
- 512 Bytes
- Bis zu 16 Strukturen von 28 Bytes, die jeweils eine untergeordnete Datei oder ein Verzeichnis beschreiben
- 6 Bytes für den Namen des Verzeichnisses
- 4 Bytes für den Ort auf der Disc des übergeordneten Verzeichnisses
Dateien dienen ebenfalls als Platzhalter und enthalten einen Header -Block mit mit
28 Wörter beschreibender Informationen: Name, Berechtigungen, Zeit erstellt usw.
und 100 Hinweise auf den Inhalt der Datei.
100 Zeiger * 512 Bytes pro Block = Max -Dateigröße 50 KB
- Verzeichnisse erfordern eine Disc, die gelesen wird, um sich zu öffnen
- Dateien nehmen eine CD vor, um den Header -Block zu öffnen
plus eine Disc -Lektüre, um auf jeden der bis zu 100 Inhaltsblöcke zuzugreifen
Ziel war es, ein grundlegendes Dateisystem zu haben (Unterstützung für Dateien und Verzeichnisse)
um das zugrunde liegende Betriebssystem zu testen und Probleme zu erfassen
Vor der Optimierung. Die getesteten Merkmale sind
- Virtueller Speicher, Seitenverzeichnis mit Seitentabellen für sechs separate Regionen
des virtuellen Adressraums (Benutzer- und Systemcode, Heap und Stack) - Seitenfehlerhandler zum Anbau von Heap und Stapel
- Fähigkeit, Benutzerprogramme zu lesen und auszuführen
- Exit () Systemaufruf zum Wiederherstellen von System FP, SP und PC
Stellen Sie CPU -Flags ein, recyceln Benutzerprozess Seiten - Interrupt -basierte Tastatureingangssystem
- Zuweisen und Recycling von Haufen mit NewVec und FreeVEC
Im Gange
- Warteschlange von Benutzerprozessen, die abwechselnd ausgeführt werden
- Freead und FWrite testen
Als nächstes nach oben
- B+ Baum, um große Dateien mit minimaler Disc -Lesevorgängen zu erhalten