GeovaneEstanislau/Jinn_Project
Contribute to GeovaneEstanislau/Jinn_Project development by creating an account on GitHub.
0 stars · 2 forks
README
Jinn OS
Um microkernel x86_64 minimalista e preemptivo escrito em Rust. Construído do zero. Sem abstrações que desperdiçam recursos. Sem concessões.
Filosofia O Jinn OS é construído sobre três pilares principais:
Preempção sem desperdício — O kernel nunca permite que uma tarefa monopolize a CPU. O timer do APIC dispara a 100 Hz e o escalonador age a cada ciclo. Explícito ao invés de implícito — Sem alocações ocultas, sem surpresas em tempo de execução. Toda aquisição de recursos é intencional e transparente. Kernel mínimo, capacidade máxima — O kernel faz o mínimo necessário: escalonamento, IPC (Comunicação Inter-Processos), memória e chamadas de sistema (syscalls). Todo o resto roda no espaço do usuário (Ring 3).
Funcionalidades
Funcionalidade Status
Bootloader Limine (BIOS + UEFI) ✅
Renderizador de texto Framebuffer (fonte customizada) ✅
x86_64 IDT (48 vetores) ✅
Local APIC + Timer (100 Hz) ✅
Escalonador Preemptivo Round-Robin ✅
Alocador de Frames Físicos (Bitmap) ✅
Paginação de 4 Níveis (PML4) ✅
Kernel Heap Próprio (Bump + Free List) ✅
Driver de Teclado PS/2 ✅
Shell Interativo ✅
IPC (Filas de mensagens lock-free) ✅
Interface de Syscalls (10 chamadas) ✅
VFS + ramfs (/dev/) ✅
Espaço do Usuário (Ring 3) 🚧 Em Andamento
Pilha de Rede 🔜 Planejado
Driver Ext2 / FAT32 🔜 Planejado
Arquitetura ┌────────────────────────────────────────────────────────────┐ │ Espaço do Usuário (Ring 3) │ │ ┌─────────┐ ┌─────────┐ ┌───────────┐ │ │ │ App A │ │ App B │ │ Shell │ │ └──────────────────┴────┬────┴──┴────┬────┴──┴─────┬─────┘───┘ │ int 0x80 │ │ ┌────────────────────────▼──────────▼──────────────▼─────────┐ │ Camada de Syscalls (syscall.rs) │ │ exit │ write │ read │ yield │ getpid │ ipc_send │ spawn │ ├────────────────────────────────────────────────────────────┤ │ IPC (ipc.rs) — Filas lock-free │ ├──────────────────┬─────────────────────┬───────────────────┤ │ Escalonador │ Gerenciador Mem. │ VFS │ │ (scheduler.rs) │ (memory/) │ (vfs/) │ │ Round-Robin │ Alocador Físico │ ramfs / devfs │ │ Preemptivo │ Paginação (PML4) │ │ │ Prioridades │ Heap Customizado │ │ ├──────────────────┴─────────────────────┴───────────────────┤ │ Subsistema de Interrupções (interrupts/) │ │ IDT │ Local APIC │ Teclado PS/2 │ PIC(off) │ ├────────────────────────────────────────────────────────────┤ │ Abstração de Hardware (limine.rs, cpu.rs, vga.rs) │ └────────────────────────────────────────────────────────────┘
Como Compilar Pré-requisitos
Rust nightly com a target x86_64-unknown-none cargo com suporte a -Zbuild-std
rustup toolchain install nightly rustup target add x86_64-unknown-none --toolchain nightly rustup component add rust-src --toolchain nightly Compilar e Gerar a ISO O Jinn OS utiliza scripts nativos em PowerShell, sem depender de ferramentas externas em C/C++: .\scripts\build.ps1 .\scripts\make_iso.ps1 A ISO será gerada como jinn.iso e é inicializável no VirtualBox ou QEMU. Executar no QEMU qemu-system-x86_64 -cdrom jinn.iso -m 128M -serial stdio
Comandos do Shell Uma vez iniciado, o shell interativo (jinn>) suporta:
Comando Descrição
help Lista os comandos disponíveis
uname Mostra o nome e a versão do kernel
meminfo Mostra as estatísticas da memória física e do heap
clear Limpa a tela
Licença MIT — Veja o arquivo LICENSE. Contato e Contribuição Este projeto valoriza imensamente a comunidade de tecnologia brasileira. Estamos buscando desenvolvedores e entusiastas de sistemas operacionais. Veja o arquivo CONTRIBUTING.md para saber por onde começar.