Deodeokos
Это проект ОС, написанный на основе принципа 64 -битной многоядерной ОС и спасательных книг.
Его легко записать, поэтому могут быть частые изменения и ошибки!
Окружающая среда и строительство
- Apple M1 MacBook Air
- Docker (Ubuntu 18.04 / AMD64)
- Со времен GCC, Qemu ... это ОС, написанная в среде x86_64, если вы M1, вам нужно добавить опцию Docker Platform.
docker build --platform linux/amd64 -t os:1.0 .
docker-compose up -d
docker exec -it os bash
./build.sh && ./qemu.sh
Ссылка
- Среда QEMU, введенная в 74 -байбит -основной принцип и спасательную книгу ОС, составляет 0,10,4, поэтому, если вы используете последнюю QEMU, ОС не появится должным образом. Я использую версию QEMU 2, и мне нужно изменить загрузочный загрузчик для ее решения. Измените 80 -Line
cmp al, 19 из Bootloader.asm на cmp al, 37 на работу.
Отладка
GDB
Если вы продолжите отладку через GDB, вам понадобятся две раковины.
docker exec -it os bash
./build.sh && ./qemu_debug.sh
gdb
target remote:1234
file 02.Kernel64/Temp/Kernel64.elf
Отладка прогресса после установки точки останова
VSCODE
Во -первых, установите расширение нативного отладки.
Если вы продолжите отладку в среде VSCODE, следуйте следующему процессу.
-
.vscode/task.json qemu - Запустить Qemu Debug в
.vscode/task.json - Точка останова
- Отладка с F5
Вы можете настроить команду .vscode/task.json изменяя .vscode/launch.json .
Изменять
- 210125: реализация Spinlock Sync
- 211220: обработка дисперсии прерываний в симметричном режиме ввода/вывода
- 211116: много -корревая реализация 2 (основная активация)
- 211028: многоядерная реализация 1 (реализация таблицы MP)
- 211020: реализация драйвера устройства последовательного порта
- 211017: кеш файловой системы и реализация Rampdic
- 211002: реализация файла ввода -вывода
- 210927: конфигурация среды отладки
- 210902: простая реализация файловой системы
- 210830: добавлен драйвер жесткого диска
- 210824: реализация динамического распределения памяти
- 210813: реализация с мультисченой
- 210809: раствор для условий гонки через Mutex
- 210807: Реализация планировщика планировщика с несколькими уровнями
- 210802: Реализация планового плана Round Robin
- 210725: простая многозадачная реализация
- 210723: добавить устройство таймера
- 210720: реализация консольной оболочки
- 210719: реализация прерывания с использованием контроллера PIC
- 210717: добавить базовое прерывание клавиш (опрос)
- 210716: добавлен драйвер клавиатуры
- 210712: преобразовано из режима защиты в режим IA-32E
- 210708: создать первое ядро
- 210706: переход от реального режима к режиму защиты
- 210701: добавить загрузочный погрузчик