SISTEMAS OPERACIONAIS
• Profa Alba
– Tecnólogo em Processamento de Dados -
UnB - 1986
– Mestre em Ciência da Computação -
UFRGS - 1991
– PhD - especialidade Informática, sub-área
sistemas operacionais paralelos - INPG -
Grenoble, France - 1996
• Avaliação
– 3 provas (P1,P2) (9 pontos cada)
– 1 trabalho prático (T1) (13 pontos)
– frequência, participação em aula (FP) (até
0,5 pontos na menção final)
– menção final = ((P1+P2+P3+S1) / 40) + FP
• Bibliografia básica
– A. S. Tanenbaum, Sistemas Operacionais
Modernos, Prentice-Hall do Brasil, 1995,
493p.
– Transparências da aula
PROGRAMA DO CURSO
• Noções de Base
• Gerência de Processos
• Gerência de Memória
• Gerência de Arquivos
• O Sistema Operacional Unix
• Outros Sistemas Operacionais
– DOS
– Windows NT
– MVS
– etc
NOÇÕES DE BASE
• Computador = hardware + software
– hardware: componentes físicos
– software: conjunto de todos os programas
– O sistema operacional é um programa ou
conjunto de programas.
jogos,
sistema bancário,
sistema de Aplicações
matrículas, etc
compiladores,
editores, debuggers, Software de
shell, etc
base
sistema
operacional
chips, fios, tubos,
microcódigo, etc Hardware
Software de Base:
- Sistemas operacionais: modo protegido
- Utilitários: modo usuário
FUNÇÕES DO SISTEMA
OPERACIONAL
• Qual a função do programa sistema
operacional?
– Algumas definições:
• [Brinch73] Um sistema operacional é um
conjunto de procedimentos que permete que
um grupo de pessoas compartilhe uma
instalação de maneira eficaz
• [Madnick74] O sistema operacional é o
gerenciador dos recursos da máquina
• [Fortier86] O sistema operacional fornece
ao usuário uma visão de sua interface com
a máquina
➫Um sistema operacional possui duas
grandes funções: criar para o usuário
uma abstração do hardware e gerenciar
os recursos da máquina [Krakowiack87]
[Tanenbaum92]
FUNÇÃO 1 - MÁQUINA
ESTENDIDA
• A primeira função de um sistema operacional
é criar para o usuário uma máquina abstrata
mais simples que a máquina real.
– A máquina abstrata ou máquina estendida
é equivalente ao hardware, porém muito
mais simples de manipular.
máquina física ----SO---> máquina abstrata
– Exemplo: leitura de um dado gravado em
arquivo em disquete
máquina física máquina abstrata
1) verificar se o 1) abrir o arquivo
motor está ligado fd=open(“arquivo”);
2)posicionar o braço 2) ler o arquivo
mecânico (bloco, read(fd,&dado);
setor, trilha)
3)recuperar o dado e
traduzi-lo para o
modo desejado
4)colocar o dado na
posição indicada
FUNÇÃO 1 - MÁQUINA
ESTENDIDA
• O programador não quer tratar de todos estes
detalhes
• O programador NÃO PODE tratar de todos
estes detalhes
➫ A máquina estendida “esconde” a
complexidade do hardware e protege os
usuários
FUNÇÃO 2 - GERENTE DE
RECURSOS
• O computador é um conjunto de recursos que
serão compartilhados.
– recursos físicos: processadores, memórias,
discos, terminais, etc.
– recursos abstratos: processos, arquivos,
etc.
• Para todo recurso, o sistema operacional deve:
– manter informações sobre o recurso
(endereço, estado, etc).
– decidir quem pode acessar o recurso
– alocar o recurso
– liberar o recurso
• Quanto à utilização de recursos, o SO deve:
– ser eficiente (maximizar a utilização dos
recursos)
– possuir um tempo de resposta previsível
HISTÓRICO
• Os sistemas operacionais estão intimamente
ligados às arquiteturas nas quais eles rodam.
Por isso, analisamos a evolução dos sistemas
operacionais em função da evolução das
arquiteturas.
• O matemático inglês Charles Babbage (1792-1871)
constrói o primeiro “computador”, que não
funciona devido a problemas tecnológicos.
• Primeira Geração (1945-1955)
– Hardware: válvulas e painéis. No início dos
anos 50 aparecem os cartões perfurados e as
impressoras de linha.
– Sistema operacional: Não existe. O
programador utiliza diretamente a console da
máquina para executar seu programa
(linguagem de máquina ou fios). Sistema
mono-usuário. Um único grupo de pessoas
concebia, construía, programava, utilisava e
fazia a manutenção das máquinas.
– Linguagem: linguagem de máquina
HISTÓRICO
• Segunda Geração (1955-1965)
– Hardware: transistores. Os computadores
começam a ser viáveis comercialmente.
Aparição da fita magnética.
– Sistema operacional: É feita a separação entre
conceptores, construtores, operadores,
programadores e técnicos de manutenção.
Existe um pseudo-SO que lê os cartões, executa
o programa e escreve os resultados na
impressora. Sistema mono-usuário.
• Sistemas batch: conceito de job (programa
ou conjunto de programa com
características similares). Cartões de início e
fim de job. Pseudo-linguagem de controle
de execução (wfl), transferência de controle
automática entre jobs. A execução de um
job pode ser feita ao mesmo tempo que a
E/S de outros.
HISTÓRICO
• Modo Monitor/usuário: é feita a proteção
do SO contra o usuário. O SO é acessado
através de chamadas ao sistema.
SVC n Usuário
case n
READ:..
SO
• Temporizador: O usuário executa durante
um tempo pré-definido (objetivo: evitar
loops infinitos)
• Menos interação entre o usuário e a
máquina
– Linguagens: Fortran, Assembly, COBOL
HISTÓRICO
• Terceira Geração (1965-1980)
– Hardware: circuitos integrados. Aparição do
disco. Surgem duas linhas diferentes de
máquina: comercial e calculo científico. A IBM
tenta conciliar as duas com a linha System/360.
Surgem os minicomputadores (DEC PDP-1
com 4k de RAM e palavras de 18 bits - 1961).
– Sistema Operacional:
• Portabilidade: IBM cria a linha 360 para
rodar em várias configurações de máquinas.
SO enorme e complexo.
• Independência de dispositivos: execução de
um mesmo programa com cartões e
impressora ou com fita magnética.
Dispositivos lógicos de E/S.
• SPOOL (Simultaneous Peripheral
Operation On Line): leitura dos cartões e
escrita em disco.
disco
operador operador impressora
cartões cpu
HISTÓRICO
• Multiprogramação: Surgiu para evitar que
a CPU fique ociosa enquanto o processador
espera o término de uma operação de E/S.
Vários jobs estão em execução ao mesmo
tempo. Aparecem os processadores
dedicados à E/S
• Sistemas time-sharing: visam garantir um
tempo de resposta menor aos usuários.
Surgem os terminais.
• Gerência de memória: para executar um
programa que não cabe inteiramente na
memória, são propostas duas soluções:
overlay e memória virtual.
• Projeto do Sistema Multics, cujo objetivo é
fornecer bastante poder computacional à
centenas de usuários. Projeto conjunto do
MIT, GE e Bell. Enorme sucesso
acadêmico. Enorme fracasso comercial.
HISTÓRICO
• Nascimento do Unix, sistema operacional
baseado no MULTICS escrito em C.
– Linguagens: PL/I, APL, Algol, B, C, etc.
• Quarta Geração (1980-1990)
– Hardware: circuitos LSI (large scale integration)
fazem com que o custo do computador caia
bastante. Disseminação dos microcomputadores.
Aparição do mouse.
– Sistema operacional: Leva-se em conta a
interface com o usuário na concepção dos
softwares e do sistema operacional. Dois sistemas
dominam o mercado: MS-DOS e Unix.
• Redes de computadores: os usuários estão
conscientes de que várias máquinas compõem
o sistema e endereçam solicitações
explicitamente a elas: Apollo/Domain,
Appletalk, TokenRing, etc.
• Sistemas distribuídos: as diferentes máquinas
que compõem o sistema são percebidas pelo
usuário como uma única máquina virtual.
HISTÓRICO
• Sistemas distribuídos: as diferentes
máquinas que compõem o sistema são
percebidas pelo usuário como uma única
máquina virtual.
• Quinta Geração (1990-??)
– Grandes redes de computadores (WAN)
– Super-processadores vetoriais (Cray, Fujitsu)
– Máquinas paralelas e massivamente paralelas
(MasPar, CM-5, n-cube)
– Máquinas data flow
ESTRUTURA DOS SO
• Sistemas Monolíticos
– É a organização de SO mais comum. Não há
estrutura. O sistema é um conjunto de
procedimentos que chamam um ao outro.
Quanto ao tempo de resposta, é a organização
mais eficaz. Pode-se obter um mínimo de
estruturação se os procedimentos são forçados à
fazer uma SVC (supervisor call) ou gerar um
trap. É a organização do Unix comercial.
– O sistema operacional roda em modo kernel
enquanto os demais programas rodam em modo
usuário.
– O sistema operacional monolítico possui
geralmente três “camadas”: um procedimento
principal que chama os procedimentos de
serviço, um conjunto de procedimentos de
serviço que tratam as chamadas ao sistema e
um conjunto de procedimentos que ajudam os
procedimentos de serviço.
programas
proc de
serviço
ESTRUTURA DOS SO
• Sistemas em Camadas
– O sistema é organizado em camadas funcionais.
Cada camada só faz chamada à camada
imediatamente inferior.
3 programas de usuário
abstração de E/S
2 gerência de E/S
memória virtual
1 gerência de memória
conjunto de processos
0 alocação do processador
– Exemplos: THE (1968 - Dijkstra), MULTICS
(BELL, MIT)
– A noção de camadas é fortemente reforçada
pelo hardware.
ESTRUTURA DOS SO
• Máquinas Virtuais
– Os sistemas operacionais estruturados como
máquinas virtuais possuem, no mais baixo
nível, um monitor da máquina virtual, que
simplesmente implementa a multiprogramação.
Em cima do monitor, várias máquinas virtuais
podem ser utilizadas. As máquinas virtuais
implementam uma cópia fiel do hardware, com
modo kernel/usuário, E/S, interrupções, etc.
usuários usuários usuários
máquina máquina máquina
virtual 1 virtual 2 virtual n
monitor
hardware
Exemplo: VM/370 da IBM
ESTRUTURA DOS SO
• Modelo Cliente-Servidor: Nesta organização, a
maior parte das funções do SO é implementada à
nível de usuário (processos clientes). O kernel
funciona como um servidor para os processos
clientes e implementa simplesmente a abstração de
processos e a comunicação entre eles. Este tipo de
estrutura, além de tornar mais simples o projeto do
sistema operacional, faz com que ele fique mais
confiável. Uma pane em um servidor de arquivos,
por exemplo, não derruba o kernel. Infelizmente,
existem alguns serviços, como os drivers de
dispositivos de E/S, onde a maior parte dos
procedimentos deve rodar no modo kernel. Estes
processos são chamados servidores críticos.
Processo Processo Servidor de Servidor de Servidor de
Cliente Cliente arquivos memória terminais
Kernel
Exemplo: sistema operacional distribuído Mach