A maioria dos projetos de desenvolvimento em sistemas operacionais para aprendizado são baseados em UNIX. A ideia é seguir um caminho diferente e explorar novas perspectivas.
A arquitetura escolhida para essa iteração do projeto foi a x86 (32 bits), pelas razões a seguir:
Vou utilizar adiante os termos "SO" ou "sistema" para "sistema operacional".
Nessa primeira iteração, temos como principais objetivos:
Parte das funcionalidades implementadas está incompleta. A implementação focou apenas em testar diferentes aspectos e técnicas.
O kernel é compilado com suporte a Multiboot, assim é possível utilizar um bootloader como o Grub.
A implementação usa uma parte escrita em Assembly (boot.asm)

O sistema usa uma combinação de interrupções, corrotinas e troca de mensagens para executar as diferentes tarefas:

A arquitetura x86 utiliza uma tabela de interrupções onde é registrada uma função que será invocada quando uma interrupção acontecer. Em "interrupts.asm" essa tabela é populada e todas as chamadas são redirecionadas para a função kernelInterruptHandler, implementadas em "Kernel.ob07".
Cada tarefa pode fazer uma subscrição para uma determinada interrupção. Assim, quando essa interrupção acontecer, a tarefa receberá uma mensagem na sua "caixa de entrada". As mensagens são dispachadas por uma tarefa principal.
O sistema tem uma tarefa principal que fica executando um loop e aguardando por mensagens recebidas. Essas mensagens são enviadas quando interrupções de temporizador, teclado e mouse acontecem.
A cada mensagem recebida o loop verifica que tipo é essa mensagem e executa a ação correspondente:
Os arquivos do projeto podem ser baixados aqui.
No documento README.md na raiz do pacote podem ser encontradas instruções de como compilar e executar o SO.