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?

Um comentário sobre “A história dos sistemas operacionais como conhecemos hoje

Deixar mensagem para Rogerio J. Cancele a resposta