Sistemas Operacionais
Prof. Marcos Ribeiro Quinet de Andrade
Instituto de Ciência e Tecnologia - ICT
Universidade Federal Fluminense - UFF
Bibliografia
Bibliografia Básica:
• TANENBAUM, A. S. Sistemas Operacionais Modernos. São
Paulo : Ed. Pearson, 2004 (2ª edição), 2009 (3ª edição).
• SILBERSCHATZ, A., GAGNE, G., GALVIN, P. B. Fundamentos de
Sistemas Operacionais. Rio de Janeiro: Ed. LCT, 2015 (9ª.
edição)
Bibliografia Complementar:
• DEITEL, H. M., DEITEL, P.J., CHOFINES, D.R. Sistemas
Operacionais. São Paulo : Pearson Prenticce-Hall, 2005 (3ª
edição).
• TANENBAUM, A. S., WOODHULL. Sistemas Operacionais:
Projeto e Implementação. 2a. ed.. Porto Alegre : Bookman,
2000.
Material das aulas:
[Link]
2
Introdução
• Sistema computacional: conjunto de
recursos computacionais, parte hardware e
parte software
• Essencialmente, um sistema computacional
consiste em:
• Recursos computacionais físicos (hardware);
• Programas do sistema;
• Programas de aplicação.
3
Por que?
• Sistemas computacionais modernos são
compostos por diversos elementos:
• Processadores;
• Memória;
• Controladoras;
• Monitor;
• Teclado; Alta
• Mouse;
Complexidade
• Impressoras;
• Etc.
4
Por que?
• Com tantos dispositivos, surge a
necessidade de gerenciamento e
manipulação desses diversos dispositivos
• Tarefa difícil
SISTEMAS OPERACIONAIS
5
O que é um Sistema Operacional?
• Sistema Operacional: software que controla os
recursos do sistema computacional e oferece ao
usuário uma interface para interagir com cada um
destes recursos
6
O que é um Sistema Operacional?
Um sistema operacional típico é formado por
múltiplas camadas, cada uma projetada para
atender uma tarefa específica
Estrutura em Níveis de um SO
8
Definição de um S.O. de acordo com
a função desejada
• É uma máquina estendida (abordagem top-down,
“abstração do todo para as partes”)
• Oculta os detalhes complicados que têm quer ser
executados
• Apresenta ao usuário uma máquina virtual, mais fácil
de usar
9
Definição de um S.O. de acordo com
a função desejada
• É um gerenciador de recursos (abordagem
bottom-up “abstração das partes para o
todo”)
◦
• Precisa fornecer a alocação ordenada e controlada
de recursos (UCP, memória, E/S) entre processos
que competem por eles;
• Gerencia todas as partes de um sistema complexo;
• Cada programa tem um tempo com o recurso;
• Cada programa tem um espaço no recurso;
• Faz a multiplexação (compartilhamento) dos
recursos.
10
Diferença de tratamento de uma
operação de acordo com a abordagem
• Ex.: como é realizada a entrada/saída de um disco
flexível – tarefa: Leitura e Escrita
• Usuário: alto nível – abstração simples
• Visualização do arquivo a ser lido e escrito;
• Arquivo é lido e escrito;
• Arquivo é fechado.
• SO: baixo nível de detalhes
• Número de parâmetros;
• Endereço de bloco a ser lido;
• Número de setores por trilha;
• Modo de gravação;
• Em um chip controlador baseado no NEC PD765, são
16 comandos para a carga de 1 a 9 bytes no
registrador de dispositivos (ver livro)
11
Sistema Operacional como
Gerenciador de Recursos
• Gerenciar todos os dispositivos e recursos
disponíveis no computador
• Ex.: se dois processos querem acessar um
mesmo recurso, por exemplo, uma impressora,
o SO é responsável por estabelecer uma ordem
para que ambos os processos possam realizar
sua tarefa.
•
• Coordena a alocação controlada e ordenada
dos recursos;
12
Objetivos de um Sistema
Operacional
• Apresentar ao usuário do sistema uma forma
amena de utilizar o computador. Criar uma
máquina virtual, de fácil compreensão para o
u s u á r i o , c o m c a r a c t e r í s t i c a s d i f e re n t e s d a
máquina física;
• Utilizar o hardware disponível da forma mais
otimizada possível, para aumentar o desempenho
do sistema;
• Garantir o maior nível de segurança e
funcionabilidade possível, sem incomodar os
usuários com detalhes técnicos do funcionamento.
13
Histórico de Evolução (SO)
• Meados do século XIX: Charles Babbage (1792-
1871), por volta de 1833, projetou o primeiro
computador. No entanto, a pouca tecnologia da
época não permitiu que o projeto tivesse sucesso.
• Máquina analítica:
• Apenas ‘hardware’, e complexa de ser manipulada;
• Charles Babbage conheceu Ada Lovelace, que ficou muito
interessada no seu trabalho; traduziu um artigo sobre a
máquina analítica e acrescentou uma grande quantidade
de notas, explicando seu funcionamento, e mostrando
como utilizá-la para calcular uma sequência de Bernoulli
• Sua metodologia foi tão precisa e descritiva, que hoje é
considerada a primeira programadora da história
14
Histórico de Evolução
Primeira Geração
• Primeira Geração (1940-1955): Válvulas
◦
• C o m p u t a d o re s ex p e r i m e n t a i s , e n o rm e s , q u e
ocupavam salas imensas e dependiam de potentes
sistemas de refrigeração para seu funcionamento;
• Dezenas de milhares de válvulas (mais de 20.000) e
outros componentes eletrônicos;
• N ã o ex i s t i a m a i n d a o s c o n c e i t o s d e s i s t e m a
operacional e linguagem de programação de alto
nível; programação feita diretamente no hardware.
15
Histórico de Evolução
Primeira Geração
• Mesmo grupo de pessoas projetava, construía,
programava, operava e fazia a manutenção de
cada máquina;
• O acesso às máquinas era feito por meio de
reserva de tempo: cada usuário fazia sua
p ro g r a m a ç ã o d i re t a m e n t e n o s p a i n é i s d a s
máquinas (programação “hardwired”);
• Praticamente todos os problemas submetidos
eram cálculos numéricos diretos (tabelas de seno,
logaritmos, etc);
16
Histórico de Evolução
Primeira Geração
• Final dos anos 40: primeiro computador eletrônico,
o ENIAC ( Electronic Numerical Integrator And
Computer);
• 1950: surgem os cartões perfurados
• Os programas eram codificados nos cartões e
sua leitura era feita por máquinas específicas,
que necessitavam de operadores;
• John Von Neumann propõe uma programação não
“hardwired”. Nasce o Assembler/Assembly;
17
Histórico de Evolução
Segunda Geração
• Segunda Geração (1955-1965) – Transistores e
Sistemas em Batch
• O d e s e n v o l v i m e n t o d o s t r a n s i s t o re s t o rn o u o
computador mais confiável possibilitando sua
comercialização – Mainframes;
• Separação entre projetistas, fabricante,
programadores e técnicos de manutenção;
• No entanto, devido aos altos custos, poucos tinham
acesso a essa tecnologia – somente grandes
empresas, órgãos governamentais ou universidades;
18
Afinal, qual foi o primeiro S.O.?
• O GM-NAA I/O foi o primeiro sistema operacional
comercial, criado em 1956 por Robert L. Patrick para
mainframes IBM 704.
• Po ré m , e x i s t e m re g i s t ro s d e q u a t ro s i s t e m a s
operacionais criados antes do GM-NAA I/O, sendo o
LEO I (Lyons Eletronics Office) o mais antigo, criado
em 1951. A diferença é que estes sistemas foram
somente de uso interno dos centro de pesquisas e
empresas que os desenvolveram
• Vale lembrar que todos os S.O. anteriores ao IBM
OS/360 eram desenvolvidos para um hardware em
particular, a cada nova versão de mainframe lançado,
era necessário reescrever o sistema de acordo com as
novas características do hardware utilizado.
Histórico de Evolução
Segunda Geração
• Surge a idéia de linguagem de programação de
alto nível – Fortran (desenvolvida pela IBM – 1954-
1957);
• Cartões perfurados ainda são utilizados:
• Operação: cada programa ( tarefa ) ou conjunto de
programas escrito e perfurado por um programador
era entregue ao operador da máquina para que o
mesmo fosse processado – alto custo
• Sistemas em Batch (lote)
• Consistia em coletar um conjunto de tarefas e fazer
a gravação desse conjunto para uma fita
magnética
20
Histórico de Evolução
Segunda Geração
Estrutura de uma tarefa em Fortran
21
Histórico de Evolução
Segunda Geração
Antigo sistema em batch (lote):
• traz os cartões para o 1401;
• lê os cartões para a fita;
• coloca a fita no 7094 que executa o processamento;
• coloca a fita no 1401 que imprime a saída.
FMS (Fortran Monitor System)
Processamento: IBSYS – SO IBM para o 7094
22
Histórico de Evolução
Terceira Geração
• Terceira Geração (1965-1980) – Circuitos integrados e
Multiprogramação
Produtos Incompatíveis
Máquinas imensas e poderosas Máquinas comerciais
orientadas à palavra (7094) orientadas à caractere (1401)
Alta carga de desenvolvimento e
manutenção
IBM introduz o System/360
23
Histórico de Evolução
Terceira Geração
• System/360
• Série de máquinas com software compatível;
• Essas máquinas diferiam apenas no preço e
desempenho, variando da 1401 até a 7094;
• Foi a primeira a usar circuito integrado em pequena
escala, ao invés de transistores;
• O sistema operacional era o OS/360
• Sua maior vantagem era também sua maior fraqueza: SO
enorme e muito complexo, pois precisava realizar as
funções de todas as máquinas → ineficiente, cheio de erros
(milhões de linhas de código assembly escritas por
milhares de programadores = milhares de erros)
24
Histórico de Evolução
Terceira Geração
• Os sistemas computacionais dessa época eram
monoprogramados, ou seja, só executavam a
tarefa seguinte se a anterior tivesse sido concluída
• Aplicações CPU-bound não tinham problema com
relação ao tempo que se precisava esperar para
realizar E/S
• Aplicações IO-bound gastavam de 80 a 90% do
tempo realizando E/S
• Enquanto isso, a UCP ficava parada
• Solução: Multiprogramação
25
Histórico de Evolução
Terceira Geração
• Multiprogramação:
• Dividir a memória em diversas partes e alocar a
cada uma dessas partes uma tarefa.
• Manter na memória simultaneamente uma
quantidade de tarefa s suficientes para ocupar
100% do tempo do processador, diminuindo a
ociosidade.
• Importante: o hardware é que protegia cada uma
das tarefas contra acesso indevidos de outras
tarefas. Futuramente, esta tarefa torna-se parte do
sistema operacional.
26
Histórico de Evolução
Terceira Geração
• Spooling (Simultaneous Peripheral Operation On
Line):
• Passou a permitir que operações como a leitura de
cartões de tarefas fosse feita direta do disco;
• Assim que uma tarefa terminava, o sistema
operacional já alocava uma nova tarefa a uma
partição livre da memória direto do disco;
• Eliminação de máquinas como as 1401 e a
necessidade de se ficar transportando fitas de um
lugar para outro.
27
Histórico de Evolução
Terceira Geração
• Mesmo com o surgimento de novas tecnologias, o
tempo de processamento ainda era algo crítico. Para
corrigir um erro de programação, por exemplo, o
programador poderia levar horas pois cada tarefa era
tratada dentro de um lote
Timesharing
28
Histórico de Evolução
Terceira Geração
• Timesharing: cada usuário tinha um terminal
on-line à disposição; a utilização da UCP de
um módulo servidor é compartilhada entre os
usuários
• Primeiro sistema Timesharing: CTSS (Compatible Time
Sharing System) – 7094 modificado.
• Ex.: se 20 usuários estão ativos e 17 estão ausentes, o
processador é alocado a cada um dos 3 jobs que estão
sendo executados;
29
Histórico de Evolução
Terceira Geração
• S u rg e o M U LT I C S ( M u l t i p l exe d I n f o rm a t i o n a n d
Computing Service), predecessor do UNIX;
• Fruto de uma idéia do MIT, Bell Labs e General Electric, de
desenvolver um computador que suportasse centenas de
usuários simultâneos em timesharing
• Codificado em PL/I, o que atrapalhou seu desenvolvimento
(compilador fraco)
• Apesar do fracasso comercial, teve enorme influência em
SO’s futuros
• Família de minicomputadores PDP da DEC;
• Diferente da família System/360, eram incompatíveis;
• Unix original rodava no PDP-7 (Ken Thompson – cientista da
Bell Labs)
• O PDP-1 custava 120 mil (5% do valor de um 7094)
• Tinha 4K palavras de 18 bits
30
Histórico de Evolução
Quarta Geração
• Quarta Geração (1980-1990) – Computadores
Pessoais
• Com a tecnologia de circuitos integrados de larga
escala (LSI) surgem chips com milhares de
transistores encapsulados em um centímetro
quadrado de silício
• Intel – 8080 (1974)
• IBM – PC (início dos anos 80)
• Apple – Apple e Macintosh
31
Histórico de Evolução
Quarta Geração
• Intel 8080 – CP/M da Digital Research, de Gary
Kildall)
• CP/M (Control Program for MicroComputer) – sistema
operacional baseado em disco;
• IBM PC - DOS
• Inicialmente, a IBM tentou utilizar o CP/M, mas Kildall
não quis nenhum acordo;
• I B M p ro c u ro u B i l l G a t e s p e d i n d o u m s i s t e m a
operacional para rodar e ser vendido juntamente
com o IBM PC;
• Bill Gates comprou da Seattle Computer Products o
DOS (Disk Operating System), desenvolvido por Tim
Paterson;
32
Histórico de Evolução
Quarta Geração
• Evolução do DOS para o MS-DOS (MicroSoft DOS)
• Tanto o CP/M quanto o MS-DOS eram baseados em
comandos;
• Macintosh Apple - Sistemas baseados em janelas
(GUI – Graphical User Interface)
• Microsoft – Plataforma Windows
• A história deste período da computação está muito
bem retratada no filme “Piratas da Informática”
(“Pirates of Sylicon Valley”) e no documentário em
três partes “O Triunfo dos Nerds”
33
Histórico de Evolução
Quinta Geração (1990-hoje)
• O protocolo de comunicações TCP/IP tornou-se
largamente utilizado (Depto. de Defesa dos
EUA) e as L ANs (Local Area Networks)
tornaram-se mais práticas e econômicas com o
surgimento do padrão Ethernet, desenvolvido
pela Xerox;
• Desenvolvimento e popularização do modelo
cliente/servidor;
• Proliferação das redes de computadores
• Internet
34
Histórico de Evolução
Quinta Geração (1990-hoje)
• Sistemas Operacionais Distribuídos:
• Apresenta-se como um sistema operacional centralizado,
mas que, na realidade, tem suas funções executadas por
um conjunto de máquinas independentes;
• Sistemas Operacionais em Rede;
• Usuários conhecem a localização dos recursos que estão
utilizando e não têm a visão de um sistema centralizado
• Sistema Operacionais para dispositivos móveis;
• Execução de tarefas com economia de energia (baterias
limitadas), aplicações voltadas principalmente para web
35
História dos Sistemas Operacionais -
Resumo
• Primeira geração – anos 50
• Válvulas, painéis de programação; processamento em
lotes
• Segunda geração – anos 60
• Multiprogramação, multiprocessamento, timesharing ,
tempo real
• Terceira geração – meados 60 a meados 70
• Sistemas de propósito geral; desenvolvimento em
linguagens de alto nível
• Quarta geração – meados 70 a meados 80
• Cliente/servidor, processamento distribuído, interface
gráfica
• Quinta geração – meados 80 aos dias atuais
• Sistemas operacionais de redes, computação distribuída,
software livre, multiprocessamento
36
O Zoológico de Sistemas
Operacionais
• Sistemas operacionais para computadores de
grande porte;
• Sistemas operacionais para servidores;
• Sistemas operacionais para multiprocessadores;
• Sistemas operacionais para computadores pessoais;
• Sistemas operacionais de tempo real;
• Sistemas operacionais embarcados;
• Sistemas operacionais para cartões inteligentes;
• Sistemas operacionais para dispositivos móveis.
37
Qual S.O. devo usar?
• Para saber qual o sistema operacional mostra-se
mais adequado para uso em seu computador,
vários critérios devem ser considerados:
• Preço;
• Confiabilidade;
• Desempenho;
• Compatibilidade com o hardware;
• Facilidade de interação;
• Aplicativos disponíveis;
• Filosofia de uso.
38
Na dúvida...
39