- O kernel Linux é um enorme projeto open source com 36 milhões de linhas, mas a primeira versão tinha 10.239 linhas (8.670 excluindo comentários e linhas em branco)
- O Linux v0.01, por sua simplicidade, é um ótimo ponto de partida para aprender o funcionamento interno de um kernel de SO no estilo Unix
- O v0.01 tinha apenas 66 chamadas de sistema
- criação, remoção e escrita de arquivos/diretórios
- chmod, chown, pipe, fork, execve
- Como o conceito de socket ainda não havia sido introduzido, não havia suporte a rede
mount ainda não estava implementado
- Era codificado de forma rígida para a arquitetura Intel 386 (o autor do MINIX criticou isso)
strcpy foi escrita em assembly usando instruções do i386
- Suportava apenas dispositivos PC/AT
- CMOS, PIT (Programmable Interval Timer), ATA (PIO), VGA (modo texto), teclado Intel 8042 PS2 (assembly)
- Ainda não existia uma pasta
drivers, e tudo ficava hardcoded nos subsistemas
- Há um comentário no
Makefile com o nome original pensado por Linus: "FREAX" Kernel
- O sistema de arquivos suportava apenas MINIX (
ext foi inspirado no MINIX)
- No código do escalonador há um comentário dizendo: "esta parte é um código muito bom que funcionará em qualquer ambiente, então não haverá motivo para mudá-la!"
- Claro que, com várias melhorias e algoritmos introduzidos depois, essa previsão estava errada
- A implementação de kernel panic tem apenas 5 linhas: imprime "kernel panic: causa" e interrompe o sistema com
for(;;)
- Há uma parte no espaço do kernel que parece chamar
fork(2)
- Mas, embora pareça, na verdade o truque é o
move_to_user_mode() logo antes
- Linus não tinha nenhuma máquina com mais de 8 MB de RAM (como ele mesmo não tinha para testar, disse para quem tivesse tentar por conta própria...)
- É difícil compilar com toolchains modernas
- O GCC mantém compatibilidade retroativa, mas isso não é suficiente
- Linus tinha sua própria versão do GCC com uma opção chamada
-mstring-insns (provavelmente para suportar instruções de string do x86)
2 comentários
Interessante.
Comentários do Hacker News
counterdo Linux funciona, com a afirmação de que ele diminui exponencialmente até 2 * prioridade quando a tarefa não está executável.