Deodeokos
Dies ist ein OS -Projekt, das auf dem Prinzip von 64 -Bit -Multicore -Betriebssystem- und Rettungsbüchern geschrieben wurde.
Es ist einfach zu erfassen, daher kann es häufig Änderungen und Fehler geben!
Umwelt und Konstruktion
- Apple M1 MacBook Air
- Docker (Ubuntu 18.04 / AMD64)
- Da GCC, QEMU ... ist ein Betriebssystem in der Umgebung x86_64, müssen Sie die Option Docker -Plattform hinzufügen, wenn Sie M1 sind.
docker build --platform linux/amd64 -t os:1.0 .
docker-compose up -d
docker exec -it os bash
./build.sh && ./qemu.sh
Referenz
- Die im Buch von '64 -Bit -Multi -Core -OS -OS -Prinzip und -Rettungsbuch 'eingeführte QEMU -Umgebung beträgt 0,10,4. Wenn Sie also das neueste QEMU verwenden, wird das Betriebssystem nicht ordnungsgemäß auftaucht. Ich benutze die QEMU 2 -Version und muss den Bootloader so ändern, dass er ihn lösen kann. Ändern Sie die 80 -Linie
cmp al, 19 von Bootloader.asm in cmp al, 37 um zu arbeiten.
Debuggen
GDB
Wenn Sie mit dem Debuggen durch GDB fortfahren, benötigen Sie zwei Muscheln.
docker exec -it os bash
./build.sh && ./qemu_debug.sh
gdb
target remote:1234
file 02.Kernel64/Temp/Kernel64.elf
Debugging Fortschritt nach der Einstellung des Haltepunkts
VSCODE
Installieren Sie zunächst die native Debug -Erweiterung.
Wenn Sie mit Debugging in der VSCODE -Umgebung fortfahren, befolgen Sie den folgenden Prozess.
-
.vscode/task.json QEMU Build Execution - Führen Sie QEMU -Debuggen in
.vscode/task.json aus - Haltepunkt
- Debugging mit F5
Sie können den Befehl anpassen, indem Sie den Inhalt .vscode/launch.json und .vscode/task.json ändern.
Ändern
- 210125: Implementierung von Spinlock -Synchronisierung
- 211220: Interrupt -Dispersionsverarbeitung im symmetrischen E/A -Modus unterbrechen
- 211116: Multi -Core -Implementierung 2 (Kernaktivierung)
- 211028: Multicore -Implementierung 1 (Implementierung von MP -Tabelle)
- 211020: Implementierung des seriellen Port -Geräte -Treibers
- 211017: Dateisystem -Cache und Rampdic -Implementierung
- 211002: Datei -E / A -Implementierung
- 210927: Debugging -Umgebungskonfiguration
- 210902: Einfache Implementierung des Dateisystems
- 210830: Hartplattenfahrer hinzugefügt
- 210824: Implementierung der dynamischen Speicherzuweisung
- 210813: Implementierung von Multisrese
- 210809: Rennzustandslösung durch Mutex
- 210807: Implementierung für Multi -Level -Warteschlangenplaner
- 210802: Implementierung von Robin Scheduler
- 210725: Einfache Multitasking -Implementierung
- 210723: Fügen Sie ein Timer -Gerät hinzu
- 210720: Implementierung von Konsolenschalen
- 210719: Implementierung von Interrupt mit PIC -Controller
- 210717: Fügen Sie grundlegende Tastaturinterrudeln hinzu (Umfrage)
- 210716: Tastaturfahrer hinzugefügt
- 210712: Konvertiert vom Schutzmodus in den IA-32E-Modus
- 210708: Erstellen Sie den ersten Kernel
- 210706: Übergang vom realen Modus zum Schutzmodus
- 210701: Bootloader hinzufügen