Deodeokos
Este é um projeto de sistema operacional escrito com base no princípio de um sistema operacional e livros de resgate multicore de 64 bits.
É fácil gravar, para que haja alterações e erros frequentes!
Meio ambiente e construção
- Apple M1 MacBook Air
- Docker (Ubuntu 18.04 / amd64)
- Como o GCC, Qemu ... é um sistema operacional escrito no ambiente x86_64, se você for M1, precisará adicionar a opção Docker Platform.
docker build --platform linux/amd64 -t os:1.0 .
docker-compose up -d
docker exec -it os bash
./build.sh && ./qemu.sh
Referência
- O ambiente QEMU introduzido no livro '64 -bit multi -core OS Princípio e Resgate' será 0,10.4; portanto, se você usar o QEMU mais recente, o sistema operacional não ocorrerá corretamente. Eu uso a versão Qemu 2 e preciso modificar o carregador de inicialização para resolvê -lo. Altere o
cmp al, 19 de bootloader.asm para cmp al, 37 para trabalhar.
Depuração
GDB
Se você prosseguir com a depuração do GDB, precisará de duas conchas.
docker exec -it os bash
./build.sh && ./qemu_debug.sh
gdb
target remote:1234
file 02.Kernel64/Temp/Kernel64.elf
Depuração do progresso após definir o ponto de interrupção
vscode
Primeiro, instale a extensão de depuração nativa.
Se você prosseguir com a depuração no ambiente do VSCode, siga o processo a seguir.
-
.vscode/task.json qemu Construir execução - Execute o Qemu Debug in
.vscode/task.json - Ponto de interrupção
- Debugando com F5
Você pode personalizar o comando modificando o conteúdo .vscode/launch.json e .vscode/task.json .
Mudar
- 210125: implementação de sincronização de spinlock
- 211220: Processamento de dispersão de interrupção no modo de E/S simétrico
- 211116: Implementação Multi -Core 2 (ativação do núcleo)
- 211028: Implementação multicore 1 (implementação da tabela MP)
- 211020: implementação do driver de dispositivo de porta serial
- 211017: Cache do sistema de arquivos e implementação rampdic
- 211002: Implementação de E / S do arquivo
- 210927: Configuração do ambiente de depuração
- 210902: Implementação simples do sistema de arquivos
- 210830: Adicionado driver de disco rígido
- 210824: Implementação da alocação de memória dinâmica
- 210813: Implementação de múltiplas leituras
- 210809: Solução de condição de corrida através do mutex
- 210807: Implementação do agendador de filas de nível múltiplo
- 210802: Round Robin Scheduler Implementation
- 210725: implementação simples de multitarefa
- 210723: Adicione um dispositivo de temporizador
- 210720: Implementação de shell do console
- 210719: Implementação da interrupção usando o controlador PIC
- 210717: Adicione a interrupção básica do teclado (pesquisa)
- 210716: Driver de teclado adicionado
- 210712: convertido do modo de proteção para o modo IA-32E
- 210708: Crie o primeiro kernel
- 210706: Transição do modo real para o modo de proteção
- 210701: Adicionar carregador de inicialização