SO WINIX
Winix é um sistema operacional minimalista, hobbyístico, educacional e estilo UNIX para o microprocessador de arquitetura Waikato RISC (WRAMP).
Inspirado no sistema operacional Minix1, o Winix inclui um kernel completo com recursos como gerenciamento de processos e memória, sistema de arquivos na memória, controle de exceções e um shell bourne de espaço de usuário com linha de comando interativa. E, para se divertir um pouco, você pode até jogar o clássico jogo de cobra simplesmente digitando snake
na linha de comando.
Demonstração
Jogando Cobra
Usando Pipe no shell
Características
- Gerenciamento de memória do kernel: memória virtual, mapeamento de páginas
- Gerenciamento de processos: thread do kernel, criação de processos
- Controle de exceções e manipulador de interrupções
- Sistema de arquivos na memória que suporta a maior parte da API POSIX
- Um shell Bourne com suporte a vários pipes e redirecionamento
- Gerenciamento de memória do usuário: malloc() free()
- Corotina do usuário com suporte
ucontext.h
- Despejo Stacktrace, análise segfault
Comandos Suportados
- cobra
- concha
- gato
- CP
- eco
- grep
- história
- eu
- mkdir
- mv
- obs:
- senha
- rm
- estatística
- teste
- tocar
- tempo de atividade
- Banheiro
- df
- você
- Em
- cauda
Teste de unidade
testes
Como correr
Baixe o Rexsimulator mais recente aqui
NB mono
é necessário para rodar em ambiente Linux/MacOS, instruções de download
Baixe o binário WINIX mais recente winix.srec
aqui
Execute Rexsimulator.exe
Clique em Quick Load
e selecione winix.srec
Carregando Winix
Como compilar
NB O ambiente Linux é necessário para compilação
Pré-requisito
Debian/Ubuntu
sudo apt-get install xutils-dev gcc
Clonar e compilar
git clone https://github.com/halfer53/winix.git
cd winix
make -j $(( `nproc` + 2 ))
Dicas de depuração
Depurar Makefile
Semelhante ao linux kbuild, o Winix suporta a opção verbose, você pode depurar o Makefile definindo verbose como 1
Kernel de depuração
kprintf()
: é seu amigo.
trace
: digite trace no shell para imprimir todas as syscalls na porta serial 2
Chamada de sistema suportada
- vezes
- saída
- garfo
- garfo
- executivo
- freio
- alarme
- sigação
- segurança
- espere
- matar
- obterpid
- winfo
- Estrerror
- dprintf
- sysconf
- suspender
- pendente
- máscara sigproc
- setpgid
- getpgid
- abrir
- ler
- escrever
- fechar
- criar
- cano
- mknod
- chdir
- chown
- chmod
- estatística
- fstat
- idiota
- dup2
- link
- desvincular
- obter dente
- acesso
- mkdir
- sincronizar
- eu procuro
- umask
- FCNTL
- ioctl
- setid
- nanossono
- getppid
- sinal
- sbrk
- estatísticas
- getcwd
- garfo
- definir temporizador
Créditos
Paulo Monigatti