• Nenhum resultado encontrado

A Quarta Gera¸c˜ ao Microprocessadores e Computadores Pessoais

Devido a um caso antitruste que a proibia de entrada no neg´ocio de computa- dores, a AT&T foi obrigada a licenciar o c´odigo fonte do sistema operacional para quem quisesse. Com o resultado, o UNIX cresceu rapidamente e se tornou ampla- mente adotado por institui¸c˜oes acadˆemicas e diversas empresas. Em 1984, a AT&T se desfez da Bell Labs; livres da obriga¸c˜ao legal exigindo o licenciamento do royalty, a Bell Labs come¸cou a vender o UNIX como um software propriet´ario.

O Projeto GNU, iniciado em 1983 por Richard Stallman, teve o objetivo de criar um “sistema de software completamente compat´ıvel com o Unix”, composto inteiramente de software livre. O trabalho come¸cou em 1984. Mais tarde, em 1985, Stallman come¸cou a Free Software Foundation e escreveu a Licen¸ca P´ublica Geral GNU (GNU GPL) em 1989. No in´ıcio da d´ecada de 1990, muitos dos programas necess´arios em um sistema operacional (como bibliotecas, compiladores, editores de texto, uma Unix shell, e um sistema de janelas) foram conclu´ıdos, embora os elementos de baixo n´ıvel, como drivers de dispositivo, daemons e as do kernel foram paralisadas e n˜ao completadas.

Figura 95 – Richard Stallman - O criado do Projeto GNU.

Fonte: Google Images - www.thehindu.com.

9.22

A Quarta Gera¸c˜ao - Microprocessadores e Computadores

Pessoais (1977-1991)

Com o desenvolvimento de circuitos LSI (Large Scale Integration), chips contendo milhares de transistores em um cent´ımetro quadrado de sil´ıcio, a era do computador pessoal come¸cava. Em termos de arquitetura, os computadores pessoais n˜ao eram diferentes dos minicomputadores da classe do PDP-11, mas em termos de pre¸co eles

a maior mudan¸ca do OS/360, cujo JCL era t˜ao complexo que livros inteiros foram escritos sobre ele.

Dois sistemas operacionais dominaram a utiliza¸c˜ao do computador pessoal: o MS- DOS, escrito pela Microsoft para o IBM PC e para outras m´aquinas que usavam a CPU Intel 8088 e seus sucessores, e UNIX, que ´e predominante em m´aquinas que usam a CPU da fam´ılia Motorola 68000. Pode parecer irˆonico que o descendente di- reto do MULTICS, projetado para o gigante computador utilit´ario, ficou t˜ao popular em computadores pessoais, mas principalmente mostra como foram boas as id´eias sobre o MULTICS e o UNIX. Apesar da primeira vers˜ao do MS-DOS ser primitiva, em vers˜oes subsequentes foram incluidas diversas facilidades do UNIX.

Nos anos 80, com o surgimento dos computadores pessoais, houve grande investi- mento por parte das corpora¸c˜oes, nesses sistemas, em fun¸c˜ao das tarefas dos seus desenvolvedores da ´epoca. Entretando, em pouco tempo descobriu-se que o desem- penho retornado pelos desevolvedores, n˜ao estava sendo compat´ıvel com tal grau de investimento. Este fato fez surgir as redes de computadores, para melhorar o desempenho do desenvolvedor e dimnuir custos quanto ao compartilhamento dos recursos computacionais. Desta forma, um interessante desenvolvimento que come¸cou em meados dos anos 80 foi o crescimento de redes de computadores rodando sistemas operacionais para rede.

Num sistema operacional para rede, os usu´arios tˆem consciˆencia da existˆencia de m´ultiplos computadores e podem se conectar com m´aquinas remotas e copiar arquivos de uma m´aquina para outra. Cada m´aquina roda o seu pr´oprio sistema operacional local e tem o seu pr´oprio usu´ario (ou usu´arios). Os sistemas operacionais em rede n˜ao s˜ao fundamentalmente diferentes dos sistemas operacionais de um ´unico processador. Eles obviamente necessitam de um controlador de interface de rede e de algum software de alto n´ıvel para gerenci´a-lo, bem como de programas para concluir com ˆexito uma conex˜ao remota e o acesso a arquivos remotos, mas essas adi¸c˜oes n˜ao mudam a estrutura essencial do sistema operacional.

Com as redes, a partir dos anos 80, os sistemas distribu´ıdos foram sendo desenvolvidos e sistemas operacionais distribu´ıdos passaram a ser usados. Um sistema operacional

9.22. A Quarta Gera¸c˜ao - Microprocessadores e Computadores Pessoais (1977-1991) 161

distribu´ıdo, em contraste, aparece para o usu´ario como um sistema tradicional de um ´unico processador, mesmo sendo composto realmente de m´ultiplos processadores. Num verdadeiro sistema distribu´ıdo, os usu´arios n˜ao tˆem consciˆencia de onde os seus programas est˜ao sendo rodados ou onde seus arquivos est˜ao localizados; tudo ´e manuseado autom´atica e eficientemente pelo sistema operacional. Os sistemas operacionais distribu´ıdos requerem mais do que a adi¸c˜ao de c´odigos a um sistema operacional de um processador, porque sistemas distribu´ıdos e centralizados diferem em modos cr´ıticos. Sistemas distribu´ıdos, por exemplo, frequentemente admitem rodar programas em v´arios processadores remotos, ao mesmo tempo, e da´ı exigem algoritmos de escalonamento de processadores para otimimizar a quantidade de paralelismo que deve ser conclu´ıdo com ˆexito. O atraso de comunica¸c˜ao em uma rede frequentemente significa que o tempo em um sistema distribu´ıdo, n˜ao seja conveniente ser tratado como tempo f´ısico. Essa situa¸c˜ao ´e radicalmente diferente de um sistema de um ´unico processador no qual o sistema operacional tem a informa¸c˜ao completa sobre o estado do sistema. Tolerˆancia a falhas ´e uma outra ´area em que os sistemas distribuidos s˜ao diferentes. ´E comum para um sistema distribuido ser projetado com a expectativa de que continuar´a rodando mesmo que parte do hardware deixe de funcionar. Essa exigˆencia adicional ao projeto tem enormes implica¸c˜oes para o sistema operacional.

Em 1980, trˆes tendˆencias convergiram: microcomputadores de alta performance, redes de alta velocidade, e ferramentas padronizadas para computa¸c˜ao distribu´ıda de alto desempenho. Essas convergˆencias foram fundamentais para o aprofundamento nas t´ecnicas de sistemas paralelos. A necessidade de alto poder de processamento, seja para aplica¸c˜oes cient´ıficas ou para outras aplica¸c˜oes que exijam tal poder de processamento. A implementa¸c˜ao de tais aplica¸c˜oes, s´o foi poss´ıvel com a aquisi¸c˜ao dos supercomputadores. Estes ainda continuavam com pre¸cos muito elevados. Com a tecnologia de cluster obt´em-se alto poder de processamento com baixo custo. No final de 1993, cientistas da NASA come¸caram a planejar um sistema de processa- mento distribu´ıdo com computadores Intel Desktop. Seu objetivo era fazer com que esses computadores conectados em rede se assemelhassem ao processamento de um supercomputador, e que teriam um menor custo. No in´ıcio de 1994, j´a trabalhando no CESDIS Center of Excellence in Space Data and Information Sciences, criaram o projeto Beowulf. Com 16 computadores Intel 486 DX4 conectados em uma rede Ethernet com sistema operacional Linux fizeram esse primeiro cluster chegar a um desempenho de 60 Mflops. A partir da´ı o projeto Beowulf tornou-se de grandes interesses pelos meios acadˆemicos, pela NASA entre outros segmentosTanembaum

(2010).

9.22.1

Anos 90 - Programa¸c˜ao Orientada a Objeto

Nos sistemas operacionais antigos (como o UNIX original), o usu´ario s´o podia se comunicar com a m´aquina, atrav´es de uma linha de comandos indicada por um prompt. A partir dos anos 90, nos sistemas operacionais mais modernos, esses j´a proporcionam

de equivalˆencia de objetos.

9.22.2

Programa¸c˜ao Paralela e Distribu´ıda

O campo da programa¸c˜ao paralela e distribu´ıda surgiu do campo da programa¸c˜ao concorrente. Com a evolu¸c˜ao dos microprocessadores em termos de rapidez, a ideia de dividir mais ainda um programa concorrente, fez surgir processos constru´ıdos por v´arias threads (linhas de execu¸c˜ao internas a processos). Agora, a unidade de programa¸c˜ao concorrente passa a ser a thread. As linguagens de programa¸c˜ao modernas passam a suportar o que se chama de multithreading, podendo-se ent˜ao programar paralelamente usando-se os n´ucleos internos aos processadores mais modernos (multicore programming). Al´em disso, para processamento paralelo pesado, a programa¸c˜ao paralela, hoje, passa por se usar para esse tipo de programa¸c˜ao, placas de hardware com diversos processadores paralelos (many-core programming) usadas para programa¸c˜ao paralela de aplica¸c˜oes gr´aficas (GPU), como os modernos jogos de computador. Assim, numa placa GPU pode programar, come¸cando-se com a unidade de programa¸c˜ao paralela proporcionada por uma thread, pode-se agrupar threads em blocos de threads, e pode-se agrupar blocos de threads de do que se chama uma grid de blocos de threads. Aplica¸c˜oes modernas que exigem alto desempenho, fazem uso da programa¸c˜ao paralela e, quando necess´ario, pode ser distribuida na rede.