Déodeokos
Il s'agit d'un projet de système d'exploitation écrit sur le principe du système d'exploitation et de sauvetage multicore 64-bits.
Il est facile à enregistrer, il peut donc y avoir des changements et des erreurs fréquents!
Environnement et construction
- Apple M1 MacBook Air
- Docker (Ubuntu 18.04 / AMD64)
- Puisque GCC, Qemu ... est un système d'exploitation écrit dans l'environnement x86_64, si vous êtes M1, vous devez ajouter l'option Docker Platform.
docker build --platform linux/amd64 -t os:1.0 .
docker-compose up -d
docker exec -it os bash
./build.sh && ./qemu.sh
Référence
- L'environnement Qemu introduit dans le livre du Principe et de la sauvetage du système d'exploitation '64-bits est 0.10.4, donc si vous utilisez le dernier QEMU, le système d'exploitation ne se présentera pas correctement. J'utilise la version Qemu 2 et je dois modifier le chargeur de démarrage pour le résoudre. Modifiez le
cmp al, 19 de Bootloader.asm en cmp al, 37 pour travailler.
Débogage
gdb
Si vous procédez avec débogage via GDB, vous aurez besoin de deux coquilles.
docker exec -it os bash
./build.sh && ./qemu_debug.sh
gdb
target remote:1234
file 02.Kernel64/Temp/Kernel64.elf
Débogage des progrès après avoir établi un point d'arrêt
vscode
Tout d'abord, installez l'extension de débogage native.
Si vous procédez avec débogage dans l'environnement VScode, suivez le processus suivant.
-
.vscode/task.json Qemu Build Exécution - Exécutez Qemu Debug dans
.vscode/task.json - Point d'arrêt
- Débogage avec F5
Vous pouvez personnaliser la commande en modifiant le contenu .vscode/launch.json et .vscode/task.json .
Changement
- 210125: implémentation de synchronisation Spinlock
- 211220: Traitement de la dispersion d'interruption en mode d'E / S symétrique
- 211116: implémentation multi-ore 2 (activation de base)
- 211028: Implémentation multicore 1 (implémentation de la table MP)
- 211020: implémentation du pilote de périphérique de port série
- 211017: Cache du système de fichiers et implémentation de la rampe
- 211002: Implémentation de fichiers d'E / S
- 210927: Configuration de l'environnement de débogage
- 210902: implémentation simple du système de fichiers
- 210830: Ajout d'un pilote de disque dur
- 210824: implémentation de l'allocation de mémoire dynamique
- 210813: implémentation multise-lecture
- 210809: Solution de la condition de course à travers Mutex
- 210807: implémentation de planificateur de files d'attente multi-niveaux
- 210802: Implémentation du planificateur de la ronde
- 210725: implémentation multitâche simple
- 210723: Ajouter un périphérique de minuterie
- 210720: implémentation du coquille de console
- 210719: mise en œuvre de l'interruption à l'aide du contrôleur PIC
- 210717: Ajouter une interruption du clavier de base (sondage)
- 210716: Ajout du conducteur du clavier
- 210712: converti du mode de protection en mode IA-32E
- 210708: Créez le premier noyau
- 210706: transition du mode réel au mode de protection
- 210701: Ajouter un chargeur de démarrage