Saltar para o conteúdo

MINIX: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
(Sem diferenças)

Revisão das 13h05min de 29 de outubro de 2004

O Minix é uma versão do Unix, porém, gratuita e com o código fonte disponível. Isso significa que qualquer programador experiente pode fazer alterações nele. Ele foi criado originalmente para uso educacional, para quem quisesse estudar o Unix "em casa". No entanto, vale citar que ele foi escrito do “zero” e apesar de ser uma versão do Unix, não contém nenhum código da AT&T e por isso pode ser distribuído gratuitamente. HARDWARE NECESSÁRIO o Multiprogramação por completo (múltiplos programas pode rodar de uma vez ). o Roda em 286, 386, 486, Pentium. o Suporta memória estendida (16MB no 2686 e 4GB no 386, 486 e Pentium). o RS-232 serial line suporte com terminal emulation, kermit, zmodem, etc. o Máximo de três usuários simultaneamente na mesma máquina. o Sistema de chamada compatível com POSIX. o Inteiramente escrito em C (SO, utilitários, bibliotecas etc.). o Compilador ANSI C. o Shell funcionalmente idêntico ao Bourne shell. o Rede TCP/IP. o 5 editores (emacs subset, vi clone, ex, ed, and simple screen editor). o Mais de 200 utilitários (cat, cp, ed, grep, kermit, ls, make, sort, etc.). o Mais de 300 bibliotecas (atoi, fork, malloc, read, stdio, etc.).


ESTRUTURA DO MINIX

O Minix é organizado em quatro camadas, onde a camada 1 e 2 formam o kernel:

1º) Gerenciamento de Processos •Captura interrupções e traps, salvar e restaurar registradores, agendar as demais funções para realmente fazer a abstração de processo; •Gerenciar a mecânica das mensagens, verificar destinos legais, localizar buffers de envio e recebimento de memória física e copiar bytes do remetente para o destinatário.


2º) Tarefas de Entrada e Saída •Processos de IO, um por dispositivo; •As tarefas de IO são chamadas drivers de dispositivos; •As tarefas não podem executar todas as instruções no nível da máquina, nem podem acessar todos os registradores da CPU, ou todas as partes da memória, ao contrário da camada 1; •Porém podem acessar regiões da memória que pertencem a processos com menos privilégios.

3º) Processos de Servidor •Contém processos que fornecem serviços úteis ao usuário; •Existem em um nível menos privilegiado que o kernel;

4º) Processos de Usuário •Shell, editores, compiladores, etc.

PROCESSOS NO MINIX

Os processos são uma parte muito relevante dos sistemas operacionais, pois eles trabalham em cima dos processos. Um processo é um programa sendo executado. 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. Processos são entidades independentes, cada um com suas permissões de acesso, e têm atribuídos propriedades como o id do usuário que o criou (UID) e do grupo (GID). Grande parte de sua execução se processa em user-mode, quando o processador não admite a execução de instruções privilegiadas, mas em certos instantes (durante uma chamada de sistema), ele executa em kernel-mode 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. É responsabilidade do sistema operacional gerenciar os processos do sistema, de forma a maximizar a utilização da CPU (que usualmente é só uma), 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 de entrada/saída seja completada. Nesse ínterim, outro processo será habilitado a rodar, desperdiçando assim o mínimo do tempo da CPU, memória e demais periféricos. O Linux 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. Processos são a base da multitarefa nos computadores modernos, multitarefa é o ato de um computador fazer várias operações ao mesmo tempo. O processo pode ser executado durante um determinado tempo que é dado pelo escalonador da CPU, o escalonador da CPU faz com que os processos recebam tempos iguais para sua execução, este tempo só é quebrado no caso de um processo executar I/O (entrada e saída). Existem os estados em que os processos podem estar, são eles: Novo, pronto, em execução, em espera, encerrado. Cada processo tem um bloco de controle de processo (PCB), que é onde está definido qual o estado do processo, também é definido no PCB algumas outras particularidades do processo como limites da memória, registradores, número do processo.