Evolução dos sistemas operacionais

Primeira geração (1945-55)

Monoprogramação

Linguagens de programação desconhecidas (nem mesmo o Assembly), o sistema operacional era desconhecido.

O programador reservava um período de tempo para descer ao lugar da máquina e inserir suas correções no computador, gasta algumas horas esperando que nenhuma das 20000 válvulas queimasse durante o exercício.

O universo de problemas consistia em : simples cálculos matemáticos e tabelas de senos e cosenos.

Segunda geração (1955-65):

Um sistema de lote primitivo (batch systems):

a) programadores trazem cartões para o 1401

b) o 1401 lê os jobs em lote na fita

c) o operador leva a fita de entrada para o 7094

d) o 7094 realiza a computação

e) o operador leva a fita de saída para o 1401

f) o 1401 imprime a saída

Obs.: job – significa programa ou conjunto de programas

Sistemas operacionais típicos na época eram o FMS (FORTRAN MONITOR SYSRTEM) e o IBSYS do IBM7094

Terceira Geração (1965-80)

Multiprogramação

A IBM em sua série 360 lançou o conceito de família para atender seus principais usuários (o pequeno e o grande).

A idéia de família era ao mesmo tempo sua principal fraqueza. A intenção era que todo "software" (incluindo o S. O.) TINHA QUE TRABALHAR EM TODOS OS MODELOS. Ele tinha de executar em sistemas pequenos, que freqüentemente substituíam o 1401 para copiar cartões em fita, e em sistemas muito grandes que freqüentemente substituíam os 7094 para fazer previsão do tempo e outros cálculos pesados. Ele tinha que funcionar em ambientes comerciais e ambientes científicos e acima de tudo tinha de ser eficiente para todos esses diferentes usos.

Como não há como escrever um "software" para atender a todos esses requisitos conflitantes, o resultado era um S.O . extraordinariamente complexo e grande (2 a 3 ordens de grandeza maior que o FMS. Consistia em milhares de linhas de linguagem assembler contendo milhares de bugs (erros na codificação ou na lógica que faz com que um programa não funcione corretamente ou que produza resultados incorretos), necessitando de contínuo fluxo de novas versões na tentativa de corrigi-los (corrigindo uns e acrescentando outros)

Os sistemas operacionais de terceira geração fizeram uso de algumas técnicas-chaves sendo a mais importante a chamada multiprogramação.

Multiprogramação voltada ao uso científico é pequena pois o tempo de utilização de E/S é menor que 10%.

Multiprogramação voltada ao uso comercial é muito maior pois o tempo de utilização de E/S é de 80% a 90%.

Dividiu-se a memória em várias partições com um job diferente em cada partição.

Ex:

>

Enquanto um job estava esperando uma operação de E/S completa-se outro job podia usar a CPU. Sem que um número suficiente de jobs pudesse ser mantido na memória principal simultaneamente a CPU poderia ficar ocupada quase 100% do tempo. Ter múltiplos jobs em memória simultaneamente requer "hardware" especial para evitar que um job prejudique outro.

Outro importante recurso do IBM360 era a capacidade de ler jobs de cartões para o disco logo que eles eram trazidos para a sala de computador. Então sempre que um job em execução acabava, o S. O . podia carregar novo job do disco na partição agora vazia e executá-lo. Essa técnica é chamada "SPOOLING (Simultaneous Peripheral Operation On Line – Operação periférica simultânea on line)" e era também utilizada para a saída. Com o SPOOLING , os 1401 não eram mais necessários e acabava grande parte do trabalho de carregamento de fitas.

Embora os S.O . de terceira geração servissem bem para cálculos científicos e aplicações comerciais com grandes volumes de processamento de dados, eles eram ainda basicamente sistemas de lote.

OBS:

Na primeira geração o programador tinha a maquina toda para si, depuração rápida.

Na terceira geração o uso da maquina era compartilhado e a depuração podia ser muito lenta, já que cada erro demorava metade de um dia para ser identificado.

A necessidade de tempo de resposta rápido preparou o caminho para o "compartilhamento do tempo", uma variante da multiprogramação na qual cada usuário tinha um terminal "on-line". Em um sistema de tempo compartilhado se 20 usuários efetuavam LOGON e 17 deles estavam pensando, conversando ou bebendo café, a CPU podia estar alocada para os 3 jobs que requeriam processamento. Como as pessoas que depuram programas normalmente utilizam comandos curtos (ex: compilar um procedimento de 5 paginas) em vez de longos (ex: classificar um arquivo de um milhão de registros) o computador pode oferecer serviço rápido e interativo para alguns usuários e talvez trabalhar com grandes trabalhos em lote em segundo em segundo plano quando a CPU esta desocupada.

OBS:

CTSS foi o primeiro sistema de tempo compartilhado sério, desenvolvido no MIT em um 7094

O compartilhamento de tempo não se popularizou realmente até a necessária proteção de "hardware" se tornasse comum durante a terceira geração.

Após o êxito do CTSS, o MIT , a BELL LABS e a General Eletric decidiram dedicar-se ao desenvolvimento de um "Computer Utility" uma máquina que suportaria centenas de usuários de tempo compartilhado simultaneamente. Seu modelo era o sistema de eletricidade (ou seja, quando necessitamos de energia elétrica basta nos conectarmos a tomada a um plug na parede e dentro do possível toda a energia necessária estará disponível). Este sistema é chamado MULTICS (MULTIPLEXED INFORMATION AND COMPUTING SERVICE – Serviço de computação e informação multiplexado) vislumbraram uma máquina para oferecer um enorme poder de cálculo para todos em BOSTON.

OBS:

A idéia de máquinas muito mais poderosas do que o GE645 vendidos como computadores pessoais por alguns milhares de dólares só 30 anos mais tarde era pura ficção cientifica.

O conceito de "COMPUTER UTILITY" virou um fiasco a medida que os preços dos computadores despencaram.

OBS:

Um cientista de computação do BELL LABS , Ken Thompson descobriu um pequeno microcomputador PDP-7 que ninguém estava usando e começou a escrever uma versão simplificada, mono-usuário do MULTICS. Este trabalho mais tarde desenvolveu-se no sistema operacional UNIX, tornando-se popular no mundo todo.

O UNIX surgiu no mercado como um sistema operacional cujo código estava amplamente disponível (o que fez com que outras organizações tentassem cloná-lo que gerou o desenvolvimento de suas próprias versões, totalmente incompatíveis, levando ao caos.

O IEE desenvolveu um padrão para o UNIX chamado POSIX que define a interface mínima de chamadas de sistema que sistemas compatíveis com o UNIX devem suportam. Atualmente outros S. O . suportam a interface POSIX.

Quarta Geração (1980-dias atuais)

Computadores pessoais

O LSI ( Large Scale Integration - Integração em larga escala) e o VLSI ( Very Large Scale Integration – Integração em muito larga escala ) fez favorecer a era dos computadores pessoais.

A ampla disponibilidade do poder da computação (especialmente aquela com alta interatividade e com excelentes gráficos) levou ao crescimento de uma importante industria de produção de "software" para computadores pessoais. Grande parte deles tem uma "interface amigável" , ou seja, projetada para um perfil de usuários que: não só ignoram tudo sobre computadores como também não tem nenhuma intenção de aprender. Essa é certamente uma mudança importante desde o modelo OS/360, cuja linguagem de controle, JCL (JOB CONTROL LANGUAGE – linguagem de controle de trabalhos) tão complexa que livros inteiros foram escritos sobre ele.

Dois sistemas operacionais inicialmente dominaram a cena dos computadores pessoais e das "workstations" (estações de trabalho) : o MSDOS e o UNIX.

O MSDOS era amplamente utilizado pelos IBM-PC e em outras máquinas que utilizaram a CPU INTEL 8088 e seus sucessores 80286, 80386, 80486 Pentium, Pentium Pro, etc...

Embora a versão inicial do MSDOS fosse relativamente primitiva, as posteriores incluíram recursos mais avançados, inclusive muitos tomados do UNIX.

O sucessor da Microsoft para o MSDOS, o WINDOWS originalmente rodava sobre o MS-DOS (era mais um SHELL do que um sistema operacional verdadeiro) mas em 1995, foi lançada a versão "independente do WINDOWS, o WINDOWS 95. Esta nova linha passou por aperfeiçoamentos gerando o termo plataforma WINDOWS 9.X .

Outro sistema operacional da Microsoft é o WINDOWS NT, compatível com a plataforma WINDOWS 9.X até certo nível, mas que foi completamente rescrito internamente. O WINDOWS 2000 é uma evolução do WINDOWS NT.

Outra importante concorrente é o UNIX que é dominante em estações de trabalho e em outros computadores topo de linha, como servidores de rede, e especialmente popular em maquinas equipadas com chips RISC de alto desempenho.

Um desenvolvimento interessante que começou durante meados da década de 80 é o crescimento de redes de computadores pessoais executando "sistemas operacionais de rede" e "sistemas operacionais distribuídos".

Os sistemas operacionais de rede não são fundamentalmente diferentes dos sistemas operacionais monoprocessados. Eles necessitam de uma interface de rede e de algum "software de baixo nível para controla-lo, assim como programas para permitir conexões remotas e acesso a arquivos remotos. Tais adições não mudam a estrutura do S.O.

Um sistema operacional distribuído, ao contrário, é aquele que aparece para seus usuários como um sistema monoprocessado tradicional mesmo que realmente seja composto de múltiplos processadores. Os usuários não sabem onde seus programas estão sendo executados nem onde seus arquivos estão localizados; tudo isso deve ser manipulado de forma automática e eficiente pelo S.O.

O Conceito de Sistema Operacional

A interface entre o S. O. e os programas de usuário é definido pelo conjunto de "instruções extendidas" que o S.O proporciona.

Tradicionalmente foram conhecidas como "CHAMADAS DE SISTEMA" (SYSTEM CALLS), embora possam ser implementadas de várias maneiras hoje.

AS "System Calls" disponíveis na interface variam de S.O para S.O (embora os conceitos possam ser semelhantes).

Assim somos forçados a fazer uma escolha entre:

1) Generalidades vagas ("sistemas operacionais tem chamadas de sistemas para ler arquivos")

2) Algum sistema específico (o MINIX tem uma chamada de sistema READ com três parâmentros :

- para especificar o arquivo

- para dizer onde os dados devem ser colocados

- para indicar quantos bytes serão lidos

Vamos escolher a abordagem 2 que embora mais trabalhosa oferece uma visão melhor do que é o S.O como um todo.

OBS: O MINIX é um S.O baseado no UNIX, portanto as SYSTEM CALLS deste são aplicáveis ao UNIX.

As System Calls do UNIX dividem-se a grosso modo em duas categorias:

a) aquelas que lidam com processos

b) aquelas que lidam com sistemas de arquivos

 

 

 


1