Bem como muitos sabem, Linus Torvalds se baseou no Minix para criar o Linux, mas e o Minix nessa história toda onde fica? Como ele é? O Minix é um sistema operacional Unix-like (semelhante ao UNIX), escrito em C (linguagem de programação) e assembly ele é gratuito e com o código fonte disponível. Criado por Tanenbaum com propósitos acadêmicos, para exemplificar os conceitos de seu livro: “Sistemas Operacionais: projeto e implementação” (1987).
Características
- Deriva da palavra (mini-UNIX)
- Microkernel
- Projetado para ser compatível com a versão 7 do UNIX
- Escrito a partir da linguagem C, como o UNIX
- Padrão POSIX para as chamadas de sistemas
- Inspirou a criação do Kernel do Linux
- Atualmente encontra-se na versão 3 (2005)
- Multitarefa (múltiplos programas podem correr ao mesmo tempo ).
- Roda em 286, 386, 486, Pentium.
- Suporta memória estendida (16MB no 286 e 4GB no 386, 486 e Pentium ou superior).
- RS-232 serial line suporte com terminal emulation, kermit, zmodem, etc.
- Máximo de três usuários simultaneamente na mesma máquina.
- Chamadas de sistemas compatíveis com POSIX.
- Inteiramente escrito em C (SO, utilitários, bibliotecas etc.).
- Compilador ANSI C.
- Shell funcionalmente idêntico ao Bourne shell.
- Rede TCP/IP.
- 5 editores (emacs subset, vi clone, ex, ed, and simple screen editor).
- Mais de 200 utilitários (cat, cp, ed, grep, kermit, ls, make, sort, etc.).
- Mais de 300 bibliotecas (atoi, fork, malloc, read, stdio, etc.).
- O sistema roda apenas em modo texto.
- Captura interrupções e traps, salvar e restaurar registradores, agendar as demais funções
- Processos de entrada/saída.
- As tarefas de entrada/saída são chamadas drivers de dispositivos;
- Contém processos que fornecem serviços úteis ao usuário;
- Existem em um nível menos privilegiado que o núcleo;
- Shell, editores, compiladores, etc.
O MINIX destina-se a computadores pessoais e não a sistemas de compartilhamento de tempo de grande porte, foi projetado para funcionar em todos os IBM PC.
O Minix admite a execução de instruções privilegiadas, mas em certos instantes (durante uma chamada de sistema), ele executa em modo núcleo para conseguir o acesso a partes do hardware que de outra forma seriam inacessíveis. Cada processo é identificado pelo seu process id (PID), que é simplesmente um número inteiro. Mais especificamente, do ponto de vista do sistema operacional, é uma coleção de instruções (programa) mais os dados necessários à sua execução. Armazenados juntamente com o processo estão o seu contexto, ou seja, o contador de instruções, e o conjunto de todos os registradores da CPU. É responsabilidade do sistema operacional gerenciar os processos do sistema, de forma que, se um processo tenta ler ou escrever em um disco, por exemplo, este processo ficará em estado waiting (suspenso) até que a operação seja completada.
Nesse ínterim, outro processo será habilitado a correr, desperdiçando assim o mínimo do tempo da CPU, memória e demais periféricos. O Minix suporta inclusive um procedimento de “escrita retardada”, quando escrevemos em algum arquivo. No momento da escrita, o buffer que contém estes dados é simplesmente marcado como “sujo” (dirty), e o sistema operacional escolhe o instante mais apropriado para descarregar esse buffer no disco físico. Isso explica a necessidade que temos de executar um procedimento de parada (shutdown ) antes de desligar a máquina, para evitar que fiquem dados a serem descarregados (escritos) no disco rígido.
Versões do Minix
- Compatível com a versão 7 do UNIX
- Cerca de 12.000 linhas de código C, contemplando Kernel, gerenciamento de memória, sistemas de arquivos
- Liberou o código fonte e binários através de diskets com um manual de referência
- Grupo de discussão USENET (cerca de 40.000 assinantes, em 3 meses)
Mac Minix 1.5
- Baseado na segunda versão do livro de Tanenbaum
- Disponível apenas para x86, Solaris em arquitetura SPARC
- Adicionou o padrão POSIX
- Disitribuído a partir de CD-ROM
- Foi reprojetada para ser “usada como um sistema sério sobre recursos limitados e computadores embarcados e para aplicações que requerem alta confiabilidade”
- Suporta apenas arquitetura IA-32
- Disponível a partir de LiveCD
- Licença FreeBSD
Minix2 vs Minix3
- Instalação baseada em LiveCD
- Sistema de janelas X Window
- Suporte até 4GB de memória
- Blocos de disco com tamanhos: 1, 2, 4 ou 8KB
- Adição das chamadas de sistema “Select”
- Inclusão de novos programas: gcc, g++, emacs, pyton, perl, etc
- Servidor de informação para depuração
- Reincarnation Server que “mata” e substitui drivers defeituosos em tempo de execução.
- Reescrita do Kernel e diminuição de cerca de 4000 linhas de código
- Cada driver de dispositivo (exceto o relógio) é um processo do usuário separado
- Novas características de confiabilidade
- Mecanismo de Comunicação entre Processos não bloqueante
- Melhoria no gerenciamento do Timer
- Escalonador se tornou mais geral
- etc…
Gerenciamento de Memória no Minix
- Gerenciamento simples: não utiliza paginação nem troca (swap) com o disco
- Compatibilidade com computadores antigos
- Não faz parte do Kernel
- É tratado pelo gerenciador de memória que executa no espaço do usuário e comunica-se com o Kernel por mensagens
- Memória é alocada quando um processo executa chamadas de sistemas como FORK ou EXEC
- O gerenciador de memória monitora a memória livre através de uma lista de lacunas e do algoritmo do primeiro ajuste
- O seu maior trabalho é executar as chamadas de sistemas relacionadas com o gerenciamento de memória.