Quem é Minix
Minix é um sistema operacional de código aberto, escrito nas linguagens C e Assembly. É classificado como Unix-like, ou seja, possui semelhanças com o sistema UNIX.
Características
O Minix possui uma série de características técnicas. Ele é um sistema multitarefa, capaz de executar múltiplos programas simultaneamente. Foi desenvolvido para funcionar em processadores 286, 386, 486 e Pentium. Suporta memória estendida, com limites que variam conforme o processador, e inclui suporte a porta RS-232 com emulação de terminal e protocolos como kermit e zmodem. O sistema permite um máximo de três utilizadores em simultâneo e suas chamadas de sistema são compatíveis com o padrão POSIX.
Na sua versão 1.0, de 1987, o código foi escrito em aproximadamente 11.800 linhas de C e 800 linhas de Assembly, abrangendo o sistema operacional, utilitários e bibliotecas. Ele vem com um compilador ANSI C e um shell funcionalmente idêntico ao Bourne shell. A rede TCP/IP está incluída, assim como cinco editores de texto e mais de 200 utilitários comuns, como cat, cp, grep, ls e make. O sistema conta ainda com mais de 300 bibliotecas. É importante notar que o Minix funciona apenas em modo de texto.
Sua arquitetura é organizada em camadas. As duas primeiras formam o núcleo, responsável por capturar interrupções, salvar registradores e agendar funções, além de gerenciar processos de entrada/saída, que são os drivers de dispositivos. Em um nível menos privilegiado que o núcleo, estão os processos que fornecem serviços ao usuário, como o shell, editores e compiladores.
História
O Minix foi criado por Andrew S. Tanenbaum na Vrije Universiteit em Amsterdã. Seu propósito era servir como material didático para ilustrar os princípios descritos em seu livro-texto "Operating Systems Design and Implementation", publicado em 1987. Uma versão abreviada do código-fonte do kernel, do gerenciador de memória e do sistema de arquivos do MINIX 1.0, totalizando cerca de 12.000 linhas, foi incluída no livro. A editora Prentice-Hall também distribuiu o código-fonte em disquetes, acompanhado de um manual de referência. A primeira versão do MINIX possuía um sistema de chamadas compatível com a Sétima edição do UNIX.
Hardware requerido
O Minix é conhecido por seus requisitos modestos de hardware. A versão MINIX 3 pode operar com apenas 16 MB de memória RAM e 50 MB de espaço em disco rígido. No entanto, para uma instalação com software adicional, é recomendável ter cerca de 600 MB de HD. É possível testar o sistema através de um Live CD, funcionando sem a necessidade de instalação no disco rígido.
Funcionamento
No Minix, os processos são entidades independentes, cada um com suas próprias permissões de acesso e propriedades como ID do usuário (UID) e do grupo (GID). A maior parte da execução ocorre em user-mode, onde instruções privilegiadas não são permitidas. No entanto, durante uma chamada de sistema, o processo executa em modo núcleo para acessar partes do hardware. Cada processo é identificado por um número inteiro único, o PID (process id).
Do ponto de vista do sistema operacional, um processo é um programa (conjunto de instruções) mais os dados necessários para sua execução, armazenando também seu contexto, que inclui o contador de instruções e os registradores da CPU. O sistema operacional gerencia os processos, podendo colocar um processo em estado de espera (waiting) se ele tentar uma operação de leitura ou escrita em disco, até que a operação seja concluída. Enquanto isso, outro processo pode ser executado, otimizando o uso da CPU e de outros recursos.
O Minix também implementa um procedimento de "escrita retardada". Quando dados são escritos em um arquivo, o buffer correspondente é marcado como "sujo" (dirty), e o sistema escolhe o momento mais apropriado para descarregar fisicamente esses dados no disco. Esse mecanismo explica a necessidade de executar um procedimento de parada (shutdown) antes de desligar o computador, para garantir que todos os dados pendentes sejam gravados no disco rígido.