UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e...

19
1 UNIVERSIDADE PAULISTA – UNIP FUNDAMENTOS DE SISTEMAS OPERACIONAIS PROFESSOR PAULO HENRIQUE RODRIGUES CONCEITUAÇÃO DE SISTEMA OPERACIONAL O sistema operacional pode ser visto como uma máquina estendida. O Sistema Operacional, dessa forma, funciona como uma abstração do hardware, ou seja, uma forma de simplificar, para o operador, as complexas tarefas executadas pelo hardware. Ou seja, o SO pode ser visto como um gerenciador de recursos de hardware. Nessa visão o trabalho do sistema operacional é oferecer uma alocação ordenada e controlada dos processadores, memórias e dos dispositivos de E/S entre os vários programas que competem por esses recursos. Ex: o envio de arquivos para impressão ou trazer um programa para o primeiro plano. Um computador é composto de: HARDWARE: que são os componentes mecânicos, como HD, memória RAM, placa-mãe, placa de vídeo, etc; SOFTWARE: os programas que fazem um computador armazenar, processar e recuperar informações, exibir documentos de multimídia, etc. O próprio Sistema Operacional é um software. Funcionamento do barramento de dados (bus de dados) de um computador Um sistema computacional moderno consiste de um ou mais processadores, memória principal, discos (HD), impressoras, teclado, monitor, interfaces de rede e outros dispositivos de entrada e saída. Enfim, é um sistema complexo. Desenvolver programas que mantenham o controle de todos esses componentes e os utilizem corretamente de maneira otimizada é um trabalho extremamente difícil. Por isso os computadores têm um dispositivo de software denominado SISTEMA OPERACIONAL, cujo trabalho é gerenciar esses componentes e fornecer ao usuário uma interface com o hardware de forma simplificada.

Transcript of UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e...

Page 1: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

1

UNIVERSIDADE PAULISTA – UNIP

FUNDAMENTOS DE SISTEMAS OPERACIONAIS PROFESSOR PAULO HENRIQUE RODRIGUES

CONCEITUAÇÃO DE SISTEMA OPERACIONAL

O sistema operacional pode ser visto como uma máquina estendida. O Sistema Operacional, dessa forma,

funciona como uma abstração do hardware, ou seja, uma forma de simplificar, para o operador, as complexas

tarefas executadas pelo hardware. Ou seja, o SO pode ser visto como um gerenciador de recursos de hardware.

Nessa visão o trabalho do sistema operacional é oferecer uma alocação ordenada e controlada dos

processadores, memórias e dos dispositivos de E/S entre os vários programas que competem por esses recursos.

Ex: o envio de arquivos para impressão ou trazer um programa para o primeiro plano.

Um computador é composto de:

HARDWARE: que são os componentes mecânicos, como HD, memória RAM, placa-mãe, placa de vídeo, etc;

SOFTWARE: os programas que fazem um computador armazenar, processar e recuperar informações, exibir

documentos de multimídia, etc. O próprio Sistema Operacional é um software.

Funcionamento do barramento de dados (bus de dados) de um computador

Um sistema computacional moderno consiste de um ou mais processadores, memória principal, discos (HD),

impressoras, teclado, monitor, interfaces de rede e outros dispositivos de entrada e saída. Enfim, é um sistema

complexo. Desenvolver programas que mantenham o controle de todos esses componentes e os utilizem

corretamente de maneira otimizada é um trabalho extremamente difícil. Por isso os computadores têm um

dispositivo de software denominado SISTEMA OPERACIONAL, cujo trabalho é gerenciar esses componentes e

fornecer ao usuário uma interface com o hardware de forma simplificada.

Page 2: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

2

Escrever os programas que controlam todo o sistema de um computador e usá-los corretamente, como o

controle sobre os processadores, controles sobre a memória principal, RAM, discos, impressoras, interfaces de

rede e outros dispositivos de entrada/saída é complexo.

Microprograma – conjunto de instruções elementares a nível de processador e que definem a linguagem de

máquina: ADD, MOVE, JUMP, etc.

As “linguagens de máquina” geralmente têm entre 50 e 300 instruções, que, em sua maioria, servem para

mover os dados pelo computador, para fazer aritmética e para comparar valores.

Uma importante função do sistema operacional é esconder a complexidade e oferecer um conjunto mais

conveniente de instruções para o programador trabalhar. Ex: o comando “READ BLOCK FROM FILE” é mais fácil

de entender que interpretar as especificações de detalhes da cabeça de disco (HD), esperar movimentação, etc.

Acompanhando o sistema operacional, que gerencia todo esse sistema computacional, podemos ter também

um interpretador de comandos (shell), um sistemas de janelas (desktop ou X-Window), compiladores, editores e

programas de aplicação. Esses programas podem ser fornecidos com o sistema operacional – mas

especificamente não fazem parte do próprio sistema operacional. São apenas complementos.

Sistemas operacionais trabalham no modo kernel (também chamado de modo supervisor). Compiladores e

editores executam no modo de usuário. Programadores podem usar seus próprios compiladores, mas são

incapazes de escrever seu próprio manipulador de interrupções de disco, pois isso é competência do sistema

operacional e normalmente é protegido por hardware contra tentativas dos usuários de modificação.

Acima do sistema operacional temos os programas aplicativos que podem ser comprados ou desenvolvidos para

resolver problemas particulares (planilhas eletrônicas, processadores de texto, programas de cálculo, jogos, etc).

A EVOLUÇÃO DOS SISTEMAS OPERACIONAIS – AS ORIGENS

O desenvolvimento dos Sistemas Operacionais está intimamente associado à arquitetura dos computadores nos

quais eles trabalham. O primeiro sistema que pode ser considerado um computador verdadeiro foi projetado

pelo matemático inglês Charles Babbage (1792-1871). Babbage queria construir o motor analítico, mas não

conseguiu fazê-lo funcionar adequadamente porque todo o processo era mecânico e a tecnologia de seu tempo

não conseguia produzir as rodas e engrenagens de alta precisão que ele precisava. O motor analítico não tinha

um sistema operacional. Apesar da máquina não ter sido concluída, Ada Lovelace entendeu os seus conceitos e

desenvolveu algoritmos para este computador, de forma que podemos considerá-la a primeira programadora

que se tem notícia.

Page 3: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

3

Acima: projeto da Máquina Analítica, Charles Babbage, Máquina Analítica, Máquina Diferencial e Ada Lovelace

PRIMEIRA GERAÇÃO DE COMPUTADORES (1945-1955)

VÁLVULAS E PAINÉIS DE CONECTORES

Acima: válvulas e o primeiro “bug” de programação da história da computação

A construção desses computadores teve início em meados da década de 40, motivada pela Segunda Guerra

Mundial Eram máquinas enormes que ocupavam salas inteiras e possuíam dezenas de milhares de válvulas. Esses

computadores eram lentos que as calculadoras mais simples dos dias atuais

Um único grupo de pessoas projetava, construía, programava, operava e mantinha cada computador.

Page 4: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

4

A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções

básicas do computador. Não existiam linguagens de programação nem sistemas operacionais. Maior função:

gerar cálculos numéricos para gerar tabelas de senos e co-senos (computador ENIAC) e quebrar códigos cifrados

alemães (computador Colossus) durante a Segunda Guerra Mundial.

No início da década de 50, a rotina melhorou um pouco, com a introdução de cartões perfurados, sendo possível

gravar os programas em cartões e lê-los, em vez de usar cabos e conectores.

Acima: válvulas, painéis de conectores, operadores/operadoras dos computadores de Primeira Geração

Acima: Máquina Enigma, desenvolvida pelos alemães, e o computador Colossus, desenvolvido por Alan Turing (direita)

Acima: relação de computadores da Primeira Geração

Page 5: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

5

SEGUNDA GERAÇÃO DE COMPUTADORES (1955-1965)

TRANSISTORES E SISTEMAS EM LOTE (BATCH)

Acima: transistores

A introdução do transistor em meados da década de 50 mudou o quadro radicalmente. Computadores

tornaram-se mais confiáveis o bastante para serem fabricados e vendidos para clientes com a expectativa de

que continuariam a funcionar por tempo suficiente para realizar algum trabalho útil. Pela primeira vez havia

separação entre projetistas, construtores, operadores, programadores e o pessoal da manutenção.

Máquinas eram mantidas em salas especiais com ar condicionado e equipes de operadores profissionais para

mantê-las funcionando. Somente grandes empresas, corporações, órgãos do governo ou universidades podiam

ter recursos para arcar com seu preço, na casa dos milhões de dólares.

Para executar um job (programa ou conjunto de programas) o programador primeiro escrevia o programa em

papel (em Fortran ou Assembly) e o transformava em cartões perfurados. Então levava o conjunto de cartões

para a sala de entrada e o entregava a um dos operadores.

Quando o computador terminava o job, o operador ia até a impressora, removia a resultado impresso e a levava

para a sala de saída, para que o programador pudesse recolhê-la mais tarde. Se fosse necessário o compilador

Fortran, o operador deveria pegá-lo em um gabinete de arquivos e inserí-lo para leitura. Muito tempo de

máquina era desperdiçada enquanto os operadores andavam em volta do computador.

Devido ao alto custo do equipamento, as pessoas procuraram meios de reduzir o tempo desperdiçado.

A solução adotada foi o sistema de processamento em lote (ou batch system). Esse computadores eram utilizados em grande parte para cálculos científicos de engenharia, tal como resolver

equações diferenciais parciais.

Sistemas operacionais: FMS (Fortran Monitor System) e o IBSYS (da IBM)

Page 6: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

6

Acima: Processo de entrada de dados nos computadores de segunda geração – os cartões eram inseridos em ordem

Acima: Computadores de segunda geração

TERCEIRA GERAÇÃO DE COMPUTADORES (1965-1980) CIRCUITOS INTEGRADOS (CI) E MULTIPROGRAMAÇÃO

Acima: circuitos integrados

No início da década de 60, a maioria dos fabricantes de computadores tinha duas linhas de produtos distintas e

totalmente incompatíveis. De um lado, havia os computadores científicos de grande escala, que eram utilizados

para cálculos numéricos em Ciência e Engenharia. Por outro lado, havia os computadores comerciais, baseados

em caracteres, que eram amplamente utilizados para classificar e para imprimir fitas para bancos e para

companhias de seguros.

Page 7: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

7

A IBM tentou resolver esse problema em uma única tacada, introduzindo o System/360. O 360 era uma série de

máquinas compatíveis ao nível de software. Essas máquinas diferenciavam-se no preço e no desempenho

(memória máxima, velocidade de processador, número de dispositivos de E/S, etc).

Como todas as máquinas tinham a mesma arquitetura e conjunto de instruções, programas escritos para uma

máquina podiam executar em todas as outras, pelo menos na teoria. Além disso, o System/360 foi projetado

para manipular cálculos tanto científicos como comerciais. Assim uma única família de máquinas podia satisfazer

as necessidades de todos os clientes.

Acima: Computadores de terceira geração e detalhes do computador IBM System/360

Nos anos seguintes, a IBM lançou sucessores compatíveis com a linha 360, usando tecnologia mais moderna.

O System/360 foi um êxito em seu tempo, pela idéia de “família”. Mas a maior força da idéia de “família” era ao

mesmo tempo sua maior fraqueza. A intenção era que todo software, incluindo o sistema operacional, tinha de

trabalhar em todos os modelos. Ele tinha que executar em sistemas pequenos e em sistemas grandes, fazer

previsão do tempo e cálculos pesados. Tinha que ser bom em sistema com poucos periféricos e em sistemas

com muitos periféricos. Ele tinha que funcionar em ambientes comerciais e em ambientes científicos. Acima de

tudo, ele tinha que ser eficaz para todos esses diferentes usos.

Não havia como a IBM conseguir escrever um software para atender a todos esses requisitos contraditórios de

forma simples. O resultado era um sistema operacional extraordinariamente complexo e grande, com milhões

de linhas de linguagem assembler escritas por milhares de programadores com milhares e milhares de bugs, que

necessitavam de um contínuo fluxo de novas versões na tentativa de corrigí-las. Cada nova versão corrigia

alguns bugs e introduzia muitos outros novos.

Multiprogramação: uma das técnicas-chave dessa época foi, sem dúvida, a multiprogramação. Num desses

computadores, quando o job atual parava para esperar por uma fita magnética terminar a transferência ou

aguardava o término de outra operação de E/S, a CPU simplesmente permanecia ociosa até que a E/S

terminasse. Para cálculos científicos que exigem intensamente a CPU, as operações de E/S são pouco

Page 8: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

8

frequentes, de modo que esse tempo desperdiçado não é significativo. Com processamento comercial de dados

o tempo de espera frequentemente pode ser de 80% ou 90% do tempo total. Então, algo deveria ser feito para

evitar ter a CPU desocupada durante tanto tempo.

A solução desenvolvida foi dividir a memória em várias partições, com um job diferente em cada partição.

Sempre que um job em execução acabava, o sistema operacional podia carregar um novo job do disco na

partição agora vazia e executá-lo. Essa técnica é chamada spooling (de simultaneous peripheral operation on

line – operação periférica simultânea on line).

Embora servissem bem para grandes cálculos científicos e para aplicações comerciais com grande volume de

processamento de dados, eles eram ainda basicamente sistemas de lote. Muitos programadores sentiam falta

das máquinas de primeira geração, quando tinham a máquina toda para si. Com os sistemas de terceira geração,

o tempo entre submeter um job e receber a saída era frequentemente de várias horas, então uma única vírgula

mal colocada podia causar uma falha na compilação e o programador perdia metade de um dia.

Essa necessidade de tempo de resposta rápida preparou o caminho para o compartilhamento de tempo (time

sharing), 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 mas apenas uma parcela deles estava trabalhando, a CPU

podia estar alocada para aqueles que requeriam processamento.

O sistema de tempo compartilhado (CTSS) foi desenvolvido pelo MIT.

PROJETO MULTICS

O projeto MULTICS (Multiplexed Information and Computing Service – Serviço de Computação e Informação

Multiplexada) – foi um projeto desenvolvido pelo MIT (Massachusetts Institute of Technology - Instituto de

Tecnologia de Massachusetts, uma das instituições universitárias mais importantes em educação e tecnologia

dos EUA e do mundo), pela Bell Labs (originalmente o braço de pesquisa e desenvolvimento da AT&T) e pela

General Electric - GE (na época um importante fabricante de computadores). Essas organizações vislumbraram

uma máquina que poderia oferecer enorme poder de cálculo a todos na cidade de Boston, nos Estados Unidos –

eles chamavam essa máquina de “computer utility”.

O MULTICS introduziu muitas idéias. O principal é o servidor central onde computadores de menor potência

seriam conectados, com a maior parte do trabalho sendo executada pelo servidor central.

Figuras: Engenheiros e projetistas do Multics, terminal e computadores Multics System GE-645

Page 9: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

9

SISTEMA OPERACIONAL UNIX

Um cientista que havia trabalhado no projeto Multics pela Bell Labs (Ken Thompson) começou a escrever uma

versão simplificada do Multics versão monousuário. Esse trabalho mais tarde desenvolveu-se e acabou

evoluindo, tornando-se o sistema operacional UNIX, que ficou muito popular no mundo acadêmico, entre

órgãos do governo e entre muitas empresas.

Todo o sucesso do Unix deveu-se a seu código fonte amplamente disponível. Isso possibilitou várias versões do

Unix, cada uma seguindo por um caminho, o que acabou virando um caos. Para tornar possível escrever

programas que podiam executar em qualquer sistema Unix, o IEEE (Institute of Electrical and Electronics

Engineers - Instituto de Engenheiros Eletricistas e Eletrônicos) desenvolveu um padrão para o Unix, chamado

POSIX (Portable Operation System Interface X – com o “X” representando a herança da interface da

programação de aplicações Unix). O Posix definiu uma interface mínima e chamadas de sistema que sistemas

compatíveis com o Unix deveriam suportar.

O Unix é muito encontrado em sistemas mais avançados, como por exemplo em servidores e computadores com

arquitetura RISC de alto desempenho. Embora muitos usuários do Unix, especialmente programadores

experientes, prefiram uma interface baseada em comandos a uma interface gráfica GUI, quase todos os

sistemas Unix suportam um sistema de janelas denominado X (X Window) escrito pelo MIT. Esse sistema trata o

gerenciamento básico de janelas de modo que permita que usuários criem, removam, movam e redimensionem

as janelas usando um mouse. Muitas vezes uma interface gráfica GUI completa, como o KDE, está disponível

para ser executada em cima do sistema X Window, dando ao Unix a aparência do Macintosh ou do Microsoft

Windows, para aqueles usuários Unix que assim o desejarem.

O BLOQUEIO AO CÓDIGO-FONTE DO UNIX

Quando o Unix e seu código-fonte eram amplamente disponíveis (versão 6), sob licença da AT&T, ele era muito

estudado. Existia um livro (John Lion, da Universidade New South Wales, Austrália) que descrevia sua operação,

linha por linha. Essa publicação era utilizada (com permissão da AT&T) como referência em muitos cursos

universitários sobre sistemas operacionais.

Quando a AT&T lançou a versão 7, ela começou a perceber que o Unix era um produto comercial valioso, e

assim ela lançou essa versão com uma licença proibindo que o código fonte fosse estudado em cursos, para

evitar pôr em risco seu status de segredo de negócio. Muitos universitários tiveram que conformar-se em

simplesmente acabar com o estudo de Unix e ensinar só teoria.

Page 10: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

10

QUARTA GERAÇÃO DE COMPUTADORES (1980-PRESENTE) COMPUTADORES PESSOAIS

O desenvolvimento dos LSI (Large Scale Integration – integração em larga escala), chips contendo milhares de

transistores por centímetro quadrado de silício, foi o alvorecer da era do computador pessoal. O

microprocessador tornou possível que uma pessoa tivesse seu próprio computador pessoal.

Até o final dos anos 70, reinavam absolutos os mainframes, computadores enormes, trancados em salas

refrigeradas e operados apenas por alguns poucos privilegiados. Apenas grandes empresas e bancos podiam

investir alguns milhões de dólares para tornar mais eficientes alguns processos internos e o fluxo de

informações. A maioria dos escritórios funcionava mais ou menos da mesma maneira que no começo do século.

Arquivos de metal, máquinas de escrever, papel carbono e memorandos faziam parte do dia-a-dia.

O primeiro "computador pessoal" foi o Kenbak-1, lançado em 1971. Tinha 256 bytes de memória e foi anunciado

na revista Scientific American por US$ 750; todavia, não possuía CPU e era, como outros sistemas desta época,

projetado para uso educativo (ou seja, demonstrar como um "computador de verdade" funcionava). Em 1975,

surge o Altair 8800, um computador pessoal baseado na CPU Intel 8080. Vendido originalmente como um kit de

montar através da revista norte-americana Popular Electronics, os projetistas pretendiam vender apenas

algumas centenas de unidades, tendo ficado surpresos quando venderam dez vezes mais que o previsto para o

primeiro mês. Custava cerca de 400 doláres e se comunicava com o usuário através de luzes que indicavam o

resultado das operações.

Acima: Revista Popular Electronics e detalhes do computador Altair 8800

Page 11: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

11

Entre os primeiros usuários estavam o calouro da Universidade de Harvard Bill Gates, e o jovem programador

Paul Allen, que juntos desenvolveram uma versão da linguagem "Basic" para o Altair. Pouco tempo depois, a

dupla resolveu mudar o rumo de suas carreiras e criar uma empresa chamada Microsoft.

Acima: equipe da Microsoft, linguagem Basic em fita perfurada desenvolvida para o Altair e a dupla Paul Allen e Bill Gates

Nos anos seguintes, surgiram dezenas de novos computadores pessoais como o Radio Shack TRS-80 (O TRS-80

foi comercializado com bastante sucesso no Brasil pela Prológica com os nomes de CP-300 e CP-500),

Commodore 64, Atari 400 e outros com sucesso moderado.

APPLE E A POPULARIZAÇÃO DOS COMPUTADORES PESSOAIS

Em 1976, outra dupla de jovens, Steve Jobs e Steve Wozniak, iniciou outra empresa que mudaria o rumo da

informática: a Apple.

Jobs e Wozniak abandonaram a Universidade de Berkeley para poderem se dedicar ao computador pessoal

criado por Wozniak, o Apple I. Como Wozniak trabalhava para a HP, o seu projeto precisava ser apresentado

para a empresa que recusou de imediato a idéia de produção pela própria HP. Isso abriu o caminho para a

criação da Apple, empresa fundada pelos dois que comercializaria os computadores. Montados na garagem de

Jobs, os duzentos primeiros computadores foram vendidos nas lojas da vizinhança a US$ 500 cada. Interessado

no projeto, Mike Makula (na época vice-presidente de marketing da Intel), resolveu investir US$ 250 mil na

Apple.

Alguns meses depois, já em 1977, foi lançado o primeiro microcomputador como conhecemos hoje, o Apple II. O

equipamento já vinha montado, com teclado integrado e era capaz de gerar gráficos coloridos. As vendas

chegaram a US$ 2,5 milhões no primeiro ano de comercialização e, com o seu rápido crescimento de vendas, a

Apple tornou-se uma empresa pública (ou seja, com ações que podem ser adquiridas por qualquer um na bolsa

de valores) e ela construiu a sua sede principal - Infinite Loop - em Cupertino, Califórnia.

Com o sucesso do Apple II, vieram o Visicalc (a primeira planilha eletrônica inventada), processadores de texto e

programas de banco de dados. Os micros já podiam substituir os fluxos de caixa feitos com cadernos e

calculadoras, máquinas de escrever e os arquivos de metal usados para guardar milhares de documentos. Os

computadores domésticos deixaram então de ser apenas um hobby de adolescentes para se tornarem

ferramentas indispensáveis para muitas pessoas.

Entretanto, até o começo dos anos 80, muitos executivos ainda encaravam os computadores pessoais como

brinquedos. Além das mudanças de hábitos necessárias para aproveitar a nova tecnologia, os mais

conservadores tinham medo de comprar produtos de empresas dirigidas por um rapaz de 26 anos que há menos

de cinco trabalhava na garagem dos pais.

Page 12: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

12

Acima: Steve Wozniak (esquerda) e Steve Jobs, fundadores da Apple e o computador Apple

SISTEMA OPERACIONAL CP/M – Control Program/Microcomputer

(Programa de Controle para Microcomputadores)

Em 1974, a Intel havia lançado o 8080, a primeira CPU de 8 bits de propósito geral, e buscava um sistema

operacional para o 8080, em parte para testá-lo. Ela pediu a um de seus consultores, Gary Kildall, para escrevê-

lo. Kildall e um amigo inicialmente construíram um controlador para a então recém-lançada unidade de discos

flexíveis de oito polegadas e a utilizou um 8080, produzindo, assim o primeiro microcomputador com unidade

de discos flexíveis. Kildall então escreveu para ele um sistema operacional baseado em disco denominado CP/M

(Control Program for Microcomputers – programa de controle para microcomputadores). Como a Intel não

acreditava que microcomputadores baseados em discos tivessem muito futuro, Kildall requisitou os direitos

sobre o CP/M e a Intel os cedeu. Kildall formou então uma empresa, a Digital Research, para aperfeiçoar e

vender o CP/M.

Em 1977, a Digital Research reescreveu o CP/M e tornou-o adequado à execução em muitos

microcomputadores utilizando 8080, Zilog Z80 e outros microprocessadores. Muitos programas de aplicação

foram escritos para serem executados no CP/M, permitindo que ele dominasse completamente o mundo da

microcomputação por cerca de cinco anos.

IBM, MICROSOFT E APPLE

Em 1980, a IBM estava convencida de que precisava entrar no mercado da microinformática e o uso profissional

dos micros só deslanchou quando ela entrou nesse mercado. A empresa dominava (e domina até hoje) o

Page 13: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

13

mercado de computadores de grande porte e, desde a primeira metade do século XX, máquinas de escrever

com sua marca estavam presentes nos escritórios de todo mundo. Como não estava acostumada

à agilidade do novo mercado, criado e dominado por jovens dinâmicos e entusiasmados, a gigantesca

corporação decidiu que o PC não podia ser criado na mesma velocidade na qual ela estava acostumada a

desenvolver novos produtos. Dessa forma a empresa criou uma força tarefa especial para desenvolver o novo

produto. O resultado desse trabalho foi o IBM-PC.

Como todo computador, o PC também precisava de um sistema operacional. Foi necessário então a IBM buscar

um sistema operacional para ser executado nele. O pessoal da IBM entrou em contato com Bill Gates para

licenciar seu interpretador Basic (Gates criou fama na época por ter desenvolvido os sistemas para o

computador Altair). Também lhe foi indagado se conhecia algum sistema operacional que pudesse ser

executado no PC. Gates sugeriu que a IBM contatasse a Digital Research, a empresa que dominava o mundo dos

sistemas operacionais naquela época. Tomando seguramente a pior decisão de negócios registrada na história,

Kildall, responsável pela Digital Research, recusou-se a se reunir com a IBM, enviando em seu lugar um

subordinado. Para piorar a história, o advogado da Digital Research recusou-se a assinar um acordo de sigilo

sobre o produto PC, da IBM, que ainda não havia sido divulgado. Consequentemente a IBM a conversar com Bill

Gates perguntando-lhe se seria possível ele fornecer-lhes um sistema operacional.

Então Gates percebeu que um fabricante local de computadores, a Seattle Computer Products, possuía um

sistema operacional adequado, o DOS (disk operating system – sistema operacional de disco). Entrou em

contato com essa empresa e disse que queria comprá-la (por 50 mil dólares), o que foi prontamente aceito.

Gates então ofereceu à IBM um pacote DOS/Basic, e ela aceitou. A IBM quis fazer algumas modificações, e para

isso Gates contratou a pessoa que tinha escrito o DOS, Tim Paterson, como funcionário da empresa embrionária

de Gates, a MicroSoft. O sistema revisado teve seu nome mudado para MS-DOS (Microsoft Disk Operating

System) e rapidamente viria a dominar o mercado de IBM-PC. Um fator decisivo para isso foi a decisão de Gates

(olhando o passado, de forma sábia) de vender o MS-DOS para empresas de computadores acompanhando o

hardware, em vez de tentar vender diretamente aos usuários finais (pelo menos no início) como tentou Kildall

fazer com o CP/M.

Acima: Computador IBM-PC original e sistema operacional MS-DOS

Quando em 1983 o IBM-PC/AT foi lançado utilizando a CPU Intel 80286, o MS-DOS avançava firmemente ao

mesmo tempo que o CP/M definhava. O MS-DOS foi, mais tarde, também amplamente usado com o 80386 e o

80486. Mesmo com uma versão inicial bastante primitiva, as versões subsequentes do MS-DOS incluíram

Page 14: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

14

aspectos mais avançados, muitos deles derivados do Unix (a Microsoft conhecia bem o Unix, pois, nos primeiros

anos da empresa, vendeu uma versão para microcomputadores do Unix denominada Xenix).

O CP/M, o MS-DOS e outros sistemas operacionais dos primeiros microcomputadores eram todos baseados na

digitação de comandos em um teclado feita pelo usuário. Isso finalmente mudou graças a um trabalho de

pesquisa de Doug Engelbart, no Stanford Research Institute nos anos 60.

Engelbart inventou uma interface gráfica, voltada para o usuário, com janelas, ícones, menus e mouse,

denominada GUI (graphical user interface). Essas idéias de Engelbart foram adotadas por pesquisadores do

Xerox PARC e incorporadas às máquinas que eles projetaram.

Um dia, Steve Jobs, que co-inventou o computador Apple na garagem de sua casa, visitou o PARC, viu uma

interface gráfica GUI e instantaneamente percebeu seu potencial, algo que a gerência da Xerox

reconhecidamente não tinha feito.

Acima: computador Alto, desenvolvido pela Xerox (o primeiro a ter mouse) e sua tela gráfica (GUI)

Jobs então iniciou a construção de um Apple dispondo de uma interface gráfica GUI. Esse projeto, denominado

Lisa, foi muito dispensioso e falhou comercialmente. A segunda tentativa de Jobs, o Apple Macintosh, foi um

enorme sucesso, não somente por seu custo muito menor que o do Lisa, mas também porque era muito

amigável, destinada a usuários que não somente nada sabiam sobre computadores, como também não tinham a

menor intenção de um dia aprender sobre eles.

Quando a Microsoft decidiu escrever um sucessor para o MS-DOS, estava fortemente influenciada pelo sucesso

do Macintosh. Desenvolveu um sistema denominado Windows baseado na interface gráfica GUI, que era

executado originalmente em cima do MS-DOS (isto é, era como se fosse um interpretador de comandos em vez

de um sistema operacional de verdade). Por aproximadamente dez anos, de 1985 a 1995, o Windows

permaneceu apenas como um ambiente gráfico no topo do MS-DOS. Contudo, em 1995 lançou-se uma versão

do Windows independente do MS-DOS, o Windows 95. Nessa versão, o Windows incorporou muitos aspectos de

um sistema operacional, usando o MS-DOS apenas para ser carregado e executar programas antigos do MS-

DOS. Em 1998, lançou-se uma versão levemente modificada desse sistema, chamada Windows 98. No entanto,

ambos, o Windows 95 e o Windows 98, ainda contém uma grande quantidade de código em linguagem de

montagem de 16 bits da Intel.

Um outro sistema operacional da Microsoft é o Windows NT (NT é uma sigla para New Technology), que é

compatível com o Windows 95 em um certo nível, mas reescrito internamente por completo. É um sistema

Page 15: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

15

totalmente 32 bits. Sucederam-se depois o Windows Millenium (16/32 bits) e os da família 2000 (32 bits), 2003

(32 bits), XP (32 bits), Vista (32 e 64 bits) e Windows 7 (32 e 64 bits).

Acima: a batalha acirrada travada pela IBM e pela Apple pelo domínio do mercado de computadores pessoais

O APARECIMENTO DO MINIX

Nos anos 80, Andrew Stuart Tanenbaum desenvolveu o Minix, que era (e é) um sistema operacional Unix-like

(semelhante ao UNIX), porém, gratuito e com o código fonte disponível. Isso significa que qualquer programador

experiente poderia fazer alterações nele. Ele foi criado originalmente para uso educacional, para quem quisesse

estudar o Unix "em casa". Vale a pena citar que ele foi escrito do “zero” e apesar de ser um sistema Unix-like,

não continha nenhum código da AT&T e por isso poderia ser distribuído gratuitamente.

Minix = Mini-Unix, pois ele é tão pequeno que mesmo um não especialista consegue entender seu

funcionamento. Foi escrito em C, assim como o Unix.

Acima: Andrew Tanenbaum e seu livro do Sistema Operacional Minix, onde expõe linha a linha o funcionamento do SO

Page 16: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

16

O KERNEL DO LINUX

O Kernel do Linux foi, originalmente, escrito por Linus Torvalds do Departamento de Ciência da Computação da

Universidade de Helsinki, Finlândia, com a ajuda de vários programadores voluntários através da Internet.

Linus Torvalds iniciou trabalhando o kernel como um projeto particular, inspirado em seu interesse no Minix, um

pequeno sistema UNIX desenvolvido por Andrew Tanenbaum. Ele se limitou a criar, em suas próprias palavras,

"um Minix melhor que o Minix" ("a better Minix than Minix"). E depois de algum tempo de trabalho em seu

projeto, sozinho, ele enviou a seguinte mensagem para o newsgroups da Usenet comp.os.minix, no início dos

anos 90: “Você suspira por melhores dias do Minix-1.1, quando homens serão homens e escreverão seus

próprios "device drivers" ? Você está sem um bom projeto e esta louco por colocar as mãos em um S.O. no qual

você possa modificar de acordo com suas necessidades? Você está achando frustrante quando tudo trabalha em

Minix? Cansado de atravessar noites para obter programas que trabalhem correto? Então esta mensagem pode

ser exatamente para você. Como eu mencionei há um mês atrás, estou trabalhando em uma versão

independente de um S.O. similar ao Minix para computadores AT-386. Ele está, finalmente, próximo do estágio

em que poderá ser utilizado (embora possa não ser o que você esteja esperando), e eu estou disposto a colocar

os fontes para ampla distribuição. Ele está na versão 0.02... contudo eu tive sucesso rodando bash, gcc, gnu-

make, gnu-sed, compressão, etc. nele.”

No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira versão "oficial" do Linux, versão 0.02. Desde

então muitos programadores têm respondido ao seu chamado, e têm ajudado a fazer do Linux o Sistema

Operacional que é hoje.

Acima: o criador e mantenedor do kernel do Linux, Linus Torvalds, alguns sabores Linux e o mascote do Linux, o pinguim Tux

Page 17: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

17

QUINTA GERAÇÃO DE COMPUTADORES (1990-PRESENTE) COMPUTADORES MÓVEIS (SMARTPHONES)

O primeiro telefone verdadeiramente móvel foi criado na década de 70 e pesava cerca de um quilo. Hoje, a penetração

do telefone móvel (celular) é próximo de 90% da população mundial. No início, o telefone celular era utilizado tão

somente com esta finalidade: telefonar.

Hoje, telefonar é apenas mais um serviço que o celular suporta. Entre outras atividades, podemos citar o fato de que

com celulares podemos enviar e receber e-mails, navegar na Internet, fazer parte de comunidades em redes sociais,

enviar e postar mensagens, utilizar um programa em conjunto com o GPS para encontrarmos o melhor caminho

enquanto dirigimos, solicitar uma viagem de carro, acessar contas do banco e fazer transações, assistir um vídeo, ouvir

música, jogar, etc.

A ideia de combinar um telefone e um celular existe desde a década de 1970, mas somente em meados de 1990 é que a

empresa Nokia conseguiu combinar dois dispositivos separados em um só equipamento: um telefone celular (somente

voz) e um PDA (Personal Digital Assistant – Assistente Pessoal Digital). Em 1997, a Ericsson cunhou o termo smartphone

para esse telefone móvel “inteligente”.

Hoje os smartphones tornaram-se onipresentes e a competição entre os vários sistemas operacionais tornou-se feroz.

Atualmente, o sistema operacional Android, da Google, é dominante. O sistema iOS, da Apple, vem em segundo lugar.

Na década de 1990 o principal sistema operacional dos smartphones era o Symbian. Algum tempo depois o Blackberry

(2002) tomou o seu lugar e mais tarde perdeu o seu posto para o iOS, da Apple (2007). Aos poucos, o Android, um

sistema operacional desenvolvido pela Google (2008) e baseado no Linux, dominou os seus rivais.

A vantagem do Android, para os fabricantes de celular, é que ele é um sistema aberto e seu código é disponível. Dessa

forma, cada fabricante pode adaptar o Android a seu hardware com facilidade. Existe também uma enorme comunidade

de desenvolvedores escrevendo aplicativos, a maior parte destes aplicativos na popular linguagem de programação

Java.

Acima: alguns dos principais sistemas operacionais de smartphones

Page 18: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

18

TIPOS DE SISTEMAS OPERACIONAIS

Sistemas Operacionais de Computadores Grande Porte

Sistemas Operacionais de grande porte são os chamados Mainframes. Ocupam salas inteiras e ainda são

encontrados em centros de dados de grandes corporações e bancos. O diferencial desses sistemas é a

capacidade de lidar com grande volume de dados, tamanho de discos, memória e enorme capacidade de

entrada/saída (input/output).

Exemplos: Servidores de grandes corporações, como bancos e governos, servidores WEB de grande porte,

servidores de site de comércio eletrônico de grandes empresas (B2B, B2C, C2C, etc).

Sistemas Operacionais de Servidores

Quando um computador tem múltiplos usuários, a necessidade de gerenciar e de proteger a memória, os

dispositivos de E/S e outros recursos é ainda maior, uma vez que os usuários talvez interfiram um com os outros.

Além, disso, os usuários frequentemente necessitam não só compartilhar hardware, mas também as

informações (impressão, arquivos, serviços Internet, bases de dados, etc). Em resumo, essa visão do sistema

operacional sustenta que sua tarefa primária é monitorar quem está utilizando qual recurso, atender requisições

de recurso, medir a utilização dos recursos e medir as requisições conflitantes de diferentes programas e

usuários.

Exemplos: Unix (e seus derivados Solaris, HP-UX, AIX, etc), BSD (e seus derivados OpenBSD, FreeBSD, etc), Linux

(e suas versões Red Hat, CentOS, Slackware, Mandriva, Ubuntu, Suse, etc), Windows Server nas versões 2000,

2003, 2008, 2012 e 2016, etc.

Sistemas Operacionais de Multiprocessadores

Para obter potência computacional é comum conectar-se múltiplas CPUs em um único sistema. Precisam de

sistemas operacionais especiais, mas muitos deles são variações dos sistemas operacionais de servidores com

aspectos especiais de comunicação e conectividade.

Sistemas Operacionais de Computadores Pessoais (PCs)

Os mais comuns e utilizados pelos usuários. Exemplos: Microsoft Windows (98, 2000, XP, Vista, 7, 8, 10, etc),

Mac OS, Linux, OS/2, FreeBSD, OS X, da Apple.

Sistemas Operacionais de computadores portáteis

Com os sistemas tornando-se cada vez menores, chegamos aos tablets, smartphones e equipamentos que

levamos à mão. Um computador portátil era anteriormente conhecido como PDA (personal digital assistant). Ele

era pequeno o bastante para ser manuseado diretamente nas mãos durante sua operação. Hoje os exemplos

mais conhecidos são os tables e smartphones. Hoje esse mercado está dominado pelo Android, da Google, e

pelo iOS, da Apple. A maioria deles possui CPU´s multinúcleo, GPS, câmeras e outros sensores, muita memória e

sistemas operacionais sofisticados. Geralmente contam com acesso Internet e a instalação dos programas

(“apps”) se dá através do download dos programas através de lojas virtuais, como Google Play (Android) e App

Store (Apple).

Page 19: UNIVERSIDADE PAULISTA UNIP FUNDAMENTOS DE …...A lógica de programação era feita ligando cabos e fios aos painéis de conectores para controlar as funções ... as necessidades

19

Sistemas Operacionais Embarcados

Sistemas embarcados são executados em computadores que controlam dispositivos que não costumam ser

vistos como computadores e que não aceitam softwares instalados pelo usuário. Exemplos típicos são os fornos

de micro-ondas, aparelhos de televisão, carros, aparelhos de DVD/Blu-Ray, etc. A principal diferença entre

sistemas embarcados dos portáteis é a certeza de que nenhum software não confiável será executado nele um

dia. Não há possibilidade de instalar novos aplicativos para o seu forno de micro-ondas: todo o software já está

na memória ROM. Isto quer dizer que não há necessidade de proteção entre os aplicativos, levando a

simplificações no design do sistema operacional. Exemplos de sistemas operacionais embarcados são:

Embedded Linux, QNX e Vx Works.

Sistemas Operacionais de Nós Sensores (Sensor-Node)

Redes de nós sensores minúsculos estão sendo empregados para uma série de finalidades. Esses nós são

computadores minúsculos que se comunicam entre si e com uma estação-base usando comunicação sem fio.

Redes de sensores são usadas para proteger os perímetros de prédios, guardar fronteiras nacionais, detectar

incêndios em florestas, medir a temperatura e a precipitação para a previsão do tempo, colher informações

sobre a movimentação de inimigos nos campos de batalha e muito mais.

Os sensores são computadores pequenos movidos a bateria e com rádios integrados. Têm energia limitada e

precisam funcionar por longos períodos sozinhos ao ar livre e, muitas vezes, em condições severas. A rede tem

que ser robusta o suficiente para tolerar falhas de nós individuais. Cada nó sensor é um computador verdadeiro,

com uma CPU, RAM, ROM e um ou mais sensores ambientais. Ele executa um sistema operacional pequeno,

respondendo a eventos externos ou tomando medidas periodicamente com base em uma programação. O

sistema operacional tem que ser pequeno e simples, pois os nós têm pouca RAM e a duração da bateria é uma

questão fundamental. TinyOS é um exemplo de sistema operacional empregado num nó sensor.

Sistemas Operacionais de Tempo Real

São caracterizados por terem o tempo como um parâmetro fundamental. Por exemplo, em sistemas de controle

de processos industriais, computadores de tempo real devem coletar dados sobre o processo de produção e

usá-los para controlar as máquinas na fábrica. É bastante comum a existência de prazos rígidos para a execução

de determinadas tarefas. Por exemplo, se um carro está se movendo por uma linha de montagem, certas ações

devem ser realizadas em momentos específicos. Se um robô soldador realiza seu trabalho – soldar – muito cedo

ou muito tarde, o carro está perdido. Se as ações precisam necessariamente ocorrer em determinados instantes

(ou em determinado intervalo de tempo) tem-se então um sistema de tempo real crítico. Outro tipo de sistema

de tempo real é o sistema de tempo real não crítico, no qual o descumprimento ocasional de um prazo é

aceitável. Sistemas de áudio digital ou multimídia pertencem a essa categoria. Exemplo de sistema operacional

de tempo real: eCos.

Sistemas Operacionais de Cartões Inteligentes (Smart Cards)

Smart Cards são cartões inteligentes, ou seja, possuem um microprocessador embutido. O microprocessador se

encontra abaixo do contato dourado que está em um dos lados do cartão. Ele substitui a tarja magnética de um

cartão de crédito convencional. Alguns cartões inteligentes são orientados a Java. Isto significa que a ROM no

cartão inteligente contém um interpretador para o Java Virtual Machine (JVM). O sistema operacional presente

no cartão geralmente é extremamente básico. Sua energia é alimentada quando se insere o cartão no

equipamento com o qual se vai interagir.

//Prof. Paulo Henrique – UNIP – Universidade Paulista//