Sistemas Operacionais

Propaganda
FACENS - Faculdade de Engenharia de Sorocaba
Enade - Sistemas Operacionais
Sistemas Operacionais - Introdução
Sistemas Operacionais - Funções
Aplicações
Compiladores Editores Interpretadores
de comando
Sistema Operacional
Linguagem de Máquina
Microarquitetura
• SO como Máquina Estendida – oferece uma
máquina virtual mais simples de programar do
que o hardware
• SO como Gerenciador de Recursos – fornece
uma alocação controlada de processadores,
memória e dispositivos de entrada/saı́da (E/S)
Dispositivos Fı́sicos
Todo computador possui uma camada chamada sistema operacional cujo objetivo é gerenciar todos os dispositivos (processador, memória, disco, impressora, teclado, monitor, etc.) e
prover uma interface simples para o usuário manipular o hardware.
O sistema operacional é um software que oferece ao programador um ambiente agradável e mais conveniente para trabalhar.
Profa. Tiemi Christine Sakata
A função do sistema operacional pode ser apresentada ao
usuário como máquina estendida ou máquina virtual que facilita
a programação provendo uma variedade de serviços que os programas podem obter usando instruções especiais (system calls).
O sistema operacional também pode ser visto como um gerenciador de vários pedaços de um sistema complexo (processador,
memória, relógios, duscis, etc.) e deve decidir quais pedidos
podem alocar os recursos para que o sistema possa operar sem
conflitos.
1
FACENS - Faculdade de Engenharia de Sorocaba
Enade - Sistemas Operacionais
História dos Sistemas Operacionais
História dos Sistemas Operacionais
• Primeira Geração (1945–55) — Válvulas e
Painéis de Conectores
• Terceira Geração (1965–80) — Circuitos
Integrados e Multiprogramação
• Segunda Geração (1955–65) — Transistores e
Sistema Batch
Card
reader
Tape
drive
Input
tape
(b)
Output
tape
7094
(c)
(d)
Job 2
Job 1
Printer
1401
(a)
System
tape
Job 3
1401
(e)
(f)
Os primeiros computadores surgiram no inı́cio da Segunda
Gerra Mundial e eram formados por milhares de válvulas que
ocupavam enores áreas. Não existia o conceito de sistemas operacionais e para trabalhar nessas máquinas era necessário um
profundo conhecimento do hardware.
A criação do transitor permitiu o aumento da velocidade e
a confiabilidade do processamento e as memórias tinham maior
capacidade permitindo computadores menores. O sistema operacional era bem simples e era armazenado na memória.
Memory
partitions
Operating
system
• Quarta Geração (1980–atual) —
Computadores Pessoais
A multiprogramação compartilha a memória principal e o processador, o que permitiu o aumento da utilização da CPU. O
sistema operacional mantém vários jobs na memória ao mesmo
tempo e gerencia a execução de cada job.
Com a evolução de microprocessadores, surgiram os primeiros
microcomputadores, muito mais baratos. Os dois sistemas operacionais que inicialmente dominaram o computador pessoal foram
MS-DOS e Unix. O hardware foi ficando cada vez mais sofisticado, com vários processadores exigindo sistemas operacionais
com novos mecanismos de controle e sincronismo.
A década de 90 foi definitiva para a consolidação de sistemas
operacionais baseados em interfaces gráficas. As interfaces são
cada vez mais simples e eficiente.
Profa. Tiemi Christine Sakata
2
FACENS - Faculdade de Engenharia de Sorocaba
Chamadas do Sistema (System Calls)
Porta de entrada para ter acesso ao núcleo do
sistema operacional.
• Gerenciamento de Processos — fork, waitpid, exit
• Gerenciamento de Arquivos — open, close, read
• Gerenciamento de Diretórios – mkdir, link, mount
• Proteção — chmod
Enade - Sistemas Operacionais
Estrutura do Sistema Operacional
1 Monolı́tico
– um programa principal que invoca os serviços
– um conjunto de serviços para executar as
chamadas do sistema
– um conjunto de procedimentos para ajudar
as chamadas de serviços.
Main
procedure
Service
procedures
• Gerenciamento de Tempo — time(&second)
O usuário solicita um serviço do sistema operacional através
do uso das chamadas do sistema. Cada sistema operacional possui seu próprio conjunto de chamadas. Através dos parâmetros
fornecidos nas chamadas do sistema, a solicitação é processada
e uma resposta é retornada à aplicação.
Profa. Tiemi Christine Sakata
Utility
procedures
É a organização mais comum. O sistema operacional é escrito como uma coleção de procedimentos, cada um dos quais
pode chamar uns aos outros. O programa-objeto do sistema é
formado por vários procedimentos que são compilados separadamente e linkados, formando um grande e único executável.
3
FACENS - Faculdade de Engenharia de Sorocaba
Estrutura do Sistema Operacional
Enade - Sistemas Operacionais
Estrutura do Sistema Operacional
3 Máquinas Virtuais
2 Em Camadas
Camada
Função
5
Usuário
4
Programas de usuário
3
Gerenciamento de E/S
2
Comunicação operador-processo
1
Gerenciamento de memória
– cópias exatas do hardware básico
– executa qualquer sistema operacional
– mais simples, flexı́vel e fácil de manter
Virtual 370s
System calls here
I/O instructions here
Trap here
0
Alocação de processador e Multiprogramação
Um sistema em camadas divide o sistema operacional em camadas sobrepostas formando uma hierarquia. Cada módulo oferece um conjunto de funções que podem ser utilizadas por outros
módulos. Módulos em camadas podem fazer referência apenas a
módulos das camadas inferiores. A vantagem desta estrutura é
isolar as funções do sistema operacional.
Profa. Tiemi Christine Sakata
CMS
CMS
CMS
Trap here
VM/370
370 Bare hardware
Um sistema de tempo compartilhado oferece multiprogramação e uma máquina estendida com interface mais conveniente que o hardware básico. A essência das máquinas virtuais
é a separação dessas duas funções.
Assim, o coração do sistema, conhecido como monitor de
máquina virtual, executa no hardware básico e faz a multiprogramação, oferecendo não apenas uma, mas várias máquinas
virtuais à camada superior. Porém, ao contrário de todos os
outros sistemas operacionais, essas máquinas não são máquinas
estendidas com recursos amigáveis. Em vez disso, elas são cópias
exatas do hardware básico, incluindo o modo kernel/usuário, E/S,
interrupções, etc.
4
FACENS - Faculdade de Engenharia de Sorocaba
Estrutura do Sistema Operacional
Enade - Sistemas Operacionais
Processos
4 Modelo Cliente-Servidor
• programa – seqüência de instruções
– núcleo mais simples
• processo – abstração da execução do programa
– cliente solicita serviços ao servidor
– contexto do programa corrente (status de execução)
– diretório de trabalho do programa corrente
– comunicação — troca de mensagens
– arquivos e diretórios aos quais o programa tem acesso
Client
process
Client
process
Process
server
Terminal
server
File
server
Memory
server
User mode
Kernel mode
Kernel
Client obtains
service by
sending messages
to server processes
O sistema é dividido em processos, cada um responsável por
um serviço. O cliente pode ser uma aplicação de usuário ou um
outro componente do sistema operacional. A solicitação é feita
através de envio de uma mensagem ao servidor, que responde
através de uma outra mensagem.
A utilização deste modelo permite que os servidores executem
em modo usuário, ou seja, não tenham acesso direto ao hardware. Outra vantagem é que este modelo é facilmente adaptável
para uso de sistemas distribuı́dos.
Profa. Tiemi Christine Sakata
– direitos de acesso do programa corrente
– memória e outros recursos alocados ao processo
• sistema multiprogramado - pseudoparalelismo
Computadores modernos podem fazer várias coisas ao mesmo
tempo: executar um programa, ler dados do disco e imprimir dados na tela ou na impressora. Em sistemas multiprogramados,
a CPU também pode dividir seu tempo (na ordem de milisegundos) para diversos programas dando ao usuário a impressão de
paralelismo (pseudoparalelismo). Um processo é um programa
em execução e é a unidade básica de escalonamento do sistema
operacional. Um processo é um elemento ativo (altera o seu
estado à medida que executa o programa).
5
FACENS - Faculdade de Engenharia de Sorocaba
Enade - Sistemas Operacionais
Multiprogramação
Estados do Processo
One program counter
Executando
Four program counters
Process
switch
Process
A
B
C
A
B
C
D
D
C
1
B
A
D
(a)
Bloqueado
Time
(b)
3K
4
-
Pronto
(c)
1
Processo bloqueado para entrada
2
Gerenciador desativa um processo
(b) execução independente
3
Gerenciador ativa outro processo
(c) execução x tempo
4
Entrada se torna disponı́vel
(a) memória
Todo processo possui um contador de programa lógico que é
armazenado na memória. Apenas o contador do processo executado em um determinado instante é carregado no contador de
programa real. Podemos notar que em um intervalo todos os
processos progrediram, mas em um instante de tempo apenas
um processo está realmente sendo executado.
O tempo de execução de um processo pode variar de acordo
com a forma em que a CPU decide executar os processos. Os
processos que requerem tempo crı́tico necessitam tomar certas
medidas especiais para garantir uma resposta esperada.
Profa. Tiemi Christine Sakata
U2
A diferença entre o estado executando e pronto é que o estado executando está utilizando a CPU enquanto que no estado
pronto, não há temporariamente CPU disponı́vel para sua execução. Existem métodos para divir o uso da CPU para a execução
dos processos prontos. O estado bloqueado não será executado
mesmo com CPU disponı́vel.
6
FACENS - Faculdade de Engenharia de Sorocaba
Enade - Sistemas Operacionais
Escalonamento de Processos
Deadlock
• FCFS
• Job mais curto primeiro
• Menor tempo restante primeiro
• Round Robin
• Prioridade (múltiplas filas)
(a)
(b)
Cuidado com starvation
Quando um programa é multiprogramado, freqüentemente
possui vários processos competindo pela CPU ao mesmo tempo.
Isso ocorre quando dois ou mais processos estão prontos para
serem executados. O escalonamento de processos tem por objetivo instruir a CPU para executar os processos que foram inseridos
em uma fila de processos prontos. A parte do sistema operacional que faz a escolha de qual processo executar é chamado
de escalonador e o algoritmo usado é chamado de algoritmo de
escalonamento.
Deadlock - Condições necessárias
1. exclusão mútua: pelo menos um recurso deve
ser atribuı́do a um único processo por vez
2. posse e espera: deve haver um proc. que
possui um recurso e espera recursos adicionais
3. não-preempção: recursos não podem ser
retirados de forma forçada
4. espera circular: 2 ou mais processos, cada um
esperando pelo recurso em posse de outro proc.
Profa. Tiemi Christine Sakata
7
FACENS - Faculdade de Engenharia de Sorocaba
Gerência de Memória
• Memória – grande vetor de palavras (bytes),
cada um com seu próprio endereço
• Multiprogramação – compartilhamento de
memória
Enade - Sistemas Operacionais
Alocação de memória: partições fixas
Multiple
input queues
Partition 4
• Memória lógica
Partition 1
Operating
system
(a)
A memória fı́sica é aquela implementada pelos circuitos integrados de memória. O endereço fı́sico é o que vai para a memória
fı́sica, ou seja, usado para endereçar os circuitos integrados de
memória. O endereço lógico é o endereço gerado pela CPU.
A MMU é o componente de hardware que provê mecanismos
usados pelo SO para gerenciar a memória. A MMU mapeia os
endereços lógicos gerados pelos processos nos correspondentes
endereços fı́sicos.
Profa. Tiemi Christine Sakata
Partition 3
400K
Partition 2
Na multiprogramação é preciso manter vários processos prontos para execução na memória. A gerência de memória do SO
provê os mecanismos necessários para que os diversos processos
compartilhem a memória de forma segura e eficiente.
Single
input queue
Partition 3
• Memória fı́sica
• MMU (Memory Management Unit)
Partition 4
700K
Partition 2
Partition 1
100K
0
Operating
system
(b)
A memória principal é dividida em partições: uma para o sistema operacional e outra para os processos do usuário. Como
na multiprogramação existem vários processos na memória é
necessário encontrar maneiras de alocar os processos que estão
na fila de entrada esperando para serem carregados na memória.
Um dos métodos mais simples de alocação de memória é dividir a memória em partições de tamanhos fixos. Cada partição
pode conter apenas um processo e portanto o grau da multiprogramação está limitado pelo número de partições. Quando
um processo termina, a partição fica disponı́vel para outro processo da fila. A fila pode ser construı́da por partição (o processo
fica na fila da menor partição que ele pode ser alocado) e neste
caso pode existir partições sem nenhum processo e outras com
muitos processos na fila; ou uma fila única para todas as partições
onde um processo pequeno pode estar usando uma partição de
tamanho grande.
8
FACENS - Faculdade de Engenharia de Sorocaba
Alocação de memória: part. variáveis
Proc 1 - 174K
Proc 1 - 174K
Proc 2 - 98K
Proc 4 - 85K
Proc 3 - 23K
Livre - 13K
Livre - 80K
Proc 3 - 23K
SO
Livre - 80K
Proc 4 -85K
Enade - Sistemas Operacionais
Paginação
SO
Em geral, existe um conjunto de partições de memórias livres
de vários tamanhos. Quando um processo chega é feita uma
busca para encontrar uma partição grande o suficiente para o
processo. Se a partição é grande demais, ela será dividida em
dois e uma parte é devolvida para o conjunto de partições livres.
A paginação é um esquema que permite que o espaço de
endereçamento fı́sico de um processo seja não contı́guo. Esse
mecanismo elimina a fragmentação externa e reduz a fragmentação interna.
A memória fı́sica (sistema) e a memória lógica (processo) são
quebradas em blocos de tamanhos fixos e idênticos. Os blocos da
memória fı́sica são chamados de quadros (frames) e da memória
lógica de páginas. O tamanho desses blocos é definido pelo hardware.
Cada endereço gerado pela CPU (endereço lógico) é dividido
em duas partes: número de página (p) e deslocamento de página
(d). O número de página é usado como ı́ndice em uma tabela
de página.
Profa. Tiemi Christine Sakata
9
FACENS - Faculdade de Engenharia de Sorocaba
Enade - Sistemas Operacionais
Memória Virtual
Segmentação com compactação
sistema
operacional
3
Segment 4
(7K)
Segment 3
(8K)
Segment 4
(7K)
Segment 3
(8K)
(3K)
(3K)
Segment 5
(4K)
Segment 5
(4K)
Segment 3
(8K)
(10K)
2
(4K)
Segment 6
(4K)
Segment 5
(4K)
Segment 6
(4K)
Segment 2
(5K)
Segment 2
(5K)
Segment 2
(5K)
(3K)
(3K)
(3K)
Segment 2
(5K)
Segment 7
(5K)
Segment 7
(5K)
Segment 7
(5K)
Segment 7
(5K)
Segment 0
(4K)
Segment 0
(4K)
Segment 0
(4K)
Segment 0
(4K)
Segment 0
(4K)
(a)
(b)
(c)
(d)
(e)
Segment 2
(5K)
Segment 1
(8K)
4
1
carregar
M
6
i
5
quadro
livre
mem.
física
Pode-se utilizar o esquema de bit válido/inválido para determinar se uma página está na memória ou não. Se o bit é válido,
então a página é legal e está na memória. Se o bit for inválido, a
página não é válida ou é válida mas no momento está no disco.
Um procedimento simples para tratar a falta de página é descrita
a seguir:
A segmentação pode causar fragmentação externa já que o
tamanho dos segmentos é variável. Neste caso, o processo pode
simplesmente ter que esperar até que mais memória se torne
disponı́vel, ou a compactação pode ser usada para criar um bloco
de memória livre maior.
1. verificação da tabela para determinar se a referência é válida
ou inválida.
2. se a referência é inválida, o processo é terminado. Se é
válida mas não está na memória, a página deve ser carregada
3. procura de um quadro livre
4. escalonamento de uma operação de disco para ler a página
desejada no quadro recém alocado
5. a tabela é modificada indicando que a página está na
memória
6. reiniciar a instrução que foi interrompida pela exceção de
endereço ilegal.
Profa. Tiemi Christine Sakata
10
FACENS - Faculdade de Engenharia de Sorocaba
Enade - Sistemas Operacionais
Sistema de Arquivos
Alocação de blocos
Root directory
User
directory
A
A
B
B
B
• alocação contı́ua
C
B
C
• Lista ligada de blocos
C
• File Allocation Table (FAT)
B
C
C
• I-node
User subdirectories
C
C
C
C
User file
A solução para armazenar a informação em discos é criar arquivos. A informação deve ser persistente, ou seja, um arquivo
desaparecerá quando for removida explicitamente. O sistema de
arquivos (parte do SO) é responsável pelo modo como arquivos
são estruturados, nomeados, acessados, usados, protegidos e implementados.
A capacidade dos usuários criar um número arbitrário de subdiretórios propicia uma ferramenta poderosa de estruturação para
organizar seu trabalho. Quase todos os modernos sistemas de arquivos são organizados assim.
Profa. Tiemi Christine Sakata
O esquema mais simples de alocação é armazenar cada arquivo
em blocos contı́guos de disco. O disco é dividido em blocos de
mesmo tamanho. Se um arquivo ocupa um bloco e meio, a outra
metade do bloco é desperdiçada. Vantagens: simples de implementar e bom desempenho de leitura. Desvantagem: os arquivos
não podem crescer e há fragmentação do disco.
Os arquivos podem ser mantidos como uma lista encadeada
de blocos de disco. A primeira palavra de cada bloco é usada
como ponteiro para um próximo. O restante do bloco é usado
para dados. Neste método não há fragmentação externa e para
manter uma entrada de diretório é suficiente armazenar apenas
o endereço em disco do primeiro bloco. Por outro lado, o acesso
aleatório é extremamente lento, pois para chegar ao bloco n de
um arquivo, o SO, a partir do inı́cio, deve ler os n − 1 blocos
antes dele.
Tabela de ı́ndice na memória – usando essa organização todo
bloco fica disponı́vel para dados e o acesso aleatório se torna mais
fácil. Para encontrar um bloco de um arquivo, é necessário percorrer o encadeamento, porém, como a tabela está na memória,
a localização do bloco pode ser feita rapidamente. A principal
desvantagem deste método é que a tabela deve estar na memória
o tempo todo. A tabela pode ser alocada em memória paginada,
mas mesmo assim, ocuparia muito espaço de memória virtual e
de espaço em disco gerando tráfego extra de paginação.
O i-node é uma estrutura de dados associado a cada arquivo
que relaciona os atributos e os endereços em disco dos blocos de
arquivo. Dado o i-node, é possı́vel encontrar todos os blocos do
arquivo. A grande vantagem desse esquema é que o i-node só
precisa estar na memória quando o arquivo estiver aberto.
11
FACENS - Faculdade de Engenharia de Sorocaba
Entrada/Saı́da
Enade - Sistemas Operacionais
Acesso Direto à Memória (DMA)
• emitir comandos para os dispositivos
• interceptar interrupções e tratar erros
Drive
CPU
1. CPU
programs
the DMA
controller
• fornecer interface entre os dispositivos e o
restante do sistema
• interfaces padronizadas x variedade de
dispositivos
Uma das principais funções de um computador é solucionar
problemas. Para tanto, é necessário que algum tipo de mecanismo exista para que possamos informar esse problema ao computador e recuperar sua solução. Esse mecanismo constitui o
que denominamos de dispositivos de entrada e saı́da (E/S) de
um computador. Alguns desses dispositivos são para a comunicação do homem com o computador (teclado, mouse, monitor
de vı́deo, etc.), outros são para a comunicação entre computadores (modem, placa de rede, etc.) e temos também os dispositivos para armazenar informações (disquetes, fita, disco rı́gido,
CD-ROM, etc.). A tecnologia de E/S apresenta duas tendências
conflitantes. Por um lado, há uma crescente padronização de
interfaces de software e hardware. Por outro lado, há uma variedade cada vez maior de dispositivos de E/S.
Profa. Tiemi Christine Sakata
DMA
controller
Main
memory
Disk
controller
Buffer
Address
Count
Control
Interrupt when
done
4. Ack
2. DMA requests
transfer to memory
3. Data transferred
Bus
Para um dispositivo que realiza grandes transferências de dados (disco) parece desperdı́cio usar um processador caro de uso
geral para fornecer ao registrador do controlador, 1 byte de cada
vez. Muitos computadores passam parte desse trabalho para
um processador especial chamado controlador de acesso direto
(DMA). O DMA deve pode acessar diretamente a memória e está
conectado fisicamente ao barramento de dados e de endereços do
computador.
Para começar uma transferência DMA, a CPU programa o
controlador de DMA inserindo valores em seus registradores. O
DMA inicia a transferência emitindo pelo barramento uma requisição de leitura para o controlador de disco. Normalmente o
endereço de memória para onde escrever está nas linhas do barramento. Quando a escrita está completa, o controlador de disco
envia um sinal de confirmação para o DMA.
12
FACENS - Faculdade de Engenharia de Sorocaba
Enade - Sistemas Operacionais
O que foi visto
Camadas do Sistema E/S
• História dos Sistemas Operacionais
Layer
I/O
request
User processes
I/O
reply
I/O functions
• Processos
Make I/O call; format I/O; spooling
Naming, protection, blocking, buffering, allocation
• Deadlock
Device drivers
Set up device registers; check status
• Gerência de Memória – memória virtual
Interrupt handlers
Wake up driver when I/O completed
Device-independent
software
Hardware
Perform I/O operation
O software de E/S é normalmente organizado em quatro camadas. Cada camada tem sua função bem definida para executar
e uma interface também bem definida para as camadas adjacentes. A funcionalidade e as interfaces diferem de um sistema
para outro.
Quando, por exemplo, o programa do usuário tenta ler um
bloco de um arquivo, o SO é requisitado para realizar a chamada.
O software independente de dispositivo procura pelo bloco na
cache do buffer. Se o bloco requisitado não está lá, ele chama o
driver do dispositivo para emitir uma requisição a fim de que o
hardware o obtenha do disco. Quando o disco termina, o hardware gera uma interrupção. O tratador de interrupção é executado para descobrir o que aconteceu, isto é, qual dispositivo está
requerendo atenção naquele momento. Ele então obtém o status do dispositivo e acorda o processo que estava dormindo para
finalizar a requisição de E/S.
Profa. Tiemi Christine Sakata
• Sistema de Arquivos
• Gerência de E/S
Referências
Andrew S. Tanenbaum. Modern Operating Systems. Prentice Hall. 2001 Segunda edição
Abraham Silberschatz, Peter Galvin e Greg Gagne. Sistemas
Operacionais. Editora Campus, 2000
13
Download