Um sistema operacional simples que pode ser executado nos processadores multi-core x86-64.
Este é o meu dever de casa feito no curso de experimento do sistema operacional. Como a classe fala apenas sobre o design do sistema operacional em uma CPU de 32 bits de núcleo, e estou mais interessado em sistemas operacionais em execução em processadores multi-core, escolhi escrever um sistema operacional em um multi-processador simétrico x64.
Desenvolvido usando o Ubuntu 16.04. Dependências de instalação:
apt install make gcc gdb qemu
correr
make qemu

Fornece uma API de processo/encadeamento para aplicações, processos de suporte/criação de threads, espera, cancelamento, sono e outras operações.
Implementa a tecnologia de cópia sobre escrúpulos durante a criação do processo.
Evite as condições de raça quando várias CPUs executam instruções através de mecanismos mutex síncronos apropriados.
Use o Lapic/IOAPIC para realizar a inicialização e interromper o controle de CPUs multi-core.
Armazene as variáveis relacionadas a uma CPU específica através das variáveis Thread_local.
| número de série | nome |
|---|---|
| 0 | garfo |
| 1 | saída |
| 2 | thread_create |
| 3 | Thread_exit |
| 4 | espera_process |
| 5 | espera_thread |
| 6 | get_pid |
| 7 | get_tid |
| 8 | kill_process |
| 9 | kill_thread |
| 10 | dormir |
| 11 | abrir |
| 12 | Fechar |
| 13 | ler |
| 14 | Escrever |
| 15 | desvincular |
| 16 | readdir |
| 17 | Stat |
| 18 | mkdir |
| 19 | rmdir |
| 20 | LSEEK |
| vinte e um | exec |
Implementar mecanismo de sinal.
Implementar suporte para um sistema de arquivos comumente usado.
Pilha de protocolo TCP/IP.