Na década de 1940, os primeiro computadores digitais
eletrônicos não tinham sistemas operacionais. As máquinas daquela época eram tão primitivas que os programadores muitas vezes submetiam seus programas a linguagem de máquina, um bit por vez, em filas de chaves mecânicas. Com a introdução das perfuradoras de cartão, esses mesmos programas foram submetidos a cartões perfurados.
Assim, linguagens de montagem (assembly) – que usavam
abreviaturas parecidas com palavras em inglês para representar as operações básicas do computador – foram desenvolvidas para acelerar o processo de programação.
Prof. Eduardo H. S. Oliveira
Décadas de 1940 e 1950
Os laboratórios de Pesquisa da General Motors
implementaram o primeiro sistema operacional no início da década de 50 para seu computador IBM 701. Sistemas da década de 1950 geralmente executam somente um job (serviço) por vez. O job era composto de um conjunto de instruções de programas correspondentes a uma tarefa computacional particular, como folha de pagamento ou estoque. Jobs normalmente eram executados sem entradas do usuário durante minutos, horas ou dias. Esses primeiros computadores eram denominados Sistemas de Processamento em Lote de Fluxo Único porque programas de dados eram submetidos em grupos ou lotes carregando-os consecutivamente em uma fita ou disco.
Prof. Eduardo H. S. Oliveira
Décadas de 1940 e 1950
Prof. Eduardo H. S. Oliveira
Décadas de 1940 e 1950
Embora os sistemas operacionais da década de 1950
reduzissem os tempos de transmissão entre Jobs, era muito comum solicitar aos programadores que controlassem diretamente recursos do sistema como memória e dispositivos de entrada\saída, o que se mostrava um trabalho lento, difícil e tedioso. E mais, os primeiros sistemas exigiam que um programa inteiro fosse carregado na memória para poder ser executado, limitando os programadores a criar programas pequenos com capacidades reduzidas.
Prof. Eduardo H. S. Oliveira
Décadas de 1940 e 1950
Exercícios:
1 - Porque foram desenvolvidas linguagens de montagem
(assembly)?
2 - O que limitava tamanho e capacidades dos programas da
década de 50?
Prof. Eduardo H. S. Oliveira
Décadas de 1940 e 1950
Respostas:
1 - Linguagens de montagem foram desenvolvidas para acelerar
o processo de programação. Habilitavam os programadores a especificar comandos sob a forma de abreviações parecidas com palavras em inglês utilizadas pelos seres humanos para trabalhar com maior facilidade do que com instruções em linguagem de máquina.
2 - O programa inteiro tinha de ser carregado na memória para
ser executado. Como era relativamente cara, a quantidade de memória disponível naqueles computadores era pequena.
Prof. Eduardo H. S. Oliveira
A década de 1960
Os sistemas da década de 1960 também eram sistemas de
processamento em lote, mas usavam os recursos do computador mais eficientemente executando diversos jobs ao mesmo tempo. Os sistemas dessa década melhoraram a utilização de recursos permitindo que um job usasse o processador, enquanto outros utilizavam os dispositivos periféricos. Na verdade, executar uma mistura de diferentes Jobs parecia ser a melhor maneira de otimizar a utilização de recursos.
Com essas observações em mente, projetistas de sistemas
operacionais desenvolveram sistemas de multiprogramação que gerenciavam diversos jobs ao mesmo tempo.
Prof. Eduardo H. S. Oliveira
A década de 1960
Em um ambiente de multiprogramação, o sistema
operacional comuta rapidamente o processador de job em job mantendo vários deles em andamento e, ao mesmo tempo, os dispositivos periféricos também em uso. Assim, os sistemas operacionais evoluíram do processamento de um job para o gerenciamento de diversos Jobs ao mesmo tempo.
Normalmente os usuários da década de 1960 não estavam
presentes no local onde o computador estava instalado quando seus Jobs eram executados. Esses eram submetidos a cartões perfurados ou fitas de computador e permaneciam em mesas de entrada até que o operador do sistema pudesse carregá-los no computador para execução.
Prof. Eduardo H. S. Oliveira
A década de 1960
Muitas vezes o job de um usuário ficava parado durante
horas ou até dias antes de poder ser processado. O menor erro em um programa, até mesmo uma vírgula ou um ponto que faltasse, ‘bombardeava’ o job, quando então o usuário (muitas vezes frustrado) corrigiria o erro, submeteria novamente o job e mais uma vez esperaria por horas ou dias pela próxima tentativa de execução. O desenvolvimento de softwares naquele ambiente era penosamente lento.
Prof. Eduardo H. S. Oliveira
A década de 1960
Foram desenvolvidos sistemas operacionais mais
avançados para atender a diversos usuários interativos ao mesmo tempo. Usuários interativos comunicam-se com seus Jobs durante a execução. Na década de 1960, os usuários interagiam com o computador via ‘terminais burros’ (dispositivos que forneciam uma interface de usuário, mas nenhuma de processamento) on-line (ligados diretamente ao computador via conexão ativa). Foram desenvolvidos sistemas de tempo compartilhado para apoiar usuários interativos simultâneos.
Prof. Eduardo H. S. Oliveira
A década de 1960
Muitos dos sistemas de tempo compartilhado da década de
1960 suportavam processamento em lote, bem como aplicações de tempo real (sistemas de controle de processo industrial). Sistemas de real tentam dar uma resposta dentro de um certo prazo limitado. Por exemplo, uma medição realizada em um refinaria de petróleo indicando que as temperaturas estão muito altas exige atenção imediata para evitar uma explosão. É mais importante que tais sistemas dêem uma resposta rápida do que usem seus recursos eficientemente.
Prof. Eduardo H. S. Oliveira
A década de 1960
Executar tantos Jobs em lote quanto de tempo real
significava que os sistemas operacionais tinham de distinguir entre tipos de usuários e fornecer a cada um deles um nível apropriado de serviço. Jobs de processamento em lote podiam sofrer atrasos razoáveis, enquanto aplicações interativas demandavam um nível mais alto de serviço e sistemas de tempo real exigiam níveis de serviço extremamente altos.
Prof. Eduardo H. S. Oliveira
A década de 1960
Entre os mais importantes esforços de desenvolvimento de
sistemas de tempo compartilhado desse período estão o CTSS (Compatible Time-Sharing System, sistema compatível de tempo compartilhado) desenvolvido pelo MIT, o TSS (Time Sharing System, sistema de tempo compartilhado) desenvolvido pela IBM, o sistema Multics desenvolvido pelo MIT, GE e Bell Laboratories para ser o sucessor do CTSS, e o CP/CMS (Control Program/Conversation Monitor System, programa de controle/sistema monitor conversacional) que eventualmente evoluiu para o sistema operacional VM (Virtual Machine, máquina virtual) da IBM.
Prof. Eduardo H. S. Oliveira
A década de 1960
Esses sistemas foram projetados para executar tarefas
básicas de computação interativa para indivíduos, mas seu real valor provou ser a maneira como compartilhavam programas de dados e demonstravam a importância da computação interativa em ambientes de desenvolvimento de programas.
Os projetistas do sistema Multics foram os primeiros a usar
o termo processo para descrever um programa em execução no contexto dos sistemas operacionais. Em muitos casos , os usuários submetiam Jobs contendo vários processos que podiam ser executados simultaneamente.
Prof. Eduardo H. S. Oliveira
A década de 1960
O tempo de retorno – o tempo entre a submissão de um job
e o retorno de seus resultados – foi reduzido para minutos ou até segundos. O programador não precisava mais esperar horas ou dias para corrigir os erros mais simples. Podia entrar com o programa, fazer a compilação, receber uma lista de erros de sintaxe, corrigi-los imediatamente, recompilar e continuar até o programa estar livre de erros de sintaxe. Então ele podia ser executado, depurado, corrigido e concluído com economias de tempo semelhantes.
Prof. Eduardo H. S. Oliveira
A década de 1960
O valor dos sistemas de tempo compartilhado no suporte
do desenvolvimento de programas foi demonstrado quando o MIT, a GE e o Bell Laboratories usaram o sistema CTSS para desenvolver um sucessor próprio, o Multics. Esse programa foi notável por ter sido o primeiro grande sistema operacional escrito primariamente em linguagem de alto nível, e não em linguagem de montagem (assembly). Os projetistas do UNIX aprenderam com essa experiência; criaram uma linguagem de alto nível C especificamente para implementar o UNIX. Uma família de sistemas operacionais baseado no UNIX, entre eles o Linux e o UNIX Berkeley Software Distribution (BSD), evoluiu do sistema original criado por Dennis Ritchie e Ken Thompson no Bell Laboratories no final da década de 1960.
Prof. Eduardo H. S. Oliveira
A década de 1960
TSS, Multics e CP/CMS, todos incorporavam memória
virtual. Em sistemas com memória virtual, os programas conseguem endereçar mais localizações de memória do que realmente providas na memória principal, também chamada memória real ou memória física. Sistemas de memória virtual ajudam a livrar os programadores de grande parte da carga do gerenciamento da memória, liberando-os para se concentrarem no desenvolvimento de aplicações.
Prof. Eduardo H. S. Oliveira
A década de 1960
Exercícios:
1 - Como a computação interativa e a melhoria que causou no
tempo de retorno aumentaram a produtividade do programador?
2 - Quais foram os novos conceitos incorporados pelo TSS,
Multics e CP/CMS? Por que foram tão úteis para os programadores?
Prof. Eduardo H. S. Oliveira
A década de 1960
Respostas:
1 - O tempo entre a submissão de um job e o retorno de seus
resultados foi reduzido de horas ou dias para minutos ou até segundos, o que habilitava os programadores a entrar, editar e compilar programas interativamente até eliminar seus erros.
2 - TSS, Multics e CP/CMS incorporavam memória virtual. A
memória virtual permite às aplicações acesso a mais memória do que estaria fisicamente disponível no sistema, o que, por sua vez, habilita os programadores a desenvolver aplicações maiores e mais poderosas. Além disso, sistemas de memória virtual liberam o programador de grande parte da carga do gerenciamento da memória. Prof. Eduardo H. S. Oliveira