A história do UNIX como um sistema comercial

Lembrando:

  • Multics: o primeiro sistema operacional de fato de tempo compartilhado, desenvolvido por 3 instituições e 3 nomes importantes envolvidos, que, por terem interesses distintos, não foi para frente. Criado com um proposito de ser um sistema para uma central computacional para ser usado remotamente por terminais burros, assim como telefone e TV a cabo, poderoso o suficiente para receber milhares de requisições. Em outras palavras, um servidor.

Algo que evitei explicar (termos técnicos) é o que significa Time-Sharing System: conhecemos hoje como multitarefa.

  • Unix: criado por 1 das instituições responsáveis pelo Multics, o Bell Labs da AT&T; e 2 dos desenvolvedores do Multics, Ken Thompson e Dennis Ritchie. Sistema responsável pela criação da linguagem B (Thompson) e C (Ritchie). Não só era um sistema para servidores mas também oferecia ferramentas para desenvolvedores e para escritório. Ou seja, era também um sistema Workstation.

Continuando…

O que é Unix? Pode se referir a diversas coisas:

  1. Um sistema operacional antigo criado em 1969.
  2. Uma família de sistemas operacionais derivados desse (forks).
  3. Uma marca comercial para sistemas operacionais, que no caso é chamada de UNIX.
  4. Uma filosofia de desenvolvimento de software que presa simplicidade que hoje conhecemos como KISS (Keep It Simple, Stupid!).

Hoje vou falar do item 2 e 3, a história do Unix lançado pela AT&T comercialmente.

Unix System III foi o primeiro Unix comercial derivado do Unix V7, que já estava totalmente escrito em C.  Um pouco estranho a versão dele começar em 3 ao invés de 1, né? Isso era porque dentro do Bell Labs existiam outros Unix (como se fossem distros) focadas para uma especialidade. Por exemplo, o PWB/Unix tinha como objetivo fornecer programas úteis para desenvolvimento (como o utilitário make) e que se fundiu de volta ao Unix no lançamento do V7, o CB Unix 3.0. Este era focado em banco de dados e o Unix/32V, com porte do V7 para DEC VAX, e que, não a toa, o System III foi também lançado para essa plataforma.

Código do System III pode ser encontrado aqui: http://minnie.tuhs.org/cgi-bin/utree.pl?file=SysIII

O System III, que além de possuir recursos do V7 como o compilador C, o make e o Bourne shell (que substituiu o Thompson shell como shell padrão no V7), possuía também novos recursos com intenção de trazer exclusividade comercial.

Vale ressaltar que todo fork comercial do Unix era fechado. Com intuitos comerciais, a AT&T decidiu tirar toda a transparência que o Unix original tinha e presava. Por exemplo, se você digitasse “man algumcomando” no V7, no fim do manual ia ter a sessão BUGS citando quais o programa tinha. Isso foi retirado dos Unixes comerciais.

Também ressalto que o AT&T Unix  era licenciável assim como o do Bell Labs, porém custava mais caro e apenas empresas podiam pagar e criar seu próprio Unix. Esse foi o caso de uma empresa que lançou o tal Microsoft Xenix. O Xenix começou como um derivado do V7, depois se tornou um System III e por fim um System V. Foi também um dos melhores Unix e um dos mais famosos.

O sucessor do System III foi o System V, que talvez tenha sido o maior tiro no pé da AT&T. O System V foi responsável pela guerra entre Unixes pois várias empresas adquiriam a licença e lançavam sua própria versão do System V para seus hardwares, sendo assim incompatíveis com o original. Isso dificultava para as empresas desenvolvedoras de software criarem softwares para Unix, pois chegavam a centenas de versões e não eram compatíveis entre si.

Dessa forma, a AT&T teve que lançar releases do System V que fossem cada vez mais compatíveis com o os outros como o Xenix e o SunOS, inclusive com o próprio BSD.

Com isso, um grupo de empresas que possuíam algum Unix decidiram criar uma organização que especificasse o que é um sistema UNIX. Foi aí que o termo “UNIX” se tornou uma marca comercial. Se a sua empresa possui um sistema do tipo Unix, ou seja, apesar de não ter alguma descendência com o Unix original mas possuir as caracteristicas que a Single Unix Specification (SUS) define, e, além disso, sua empresa tiver $$$ pra pagar o rótulo de Unix no seu sistema, então ele é UNIX. Esse é o caso do Inspur K-UX e do IBM z/OS que não são Unix, mas são UNIX. O IBM z/OS é derivado e considerado sucessor do OS/390 (que era um sistema operacional MVS, não um Unix), entretanto a IBM acabou incluindo a compatibilidade com a SUS nesse sistema e por este motivo ele é um sistema com certificação UNIX.

O Mac OS X é outro exemplo curioso, ele é um BSD, mais especificamente um FreeBSD. Porém o Mac OS tem certificação UNIX e o FreeBSD não tem certificação por não ter $$$ para isso. Ou seja, UNIX é um rótulo que qualquer sistema operacional pode receber, não uma definição do que é um sistema Unix (que se encaixaria nos itens 1 e 2 já citados acima).

Hoje os únicos Unixes da família System V são o IBM AIX, Oracle Solaris, HP-UX e UnixWare (que seria o próprio).

Perdendo o poder de seu Unix, a AT&T fez uma joint venture com a Novell para o lançamento do que viria ser o System V Release 4.2, nome este definido pela Novell de UnixWare.

Já a Microsoft vendeu o Xenix (motivos que todo mundo já conhece) para a Santa Cruz Operation que relançou o sistema como SCO UNIX e depois renomeado para OpenServer.

Como ironia do destino a SCO comprou o UnixWare da Novell sendo a partir de então detentora de 2 UNIXes: OpenServer e UnixWare.

Continuando esse compra-compra, a SCO foi comprada pela Xinuos que é atual detentora dos 2 UNIXes e o novo OpenServer…..cenas para um próximo capítulo.

Texto: Bruno Maximo

Revisão: Marcelo Miky

Anúncios

A história dos sistemas operacionais como conhecemos hoje

Tudo começou com Fernando Corbató, criador do CTSS no MIT e criador das famosas passwords. Sim, aquelas mesmas que você usa para logar no Facebook. O CTSS era uma prova de conceito de um Sistema de Tempo Compartilhado que o fez liderar o desenvolvimento do Multics. Multics tinha como desenvolvedores 3 instituições: MIT, Bell Labs e General Eletric. Do MIT havia como desenvolvedor o já citado Corbató e no Bell Labs os já famosos Ken Thompson e Dennis Ritchie. Multics foi um sistema operacional que não deu certo, ou melhor, deu certo até demais para a sua época e por isso hoje ele só é citado ao se falar de Unix; sem contar que o conceito que ele tentava implementar era muito diferente do que temos hoje, foi de fato o primeiro sistema operacional de tempo compartilhado. A ideia que o Multics tentava implementar era criar uma central computacional onde vários usuários pudessem acessar através de terminais burros, assim como é feito com telefonia, TV a cabo, etc. Sim, se tratava do primeiro sistema operacional a modelar o que chamamos hoje de modelo cliente-servidor, porém serviria apenas como servidor.

Como o Multics era complexo demais para sua época, ou melhor, inovador demais, e as instituições envolvidas no projeto tinham objetivos conflitantes vendo o projeto morrendo, seus criadores, que eram empregados do Bell Labs (que pertencia à AT&T ), decidiram criar um sistema com uma  proposta similar porém mais simples feito em linguagem de montagem. Eles, Ken Thompson e Dennis Ritchie criaram o Unics,  que depois foi chamado de Unix, nome dado por Brian Kernighan. Eles formaram uma equipe de desenvolvedores para criar um sistema operacional experimental que serviria para substituir o Multics. O Unix foi desenvolvido em 1969 em um computador PDP-7 parado do Bell Labs, ele foi o primeiro sistema operacional a adotar o modelo que conhecemos hoje: kernel/shell/utilitários. Sim, foi o primeiro sistema operacional a implementar o modelo cliente-servidor que conhecemos e usamos hoje.
Thompson quis facilitar o serviço que era todo feito em assembly criando uma linguagem de programação de alto nível que ele deu o nome de B baseada na linguagem BCPL. Porém, ao longo do tempo a linguagem foi se demonstrando limitada para os novos hardwares e Ritchie decidiu aprimorá-la criando sua sucessora chamada de linguagem C; pois é, aposto que poucos sabiam que a linguagem C foi criada para desenvolver o Unix.

Daí por diante, boa parte do Unix era feito em C em um PDP-11. A vantagem era a maior portabilidade de programas para qualquer outra máquina que possuísse um compilador C. O primeiro compilador C foi escrito ainda em assembly, já que era a linguagem que eles usavam para todo o sistema. Não, a linguagem B não chegou a ser usada no desenvolvimento dele, era mais uma linguagem opcional para criar programas para ele. O compilador C original foi chamado de cc (C compiler), se localizava em /bin e era escrito em assembly.

Como era desenvolvido o Unix? Comunitário ou fechado? Como o Bell Labs era um conjunto de laboratórios de pesquisa responsáveis pelos surgimentos dos transístores, LEDs, lasers, o próprio Unix e sua linguagem C, era comum o surgimento de grupos de desenvolvedores que compartilhavam código entre eles dentro do Bell Labs. Isso indica que o desenvolvimento era aberto portanto que fosse dentro do prédio, mas já era alguma coisa. Por exemplo, no próprio Bell Labs criavam-se fork do Unix e ports para outros computadores, por exemplo o PWB/Unix que tinha o foco de trazer todo um ambiente de programação dentro do Unix e o Unix/32V que era um port para computadores VAX, que no fim ambos se fundiram ao Unix. A idéia de fork era muito comum já naquela época.

O Unix não possuía versões estáveis de fato. Seu versionamento era dado de acordo com o lançamento de novos manuais, sendo assim o Unix V1, V2, V3, V4…V10.

Como o Unix na época não era um sistema útil, apenas puramente experimental, e a AT&T possuia monópolio das comunicações que impedia ela entrar no mercado da computação, o Bell Labs permitiu o licenciamento do código-fonte dele para instituições de pesquisa, vulgarmente conhecidas como universidades 😛. O CSRG (Grupo de Pesquisa de Ciência da Computação) da universidade de Berkeley foi a que realmente se beneficiou e beneficiou de volta o desenvolvimento do Unix, seu propósito era a criação de novos programas para o Unix, melhorias como correções de bugs e portabilidade para outros hardwares. Esse pacotão de funcionalidades novas criado pelo CSRG foi chamado de Berkeley Software Distribution.

O desenvolvimento do BSD era fechado ou aberto? Como se tratava de um sistema concedido a eles, então era fechado apenas para o CSRG e disponível também para o Bell Labs, mas o mesmo tipo de desenvolvimento do Bell Labs acontecia: o código rolava a solta dentro do CSRG.

O Unix acabou adotando alguma das melhorias que o BSD trouxe em suas versões seguintes já a partir do V7 (bem como melhorias do Unix comercial), o BSD acabou tendo até mais importância que o próprio Unix, tanto é que o Unix V8, V9 e V10 eram derivados (forks) do próprio BSD. No final das contas pai se tornou filho.

O Unix V7 foi considerado maduro o suficiente para começar a ser vendido comercialmente pela AT&T, aliás o Bell Labs pertencia a AT&T. A AT&T deu o nome do sistema Unix comercial de Unix System III.

Continua talvez num próximo episódio.

Obs: o modelo de desenvolvimento do Unix no Bell Labs e no CSRG o tornava um software semi-livre. “Software semi-livre é software que não é livre, mas que vem com permissão para indivíduos usarem, copiarem, distribuirem e modificarem (incluindo a distribuição de versões modificadas) para fins não lucrativos. PGP é um exemplo de programa semi-livre.”https://www.gnu.org/philosophy/categories.pt-br.html

Bibliografia: http://en.wikipedia.org/wiki/Unix , The Design and Implementation of FreeBSD Operating System de Kirk McKusick, Sistemas Operacionais Modernos de Andrew Tanenbaum e https://www.youtube.com/watch?v=JoVQTPbD6UY

E aí querem continuação?