Andrew S. Tanenbaum, um professor de ciências da computação na Vrije Universiteit na Alemanha, está liderando o desenvolvimento do projeto MINIX 3, um sistema operacional que significava ser mais seguro que Windows e Linux.
Nessa proposta de pesquisa, que assegurou seus 2.5 M Euros da "European Research Council" para os próximos 5 anos, Tanenbaum explica porque ele considera que os sistemas operacionais correntes não são seguros:
Os problemas mais sérios de confiabilidade e seguridade são aqueles relacionados ao sistema operacional. O problema principal é que sistemas correntes não obedecem o POLA: o Princípio da Autoridade Mínima. Os estados POLA que o sistema deveria ser particionado dentro de componentes como a maneira que um bug inevitável em um componente não pode propagar dentro de outro componente, ler qualquer parte da memória do computador que não seja seu próprio espaço de memória, executar instruções sensitivas que não tem execução de negócio, tocar dispositivos I/O que não deveria tocar, e assim por diante. Sistemas operacionais correntes violam esse princípio completamente, resultando em problemas na confiabilidade e seguridade mencionados acima.
Drivers de dispositivos são os culpados principais segundo Tanenbaum:
Aproximadamente 70% de um sistema operacional típico consiste nos drivers de dispositivos, e esses são conhecidos de ter 3 a 7 vezes com muitos bugs por linha de código que no resto do sistema. Também é documentado que 63% a 85% dos problemas do Windows XP são devido a falhas de driver e não existe razão para esperar que o Linux tenha qualquer direfença.
MIMIX vem com uma abordagem ligeiramente diferente para a arquitetura do sistema operacional:
A principal diferença apontada por Tanenbaum é ter os drivers rodando em modo de usuário conferindo maior segurança:
Acima do kernel, rodando em modo de usuário, estão os drivers de dispositivos, cada um rodando como um processo separado restrito fortemente pelo hardware de gerenciamento de memória para acessar somente sua própria memória. Drivers de dispositivos precisam fazer I/O e eles fazem isso com chamadas para o microkernel para obter serviços (tais como emissão de comandos para um dispositivo físico). Entretanto, antes de executar qualquer chamada, o microkernel primeiro checa ter certeza que a chamada é permitida. Assim a chamada do diver de audio para comandar o cartão de som será aceito e processado mas uma chamada do driver de audio para comandar o disco será rejeitado.
O objetivo global é:
… reorganizar o sistema operacional como um microkernel minúsculo que roda em um modo kernel, junto com algum número de processos de usuário que fazem o trabalho real do sistema operacional. Enquanto um microkernel não significa um sistema operacional completo, esse design arquiva um objetivo maior. O objetivo é ter mais de um código de sistema operacional dentro do espaço do usuário onde isso pode ser perticionado dentro de processos incapazes de executar instruções "perigosas" e proibindo de acessar memória de fora pelo hardware gerenciador de memória.
Correntemente, MINIX 3 está na versão 3.1.3a e as funcionalidades principais são:
- POSIX compliant
- Networking with TCP/IP
- X Window System
- Languages: cc, gcc, g++, perl, python, etc.
- Mais de 650 programas UNIX
- Completo multiusuário e multiprogramação
- Drivers de Dispositivos rodam como processo de usuário
- Alto grau de tolerância a falha
- Todo código fonte C fornecido
Desde que MINIX está implementando o padrão POSIX, ele pode rodar muitos programas UNIX com pequenas ou nenhuma mudanças. O projeto foi incluido no Google’s Summer of Code 2008. A Uma Discussão MINIX está organizada no Google.