Sistemas operacionais

Download Report

Transcript Sistemas operacionais

Sistemas operacionais
Carlos Oberdan Rolim
Ciência da Computação
Sistemas de Informação
Introdução
* Baseado no material do Prof. Luis Cláudio Gubert
Introdução
O que é um Sistema Operacional?
Sistemas em Lote (Batch) Simples
Sistemas Batchs Multiprogramados
Sistemas Tempo Compartilhado (Time-Sharing)
Computador Pessoal
Sistemas Paralelos
Sistemas Distribuídos
Sistemas de Tempo Real
O que é um sistema operacional ?
Um programa que age como um intermediário entre
um usuário de computador e o hardware.
Objetivos de um sistema operacional:
Executar programas do usuário e facilitar a resolução de
problemas.
Tornar o computador conveniente ao uso.
Usar o hardware do computador de maneira eficiente.
Componentes de um computador
1.
Hardware provê recursos básicos de computação (CPU, memória,
dispositivos de E/S).
2.
Sistema Operacional controla e coordena o uso do hardware entre os
vários programas aplicativos para os vários usuários.
3.
Programas Aplicativos definem as formas nas quais os recursos do
sistema são empregados para resolver os problemas computacionais
dos usuários (compiladores, bancos de dados, jogos, programas
comerciais).
4.
Usuários (pessoas, máquinas, outros computadores).
Visão abstrata de componentes do
sistema
Definições de sistemas operacionais
Alocador de Recurso – gerencia e aloca recursos.
Programa de Controle – controla a execução dos programas do
usuário e operações dos dispositivos de E/S.
Kernel – o único programa que executa sempre (todo o resto são
programas aplicativos).
Primeira geração (1945 – 1955)
Válvulas e painéis de programação
Máquinas de calcular simples
Ocupavam salas inteiras
O grupo que projetava era o mesmo que construia,
programava, operava e realizava a manutenção
Não existia sistema operacional
Praticamente todos os problemas eram matemáticos com
tabelas de senos, cosenos e logaritmos
ENIAC - Electrical Numerical Integrator and Calculator
1000 vezes mais rápida que qualquer outra que existia na época.
Painel de programação
ENIAC
ENIAC
Centro de computação
Segunda geração (1955 – 1965)
Transistores e sistemas em lote
Introdução do transistor mudou radicalmente o quadro
Surgimente dos computadores de grande porte (mainframes)
Divisão da equipe em projetistas, fabricantes, programadores
e técnicos de manutenção
Conceito de job
Linguagem usada – FORTRAN ou linguagem de montagem
Sistema de lote (batch)
Computador de menor porte lia cartões e copiava para fita.
Fita era colocada no mainframe que a lia e processava
A saída do processamento era gravada em outra fita
Essa fita era colocada novamente no computador de menor porte e
então relatório de saída impresso
Sistemas Batch Simples
Contratar um Operador
Usuário ≠ operator
Adicionar um leitor de cartão perfurado
Reduzir o tempo de preparação agregando jobs similares no mesmo
batch
Seqüenciamento Automático de Jobs – transfere o controle
automaticamente de um job a outro. Primeiro sistema operacional
rudimentar.
Monitor Residente
Controle inicial no monitor
Controle é transferido para o job
Quando o job está completo o controle volta para o monitor
Diagrama de memória para um sistema
batch simples
Cartões de controle
Problemas
1.
Como o monitor sabe sobre a natureza do job (ex.: Fortran
ou Assembly) ou qual programa executar?
2.
Como um monitor distingue
a) um job de outro?
b) dados de programas?
Solução
– Introduzir Cartões de Controle
Cartões de controle (cont)
Cartões especiais que dizem ao monitor residente quais programas
devem ser executados
$JOB -- Inicio do job. Tempo em minutos dados do programador
$FTN -- Job em fortran
$RUN – SO deve executar o job com dados do cartao seguinte
$DATA – Dados do job
$END – Fim do job
Caracteres especiais distinguem cartões de controle de dados ou
cartões de programa:
$ na coluna 1
// na coluna 1 e 2
709 na coluna 1
Cartões de controle (cont)
Partes do Monitor Residente
Interpretador do Cartão de Controle – responsável por ler e seguir as
instruções contidas nos cartões.
Carregador – carrega programas de sistema e aplicativos na
memória.
Drivers de Dispositivos – conhecem as características especiais e
propriedades para cada um dos dispositivos de E/S.
Problema: Baixo Desempenho – E/S e CPU não podem se sobrepor ;
leitor de cartões muito lento.
Solução: Operação off-line – acelerar a computação carregando os
jobs das fitas e leitoras de cartão na memória, e imprimindo off-line.
Cartões perfurados
Máquina de perfufar
e de leitura
IBM 7030
•Primeiro supercomputador
da segunda geração
•Custava $ 13 milhões
•Menor tamanho – Usava
“somente” uma sala
Centro de computação
Terceira geração ( 1965 – 1980)
CIs e Multiprogramação
Duas linhas de computadores: comerciais e cientificos
Incompativeis entre si
IBM tenta resolver o problema com o System/360
Serie de computadores de diferentes portes com software compativel
Maior virtude era maior fraqueza
Tinha de funcionar bem em ambientes comerciais e cientificos
Resultou em um SO enorme e complexo
Milhões de linhas escritas em linguagem de montagem por
milhares de programadores
Implementou várias técnicas que não existiam nos
computadores de segunda geração
Spooling
Multiprogramação
IBM 360/91
Spooling
Capacidade de transferir jobs de cartões perfurados para
discos magnéticos logo que esses chegassem a sala do
computador
Assim que um job fosse completado poderia carregar um
novo job nessa partição que acabou de ser liberada
Spooling – derivado da expressão Simultaneous Peripheral
Operation online
Não precisava mais do computador de pequeno porte para
ler os cartões e gravar em fita
Multiprogramação
Ociosidade da CPU entre a entrada e o
processamento
Sobrepor E/S de um job com a computação de outro
job. Enquanto executa um job, o SO:
Lê o próximo job da leitora de cartões em uma área de
armazenamento no disco (fila de jobs).
Envia saídas de jobs anteriores do disco para a impressora.
Job pool – estrutura de dados que permite ao SO
selecionar qual job executará em seguida de maneira
a aumentar a utilização da CPU.
Sistemas batch multiprogramados
Vários jobs são mantidos na memória principal ao mesmo tempo, e a CPU
é multiplexada entre eles.
Características de SO necessárias para a
multiprogramação
Rotinas de E/S fornecidas pelo sistema.
Gerenciamento de Memória – o sistema deve alocar memória
para vários jobs.
Escalonamento de CPU – o sistema deve escolher dentre vários
jobs prontos para executar.
Alocação de dispositivos.
Hardware para proteger memória, processador e dispositivos de
forma que um job não interfira no outro
Sistemas time-sharing – computação
interativa
Submissão de vários jobs levava várias horas
Programadores saudosos por poder usar computador por
várias horas como na primeira geração
Solução  Divisão da CPU entre várias pessoas
A CPU é multiplexada entre vários jobs que são mantidos na
memória e no disco (a CPU é alocada para um job somente se
ele estiver na memória).
Um job é carregado e removido da memória para o disco
(swapped in / out).
Comunicação on-line entre o usuário e o sistema é provida;
quando o sistema operacional termina a execução de um
comando, ele procura a próxima “instrução de controle” não de
um leitor de cartão, mas do teclado.
Acesso dos usuários aos dados e código deve ser on-line no
sistema.
CTSS
Primeiro sistema operacional de tempo compartilhado
CTSS – Compatible Time Sharing System
Desenvolvido pelo MIT
Somente se popularizou na terceira geração quando se usou
a proteção em hardware
Multics
MIT, Bell Labs e General Eletrics decidiram desenvolver um
computador utilitario
Capaz de suportar centenas de usuarios conectados ao
mesmo tempo
Baseado no modelo de energia eletrica
Maquina somente mais potente que um Intel 386 mas com
grande capacidade de E/S
Multics – Multiplexed Information and Computing Service
Usava o compilador PL/I que não funcionava bem
Projeto fracassou não teve sucesso esperado
Somente MIT prosseguiu e fez funcionar por completo
Clientes como Ford, GM e Agencia de Seguranca dos EUA usaram
durante 30 anos os MULTICS
Introduziu novas idéias
Familia PDP
Outra linha que se desenvolveu: mini-computadores
Iniciado com o DEC PDP-1 em 1961
Tinha somente 4k de palavras de 18 bits
Cada máquina custava $120mil (menos de 5% que um 7094)
Vendia como água
Para certos tipos de aplicações era tão rápido quanto os 7094
Deu origem a uma nova linha de industria
Diversos outros PDPs culminando no PDP-11
Ken Thompson (cientista do Bell Labs) achou um PDP-7 sem uso e
escreveu uma versão despoja e monousuário do MULTICS
Nascia o UNIX
System V da AT&T e BSD da Berkley
Posix (Portable Operating System)
1987 Minix (Tanenbaum)
Linus Torvalds  Linux
PDP – 11
PDP-7
Unix began life...
Ken (sentado) e Dennis (em
pé) em um PDP-11 em 1972.
Quarta geração (1980 – presente)
Desenvolvimento dos circuitos integrados de larga escala ( LSI –
Large Scale Integration) surgiram os computadores pessoais
Semelhantes ao PDP-11
1974 – Intel lançou o 8080 primeira CPU 8 bits de propósito geral
Sistema operacional CP/M (Control Program for Microcomputers)
Gary Kildall desenvolveu e ganhou os direitos da Intel que não acreditava em
computadores pessoais  Fundação da Digital Research
1977 – Digital Research reescreveu o CP/M para rodar em diversos
dispositivos. Dominio completo do mercado por cerca de 5 anos
Inicio dos anos 80 IBM procura DR para usar o CP/M no seu IBM
PC
Não foram recebidos por Kildall  Uma das piores decisões da história
Bill Gates fornece o DOS para a IBM (comprado por $50 mil)
Venda do SO direto aos fabricantes e não ao usuário final
1983 – Intel 80286 com DOS surge no mercado
CP/M vai sumindo aos poucos
Computadores pessoais
Computadores Pessoais – sistemas dedicados a um
único usuário.
Dispositivos de E/S – teclados, mouse, monitor,
impressora.
Conveniência ao usuário e resposta rápida.
Pode adotar tecnologias desenvolvidas para grandes
sistemas operacionais – freqüentemente o uso do
computador é individual e não necessita utilização de
características avançadas de proteção e alocação da
CPU.
IBM PC – Processador 8088 4.77MHz - 1981
Intel 80286
Migração de conceitos e características
de SO
Sistemas paralelos
Sistemas multiprocessados com uma ou mais CPU em
comunicação próxima.
Sistemas fortemente acoplados (Tightly coupled
system) – processadores compartilham memória e um
clock; comunicação normalmente ocorre através da
memória compartilhada.
Vantagens de Sistemas paralelos:
Maior throughput
Razões Econômicas
Confiabilidade Maior
Tolerância a falhas
Sistemas paralelos (cont)
Multiprocessadores simétricos (SMP)
Múltiplos processadores similares conectados entre si e à
memória por um barramento ou alguma outra forma de circuito de
conexão interno
Compartilhamento total
Cada processador executa uma cópia idêntica do sistema operacional.
Sistema operacional controla tudo
Muitos processos podem executar ao mesmo tempo sem deterioração
no desempenho.
Grande parte dos sistemas operacionais modernos suportam SMP
Baixa escalabilidade – gargalo no barramento.
Exemplos: IBM R50, SGI Power Challenge, SUN Ultra Enterprise 10000,
HP/Convex Exemplar X-Class, DEC Alpha Server 8400
Arquitetura SMP (Symmetric Multiprocessing)
Exemplos de SMP
Cray T90
Cray SX6
Exemplos de SMP
HP Integrity rx8620-32 Server
Intel Quad Xeon 7400 Server
Sistemas paralelos (cont)
Máquinas maciçamente paralelas (MPP)
P/C
P/C
P/C
M
M
M
Rede de interconexão de baixa latência
Rede de interconexão proprietária.
Comunicação através de troca de mensagens.
Exemplos: Intel Paragon, Connection Machine CM-5, IBM SP-2
Exemplos de MPP
Intel Paragon
IBM SP2
Connection Machine CM-5
Exemplo de MPP
Blue Gene da IBM
Sistemas paralelos (cont)
Máquinas com memória compartilhada distribuída (DSM)
P/C
P/C
P/C
M
M
M
Rede de interconexão de baixa latência
Os processadores podem acessar todas as memórias. (único espaço de endereçamento)
DSM implementado em SW, HW ou misto.
Exemplos: Stanford DASH, Cray T3D, estações de trabalho rodando TreadMarks
Exemplo de DSM
Cray T3D
Sistemas tempo real
Normalmente utilizado como um dispositivo de controle em
uma aplicação dedicada como controlar experimentos
científicos, sistemas de imagens médicas, sistemas de controle
industrial, e alguns sistemas de visualização.
Limites de tempos bem definidos.
Sistemas Hard real-time
Armazenamento secundário limitado ou ausente, dados
armazenados em memória volátil ou read-only memory
(ROM)
Conflitante com sistemas time-sharing, não suportado por
sistemas de uso geral.
Sistemas Soft real-time
Utilidade limitada no controle industrial ou robótica
Útil em aplicações (multimídia, realidade virtual) que
necessitam de funções avançadas de SO.
Sistemas distribuídos
Distribuir a computação entre processadores fisicamente
independentes.
Sistemas fracamente acoplados (Loosely coupled system) –
cada processador tem sua própria memória local;
processadores se comunicam através de várias linhas de
comunicação, como barramentos de alta velocidade ou linhas
telefônicas.
Vantagens dos Sistemas Distribuídos.
Compartilhamento de Recursos
Aumento na velocidade da computação – compartilhamento
de carga
Confiabilidade
Comunicações
Sistemas distribuídos (cont)
Sistema Operacional de Rede
Provê compartilhamento de arquivos
Provê esquemas de comunicação
Executa independentemente de outros computadores na rede
Sistema Operacional Distribuído
Menor autonomia entre computadores
Dá a impressão que existe um único sistema operacional
controlando a rede