Conheça o Minix, o sistema que o Linus Torvalds se baseou para criar o Linux!

Conheça o Minix, o sistema que o Linus Torvalds se baseou para criar o Linux!

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.
Foi organizado em camadas, onde as duas primeiras formam o núcleo:
  • 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

Versão 1 (1987):
  • 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

Versão 2 (1997):
  • 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
Versão 3 (2005):
  • 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

Melhorias em Relação à versão 2:
Novas características:
  • 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.
Estrutura de Sistema:
  • 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.