Você está na página 1de 6

Material Complementar EA869 (Prof.

Von Zuben DCA/FEEC/Unicamp)

UNIX: Uma Breve Apresentao


1. Introduo
Este documento procura explorar os aspectos histricos envolvidos no desenvolvimento do sistema operacional UNIX com o objetivo de compreender melhor os princpios bsicos associados a este sistema operacional interativo, de tempo compartilhado e multiprogramado (paralelismo aparente utilizando um nico processador). Os pontos fortes do sistema operacional UNIX esto em sua portabilidade atravs de mltiplas plataformas de hardware, sua interface de programao de aplicativos e sua adoo como sistema operacional de um grande nmero de sistemas de computadores independentes. A essncia do UNIX est no fato dele ter sido projetado por programadores para programadores, com o objetivo de apresentar um pequeno nmero de elementos bsicos que possam ser combinados de diversas formas na realizao dos mais variados tipos de tarefas. No entanto, fato que as verses mais recentes do UNIX refletem cada vez menos os aspectos associados com sua idia original de simplicidade e portabilidade, apresentando inclusive problemas de padronizao e verses incompatveis. Apesar disso, as diversas verses do UNIX ainda rodam em mais arquiteturas de computador do que qualquer outro sistema operacional conhecido, tendo inclusive sobrevivido a diversas mudanas tecnolgicas ocorridas desde seu lanamento.

2. Breve relato da histria do UNIX


Boa parte dos textos que se ocupam em descrever o sistema operacional UNIX apresentam inicialmente um relato dos aspectos histricos envolvidos em seu desenvolvimento, sem, no entanto, explicar por que a histria do UNIX importante para o seu entendimento. Todos os pontos fortes e fracos do UNIX podem ser diretamente relacionados com a histria do seu desenvolvimento, que teve incio em meados dos anos 60 com a criao de um projeto conjunto entre Massachusetts Institute of Technology (MIT), General Electric e Bell Labs (mais especificamente Bell Telephone Laboratories, companhia controlada pela AT&T) para o desenvolvimento de um sistema operacional com compartilhamento de tempo. Este sistema operacional foi denominado MULTICS (MULTiplexed Information and Computing Service), no tendo o sucesso esperado, principalmente porque o projeto era muito ambicioso para a poca e, alm disso, o sistema operacional foi escrito em uma linguagem muito pesada, com compilador ineficiente (TANENBAUM, 1992). A equipe da Bell Labs abandonou o projeto em 1969. Mas Ken Thompson, um dos membros desta equipe e conhecedor do potencial do MULTICS, sentiu a necessidade de desenvolver um sistema operacional com os mesmos propsitos, mas de uma forma bem mais simples e utilizando linguagem assembly. Como o sistema desenvolvido por Thompson funcionou muito bem, ele comeou a atrair a ateno de seus colegas da Bell Labs, sendo que um deles, Brian Kernighan, chamou-o de UNICS (UNiplexed Information and

UNIX: Uma Breve Apresentao

Material Complementar EA869 (Prof. Von Zuben DCA/FEEC/Unicamp)

Computing Service), parodiando MULTICS. Esta denominao pegou, sendo, mais tarde, reduzida definitivamente para UNIX. Conforme o sistema UNIX ia sendo transportado para arquiteturas de computador cada vez mais poderosas, ficou evidente que era preciso eliminar a necessidade de se reescrever todo o sistema operacional em linguagem assembly para cada nova mquina. Esta foi uma viso inovadora, pois at ento a linguagem assembly era considerada indispensvel para garantir funcionalidade efetiva e acesso irrestrito ao hardware. Depois de uma tentativa sem muito sucesso de reescrever o UNIX em uma linguagem de alto nvel desenvolvida pelo prprio Ken Thompson (denominada linguagem B), foi seu colega Dennis Ritchie quem projetou uma linguagem especificamente voltada para a implementao de um sistema operacional, a qual ele denominou linguagem C. A linguagem C uma linguagem de alto nvel, mas apenas o suficiente para manter a portabilidade junto a vrias arquiteturas de computador. Uma vez implementado o compilador C, Ritchie e Thompson reescreveram a maior parte do UNIX em C (RITCHIE & THOMPSON, 1974). Em linhas gerais, a verso original do sistema operacional UNIX satisfazia os seguintes requisitos, considerados inovadores no contexto de sistemas operacionais: simplicidade e elegncia; escrito quase que totalmente em uma linguagem de alto nvel (linguagem C). Apenas uma pequena parte do cdigo do sistema UNIX teve que ser escrita em linguagem assembly (denominada ncleo do sistema operacional), por depender das caractersticas da mquina alvo. Destacam-se como cdigos dependentes da mquina as rotinas para tratamento de interrupo, parte das rotinas para gerncia de memria e drivers de dispositivos do sistema de entrada/sada; permisso de reutilizao de cdigo. Uma vez controlada pela AT&T, monoplio da rea de telecomunicaes, a Bell Labs no tinha permisso para operar comercialmente na rea de computao. Sendo assim, a Bell Labs no impunha muitos obstculos para licenciar o UNIX, o que motivou muitas universidades a solicitarem cpias deste sistema operacional. Foram trs as principais razes para o enorme sucesso do UNIX junto s universidades: a ltima implementao do UNIX na Bell Labs havia sido desenvolvida para a mquina PDP-11, a qual equipava boa parte dos departamentos de computao das universidades; o sistema operacional original da PDP-11 era muito ruim; o UNIX era fornecido com o cdigo-fonte completo, o que permitiu que novas idias e muitos melhoramentos fossem rapidamente incorporados ao sistema. Com acesso ao cdigo-fonte e contando com a presena de Ken Thompson em seu ano sabtico, a University of California at Berkeley ganhou condies para desenvolver mais rapidamente sua prpria verso do UNIX, que gradativamente adicionou recursos como o editor vi, o C shell, memria virtual,

UNIX: Uma Breve Apresentao

Material Complementar EA869 (Prof. Von Zuben DCA/FEEC/Unicamp)

envio de mensagens eletrnicas e suporte para TCP/IP (Transmission Control Protocol/Internet Protocol). Por outro lado, a AT&T se desmembrou em 1984, por imposio do governo norte-americano, em vrias companhias independentes. Uma destas companhias foi a UNIX System Laboratories (USL)1. Como conseqncia destes acontecimentos, o UNIX passou a apresentar duas verses principais: System V: mais conservativa, comercial e com melhor suporte, desenvolvida pelo UNIX System Laboratories (USL); BSD (Berkeley Software Distribution): desenvolvida na University of California at Berkeley. H muitas outras verses alm destas duas, mas que geralmente derivam de uma delas. Recentemente, as verses de UNIX que so efetivamente empregadas incorporam caractersticas das duas verses principais, sendo que o UNIX de hoje bem diferente do UNIX do incio dos anos 70, tendo sofrido desde ento um processo evolutivo contnuo, com suas principais fases ilustradas na figura 1.
UNICS (1969)

5a edio (1973)

6a edio (1976)

7a edio (1978)

SVR5 (1983)

BSD (1979)

SunOS 5.x/Solaris (SUN) HP-UX (HP) AIX (IBM) IRIX (SGI) Digital UNIX (DEC)

SunOS 4.x (SUN) ULTRIX (DEC) NextStep (NeXT)

Figura 1 - A rvore genealgica do UNIX 2.1. A padronizao do UNIX At por volta de 1988, o UNIX no conseguia emplacar fora do meio acadmico e das grandes empresas comerciais, principalmente devido existncia de duas verses principais incompatveis: System V e BSD. Isto porque no era possvel que fornecedores de software escrevessem pacotes de programas UNIX que rodassem em qualquer sistema UNIX, como ocorre com o Windows.

A UNIX System Laboratories (USL) passou em 1993 a ser uma subsidiria da Novell (maior fornecedora mundial de softwares de

rede). Em 1995, a SCO (Santa Cruz Operation), empresa de Douglas Michels no norte da Califrnia, adquiriu da Novell os direitos de licenciamento do cdigo-fonte do UNIX.

UNIX: Uma Breve Apresentao

Material Complementar EA869 (Prof. Von Zuben DCA/FEEC/Unicamp)

O Comit de Padronizao do IEEE representou a primeira tentativa sria em estabelecer um padro para o sistema operacional UNIX. O nome escolhido para o projeto foi POSIX (Portable Operating System), com o sufixo IX lembrando UNIX. A linguagem C tambm foi padronizada pela ISO e pela ANSI. No entanto, para rivalizar com a AT&T, um grupo de empresas liderado por IBM, DEC e Hewlett-Packard (HP) formou o consrcio OSF (Open Software Foundation), cujo objetivo era seguir no apenas o padro POSIX, mas padres adicionais para definio de janelas, interface grfica e processamento distribudo. A reao da AT&T foi a formao de seu prprio consrcio, o UI (UNIX International). Os padres definidos por estes dois consrcios esto evoluindo em direes diferentes, o que certamente no trar benefcios para usurios e fornecedores de software para UNIX.

3. A linguagem C e a interface de programao de aplicativos


Muitos sistemas operacionais apresentam uma viso simplificada do conjunto de operaes a serem realizadas por um aplicativo. Um aplicativo tpico l algum dado em disco, fita ou terminal e realiza algum processamento. A sada produzida em disco, fita, terminal ou impressora. Sendo assim, os sistemas operacionais geralmente fornecem recursos implementados otimamente e de fcil acesso para suportar estes tipos de operaes. No entanto, quando as operaes se tornam mais sofisticadas, um sistema operacional necessita de novos recursos, como acesso rede, gerenciamento simultneo de mltiplas tarefas e comunicao entre processos. Em sistemas operacionais tradicionais, estes novos recursos no esto diretamente disponveis, no so bem documentados e so implementados apenas em linguagem assembly. Com isso, quando um aplicativo precisa recorrer a estas operaes sofisticadas, os programas associados podem ser muito mais complexos e de difcil manuteno. Pelo fato da linguagem C ter sido escrita especificamente para ser utilizada na implementao de um sistema operacional, ao invs de atender apenas s aplicaes tradicionais de entrada-processamentosada, o uso destes novos recursos pode ser implementado diretamente, sem recorrer a qualquer tipo de cdigo em linguagem assembly. Alm disso, a documentao associada a estas operaes sofisticadas est no mesmo formato e localizao que a documentao associada aos aplicativos normais. O padro de desenvolvimento do UNIX fornece uma interface de programao de aplicativos que permite, com base na linguagem de programao C, o acesso imediato a estas novas facilidades. Isto possibilita que aplicativos muito mais sofisticados sejam prontamente desenvolvidos. Como exemplo, boa parte dos pacotes de software disponveis para UNIX e de domnio pblico so distribudos como programas em linguagem C, que devem ser compilados antes de serem utilizados. Logo, os desenvolvedores de sistemas UNIX e de aplicativos (para sistema operacional UNIX) escrevem seus programas na mesma linguagem e utilizando a mesma interface de programao. Este quadro se ope quele existente no caso de sistemas operacionais tradicionais, em que os desenvolvedores do sistema operacional programam em linguagem assembly e tm acesso a inmeros recursos no disponveis aos desenvolvedores de aplicativos. UNIX: Uma Breve Apresentao

Material Complementar EA869 (Prof. Von Zuben DCA/FEEC/Unicamp)

4. A popularidade do UNIX
Dentre os motivos mais empregados para justificar o sucesso do sistema operacional UNIX esto: apenas uma pequena parcela do cdigo do UNIX escrito em linguagem assembly, o que aumenta a portabilidade de hardware (capacidade de rodar nos mais variados tipos de sistemas de computadores); sua interface de programao de aplicativos permite que os mais diferentes tipos de aplicativos sejam facilmente implementados sob o sistema operacional UNIX sem a necessidade de se recorrer linguagem assembly. Com isso, a portabilidade destes aplicativos junto a diferentes plataformas de hardware relativamente elevada; como muitas empresas de computadores adotaram o sistema UNIX, possvel construir redes compostas por mltiplos sistemas de computadores; a interface do UNIX com o ambiente de rede j parte integrante do sistema operacional, permitindo, por exemplo, uma implementao eficiente de correio eletrnico e conexo via Internet; como a filosofia do UNIX projetar cada programa para desempenhar otimamente uma nica funo, ele flexvel e fcil de adaptar para necessidades especficas. Com isso, o UNIX pode ser considerado um sistema aberto, que permite portabilidade de hardware, de aplicativos e de usurio (apresentando a mesma interface com o usurio independente da mquina). Embora os usurios finais no sejam os beneficirios diretos da portabilidade de hardware e da portabilidade de aplicativos, a existncia de diversas empresas fornecendo o mesmo sistema operacional e as mesmas solues de software contribuiu para uma queda acentuada no custo dos sistemas de computao. Este um dos pontos chaves para explicar o sucesso do sistema operacional UNIX. O UNIX representou um papel decisivo no processo de substituio gradual dos grandes computadores (mainframes) por computadores de mesa, dotados de hardware mais rpido, mais moderno e mais barato. A importncia do UNIX neste processo se deve aos seguintes fatores: boa parte das bem-sucedidas empresas de computao, que emergiram a partir do incio dos nos 80, produziam um melhor hardware que as grandes fabricantes, como DEC e IBM; estas mesmas empresas emergentes de computao no podiam arcar com os custos de tempo e dinheiro para desenvolver um sistema operacional proprietrio, e acabaram recorrendo ao UNIX. Portanto, principalmente a partir de 1985, se algum precisasse adquirir um computador moderno e barato, esta pessoa certamente iria adquirir um computador rodando UNIX. Um outro fator importante para o sucesso do UNIX o papel representado pelas universidades. Por questes histricas, j mencionadas anteriormente, o UNIX teve uma grande aceitao no meio acadmico, fazendo com que praticamente todos os alunos vinculados rea de computao entrassem em contato com este sistema operacional. Sendo assim, a cada ano as universidades tm fornecido ao UNIX: Uma Breve Apresentao

Material Complementar EA869 (Prof. Von Zuben DCA/FEEC/Unicamp)

mercado de trabalho uma legio de especialistas em UNIX. Com isso, empresas que operam com o sistema operacional UNIX no tm qualquer dificuldade em encontrar mo-de-obra qualificada, atualizada e imediatamente disponvel. Um ltimo fator decisivo tem sido o processo de contnua evoluo do sistema operacional UNIX, para atender inovaes tecnolgicas que geram demandas por novos recursos. Enquanto os usurios reclamam por novos recursos, os desenvolvedores de verses do UNIX so compelidos a criar novos recursos que impulsionem suas vendas com base em requisitos de marketing. No entanto, a incorporao sem critrios de novos recursos no um ponto positivo do UNIX, que vai ganhando verses mais complexas e com portabilidade reduzida, alm do perigo representado pela evoluo das diversas verses em direes distintas. Apesar disso, o sistema operacional UNIX no pode prescindir deste processo evolutivo sob pena de perder sua atratividade em comparao com outros sistemas operacionais concorrentes.

5. Referncias bibliogrficas
TANENBAUM, A.S. Modern Operating Systems. Prentice Hall Inc., 1992. RITCHIE, D.M. and THOMPSON, K. The UNIX Timesharing System. Commun. of the ACM, vol. 17, pp. 365-375, 1974.

UNIX: Uma Breve Apresentao