Explorando o interior do Linux v0.01
(seiya.me)- 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
mountainda não estava implementado
- Era codificado de forma rígida para a arquitetura Intel 386 (o autor do MINIX criticou isso)
strcpyfoi 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
Makefilecom o nome original pensado por Linus: "FREAX" Kernel - O sistema de arquivos suportava apenas MINIX (
extfoi 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
- Mas, embora pareça, na verdade o truque é o
- 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.