6/3
Apresentação do Curso
11/3
Introdução: histórico de sistemas operacionais
Estrutura de Sistemas Operacionais
- componentes
- serviços
- chamadas ao sistema
- implementação: interrupções de software
- estrutura do sistema
referência: Silberschatz, Cap. 1, 3.1, 3.2, 3.3, 3,4 e 3.5
13/3
Processos
- o modelo de processos
- contexto: contador de programa, registradores, pilha, etc
- multiprogramação e troca de contexto
- estados e transições
Criação de novos processos
- a primitiva fork do Unix (e minix)
- hierarquias de processos
referência: Silberschatz, 4.1, 4.2, 4.3
18/3
Processos
Criação de novos processos (revisão)
Comunicação entre Processos
Mecanismos de Troca de Mensagens
- como designar o destinatário?
- uso de identificadores
- uso de caizas postais
- comunicação síncrona e assíncrona
- bufferização
Exemplo no Unix: pipes
referência: Silberschatz, 4.5, e Stevens
, 3.4, para pipes.
25/3
pipes (continuação)
- comunicação de baixo nível através de sequência de bytes
- necessidade de um protocolo de comunicação
Threads
Motivação
- compartilhamento de globais
- mais eficiência na criação de novas linhas de controle
Implementações
- por biblioteca - muitos para um
- no kernel - um para um
- soluções intermediárias - muitos para poucos
threads e processos
- como fica fork em processo com várias threads?
- como fica o tratamento de sinais?
referência: Silberschatz, 5.1, 5.2, 5.3, 5.4, 5.5.
27/3
Escalonamento de Processos
Conceitos Básicos
- processos I/O-bound e CPU-bound
- dispatcher
- preempção
Critérios (métricas) para o Escalonamento
- utilização de CPU
- throughput
- tempo de retorno
- tempo de resposta
Algoritmos de Escalonamento
- FCFS
- não preemptivo
- simples
- adequado a sistemas batch
- escalonamento por rodízio (round-robin)
- preempção por fatia de tempo
- escalonamento por prioridades
- estáticas
- dinâmicas
- prioridade dinâmica pode ser computada com base em comportamento
pregresso do processo
- caso especial: algoritmo SJF: prioridade calculada de acordo
com previsão do tempo de CPU que será usado pelo processo
quando tiver acesso à CPU
- escalonamento por prioridades pode ser com ou sem preempção
- com preempção: com ou sem fatia de tempo
- uso de várias filas, uma por prioridade
- realimentação e realocação nas diversas filas
referência: Silberschatz, 6.1, 6.2, 6.3.
1/4
Escalonamento de Processos (cont.)
Escalonamento com múltiplos processadores
Escalonamento de Tempo Real
- hard real time
- soft real time
- reserva de recursos e garantias de atendimento
Escalonamento no Solaris
- threads de tempo real, de serviço, e de LWPs comuns
referência: Silberschatz, 6.4, 6.5, 6.6.
3/4
Sincronização entre Processos
- Programas em que processos (threads) cooperam entre si através de memória
compartilhada podem chegar a estados inconsistentes
dependendo da ordem em que instruções dos diversos
processos forem executadas;
- problema da região crítica
- outros tipos de sincronização também são necessários
Exclusão Mútua
Uma solução de exclusão mútua deve ter as propriedades:
- garantia de exclusão mútua
- ausência de esperas desnecessárias
- ausência de esperas ilimitadas (starvation)
- ausência de deadlocks
Soluções baseadas apenas em variáveis compartilhadas
- complicadíssimas de entender!
- baseadas em espera ocupada
referência: Silberschatz, 7.1, 7.2, 7.4.
8/4
Descrição do Trabalho 1
Semáforos
Podemos definir um semáforo como um objeto com
valor inteiro sobre o qual três operações são
definidas:
- A operação inicia atribui um valor não negativo ao semáforo;
- A operação P (ou wait) decrementa o valor inteiro.
Caso o valor se torne negativo, o processo que está executando
P se torna bloqueado;
- A operação V (ou post) incrementa o valor
inteiro; caso o resultado seja não positivo, um dos processos
bloqueados em P é desbloqueado (se torna pronto).
referência: Silberschatz, 7.5.1, 7.5.2.
10/4
Uso de semáforos
- exemplo da região crítica (exclusão mútua)
- exemplo do buffer limitado (sinalização e exclusão mútua)
- limitadíssimo (1 posição)
- limitado (buffer de MAX posições)
- problema dos filósofos
referência: Silberschatz, 7.6.1, 7.6.3.
15/4
Monitores
- exclusão mútua automatica com chamada de rotinas do monitor
- sinalização de condição com variáveis de condição
- wait(cond) - sempre bloqueia o processo corrente, e libera
a exclusão mútua
- signal(cond) - retira o primeiro processo
(se houver) da fila de cond
- diferentes políticas de sinalização
- vamos assumir signal como dica: o processo
retirado da fila da variável de condição volta para
a fila da exclusão mútua
Usos de Monitores
- Buffer limitado
- outros
referência: Silberschatz, 7.7.
24/4
Usos de Monitores (cont)
- o problema de leitores e escritores
referência: Silberschatz, 7.6.2, 7.8.3.
29/04
Prova 1
6/5
Deadlocks
referência: Silberschatz, Cap. 8.
8/5
Gerência de Memória
Mapeamento de endereços lógicos a físicos
pode ser feita:
- em tempo de compilação/ligação
- em tempo de carga
- em tempo de execução
- CPU "enxerga" endereços lógicos e memória recebe
requisições de endereços físicos
- exige suporte do hardware!
- unidade de gerência de memória
- exemplo: registrador de relocação
Overlays
Swapping
Espaço de endereçamento de processos "swapped out"
da memória principal para disco para possibilitar
a carga de outro processo.
- processo tem que ser "swapped in" do disco para
memória principal antes de voltar a executar
- tempo de swap é alto
- inviável fazer swap a cada mudança de contexto
referência: Silberschatz, 9.1, 9.2.
13/5
Gerência de Memória
Alocação Contígua de Memória
Paginação
- tradução de endereços por hardware
- tabelas de páginas
- suporte
- localização das tabelas
- bits de proteção
- paginação multinível
referência: Silberschatz, 9.3, 9.4.1, 9.4.2, 9.4.3.
15/5
Gerência de Memória
Paginação
Segmentação
- modelo básico
- segmentação com paginação
referência: Silberschatz, 9.4.5, 9.5.
Memória Virtual
20/05
Gerência de Memória
Memória Virtual
referência: Silberschatz, 10.1, 10.2.
22/05
Gerência de Memória
Memória Virtual
referência: Silberschatz, 10.3.
27/05
Memória Virtual
referência: Silberschatz, 10.4, 10.5.
29/05
3/06
entrega do trabalho 1
5/06
Sistemas de Arquivos
- visão do usuário, sistema de arquivos e interpretadores de comandos
- operações típicas sobre arquivos - chamadas de sistemas
- atributos de arquivos
- tipo e estruturas internas
- estrutura de diretórios
- proteção
referência: Silberschatz, 11.1, 11.2, 11.3, 11.4.1, 11.4.2.
10/06
Sistemas de Arquivos (cont)
Estrutura Interna do Sistema
- organização de sistemas de arquivos
- montagem de sistemas
- gerência de blocos alocados
- gerência de blocos livre
referência: Silberschatz, 11.5, 11.6.1, 11.6.2, 11.6.3, 11.7.
12/06
- não houve aula (por falta de alunos...)
17/06
24/06
Exemplo de Sistema de Arquivos: UNIX
- uso de i-nodes
- diretórios e links
- cópia do i-node em memória
- uso de caminhos na abertura de arquivos
- área-u e descritores de arquivos
- redireção de entrada e saída
- superbloco
- gerência dos blocos livres
- gerência de i-nodes livre
referência: Silberschatz, 20.7.