sábado, 9 de junho de 2012

Arquitetura Unix



Histórico

Década de 1960
O responsável pelo desenvolvimento do sistema Unix foi Ken Thompson chamando de Unics( UNiplexed Information and Computing Service) e, posteriormente Unix. Inicialmente ele foi desenvolvido em assembly para um minicomputador, mas para torná-lo mais fácil de ser portado em outras plataformas foi desenvolvida uma linguagem de alto nível, e reescreveu o código do sistema nessa nova linguagem.

Em 1991, o finlandês Linus Torvalds começou o desenvolvimento Linux, com base no em suas experiências com o sistema Minix. O Linux evoluiu a partir da colaboração de vários programadores que ajudaram no desenvolvimento do kernel, utilitários e vários aplicativos.

A imagem a segui mostra as diversas ramificações do Unix.

Microsystem (SunOS e Solaris), HP (HP-UX), IBM (AIX) e compaq(Compaq Unix).

Características

Unix é um sistema operacional multiprogramável, multiusuário, que suporta múltiplos processadores e implementa memória virtual . Com as características a seguir:
  • Escrito em linguagem de alto nível, tornando fácil a compreensão e alteração do seu código e portabilidade para outras plataformas de hardware;
  • Oferece um conjunto de system calls que permite que programas complexos sejam desenvolvidos a partir de uma interface simples;
  • Flexibilidade, podendo se utilizado como sistema operacional de computadores pessoais, estações de trabalho e servidores de todos os portes, voltados para bando de dados, web, correio eletrônico e aplicação;
  • Implementação de threads, em algumas versões , e diversos mecanismos de comunicação e sincronização, como memória compartilhada, pipes e semáforos;
  • Suporte a um grande número de aplicativos disponíveis no mercado, sendo muitos gratuitos;
  • Suporte a diversos protocolos de rede, como o TCP/IP, e interfaces de programação, como sockets, podendo ser utilizado como servidor de comunicação, roteador, firewall e Proxy;
  • Implementação de sistema de arquivos com uma estrutura bastante simples, onde os arquivos são representados apenas como uma sequência de bytes. Além disso, existem diversas opções para sistemas de arquivos distribuídos, como NFS(Network File System), AFS (Andrew File System) e DFS( Distributed File System);
  • Oferece uma interface simples e uniforme com os dispositivos de I/O.


Estrutura do sistema

A maior parte do código do Unix é escrita em C e o restante como device drivers, em assembly o que possibilita uma grande portabilidade para diferentes plataformas de hardware. O Unix utiliza a estrutura de camadas para a construção do sistema, implementando dois modos de acesso, modo usuário e modo kernel: