Skip to content

Repository files navigation

Projeto SO

Projeto da disciplina de Sistemas Operacionais — Ciência da Computação, UFPB.

Implementação de um sistema operacional x86 32-bit do zero, com base no livro The Little Book About OS Development de Erik Helin e Adam Renberg.

O que está implementado

  • Boot Multiboot via GRUB com kernel higher-half (0xC0100000)
  • Paginação x86 two-level (4KB pages)
  • Page Frame Allocator (bitmap)
  • Heap do kernel (free-list com split e coalescing)
  • GDT, IDT, PIC, PIT (100 Hz), TSS
  • Driver de framebuffer VGA modo texto 80×25
  • Driver de teclado PS/2 com buffer circular
  • Gerenciamento de processos (PCB, tabela, context switch cooperativo)
  • Scheduler round-robin cooperativo
  • Mini-shell interativo com comandos: help, clear, ps, top, info, spawn, kill, reboot, poweroff
  • Monitor de processos em tempo real (top) com CPU%, RAM, heap e info do CPU

Dependências

Ubuntu / Debian

./install_deps.sh

Ou manualmente:

sudo apt update
sudo apt install -y gcc gcc-multilib nasm binutils make \
    grub-pc-bin grub-common xorriso mtools bochs bochs-x

macOS (Apple Silicon)

Requer Docker Desktop. Veja docs/08-como-rodar.md.

Compilação e Execução

# Compilar e rodar no Bochs
make run

# Apenas compilar
make

# Gerar ISO
make os.iso

# Limpar artefatos
make clean

Via Docker (macOS / qualquer plataforma)

make docker-build   # constrói a imagem (uma vez)
make docker-run     # compila + executa com QEMU headless
make docker-shell   # shell interativo no container

Via VM ou Hardware Real

A ISO gerada é uma imagem híbrida bootável em qualquer ambiente:

# QEMU
qemu-system-i386 -cdrom os.iso -serial stdio -no-reboot

# Pendrive (hardware real — BIOS legacy)
sudo dd if=os.iso of=/dev/sdX bs=4M status=progress

VirtualBox e VMware também funcionam sem configuração especial. Veja docs/08-como-rodar.md.

Documentação

A pasta docs/ contém a documentação técnica completa:

# Documento Conteúdo
01 Estrutura do Projeto Organização de arquivos, build, layout de memória
02 Processo de Boot BIOS → GRUB → loader.s → kmain
03 Drivers e Subsistemas FB, teclado, PIT, serial, GDT, IDT, PIC
04 Memória Paginação, PFA, heap do kernel
05 Processos e Scheduler PCB, context switch, scheduler cooperativo
06 Mini-Shell e Top Comandos, monitor de processos, fluxo completo
07 Como Rodar Guia detalhado Linux e macOS

Referências

Contribuidores

João Bosco Duarte

GDT, PFA, shell, comandos (help, clear, ps, top, info, kill, reboot, poweroff)

Guilherme Lopes

Recebimento do teclado, paginação, higher half linker, escalonador preemptivo

Marcus Vinícius

User mode, GitHub CI, PCB, funções, processos

Samuel Santos

PFA dinâmico, IDT, Spawn de processos cooperativos, histórico de comandos, Kernel Heap

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages