Roteiro de Aulas - Sistemas Operacionais

3/3

Apresentação do Curso

5/3

Processos

Criação de novos processos

referência: Tanenbaum, 2.1, 2.1.1, 2.1.2

10/3

Processos (cont)

Criação de novos processos (cont.)

Threads

Inconsistências causadas por memória compartilhada

referência: Tanenbaum, 2.1.3

12/3

Comunicação entre Processos

Troca de Mensagens

Primitivas Típicas para Troca de Mensagens

Primitivas de comunicação no Unix

Pipes
Sinais

referência: Tanenbaum, 2.2.7, Stevens, 3.4, 2.4.

17/3

=> apresentação do primeiro trabalho

Comunicação entre Processos - Memória Compartilhada

Necessidade de Sincronização

Soluções Clássicas de Sincronização - sem bloqueio

  1. desabilitação de interrupções
  2. uso de uma variável lock
  3. alternância estrita
  4. Peterson

Semáforos

referência: Tanenbaum, 2.2.1, 2.2.2, 2.2.3, 2.2.5.

19/3

Comunicação entre Processos - Memória Compartilhada (cont.)

Semáforos

referência: Tanenbaum, 2.2.5.

24/3

Comunicação entre Processos - Memória Compartilhada (cont.)

Semáforos (cont) - Solução de Problemas Clássicos

Problema dos Filósofos

Cinco filósofos estão sentados em torno de uma mesa redonda. Entre cada dois filósofos há um garfo. Cada filósofo repetidamente passa um período pensando e depois um período comendo. Para comer, o filósofo precisa dos dois garfos a seu lado. Como modelar a solução desse problema com semáforos?

void filosofo(i) {
while(TRUE) {
pensa();
requisita_garfos(i);
come();
libera_garfos(i);
}
}

void requisita_garfos(int i) {         void libera_garfos(int i) {
P(menor_garfo(i);                      V(maior_garfo(i);
P(maior_garfo(i);                      V(menor_garfo(i);
}                                      }

Outra forma de entender a solução é ordenar os recursos utilizados e exigir que cada processo demande os recursos em ordem crescente!

Problema dos Leitores e Escritores

Suponha que existe uma base de dados à qual são feitos acessos de leitura, por processos leitores, e acessos de escrita, por processos escritores. Para evitar inconsistências, quando um escritor está acessando a base de dados nenhum outro processo deve acessá-la. Vários leitores podem fazer acessos simultâneos sem problemas. Como modelar a solução deste problema com semáforos?

solução no livro!

atenção: Essa solução pode resultar em starvation de escritores. Como ela pode ser alterada para refletir uma política mais justa, que evite este problema? Fazer os exercícios 35 e 36 do livro texto.

Monitores

Um monitor é uma construção de linguagem de programação que encapsula dados e rotinas. Cada uma destas rotinas é garantidamente executada com exclusão mútua, ou seja, em um instante qualquer, apenas um processo pode estar em execução (ou pronto) em um ponto de código interno ao monitor.

Um monitor facilita a implementação de exclusão mútua. Ainda é necessário algum outro mecanismo para sincronização de processos, isto é, um mecanismo que permita que um processo de bloqueie a espera de determinada condição. Esse mecanismo é provido por variáveis de condição, sobre as quais podem ser executadas as operações wait(vc) e signal(vc). Essas operações são parecidas com P e V, com a diferença de que não existe o conceito de contador, isto é, caso ocorra um signal(v) e não haja nenhum processo na fila da variável de condição, o signal se perde.

referência: Tanenbaum, 2.2.6, 2.3.1, 2.3.2.

26/3

Comunicação entre Processos

Equivalência entre comunicação por troca de mensagens e por memória compartilhada

Escalonamento de Processos

Algoritmos de Escalonamento

  1. Round-Robin
  2. Prioridades

referência: Tanenbaum, 2.4, 2.4.1, 2.4.2, 2.4.3

31/3

Escalonamento de Processos (cont.)

Sistemas de Tempo Real

Mecanismos incorporados em versões mais recentes do Unix

referência: Tanenbaum, 2.4.7, UNIX Internals, 5.5, 5.6.

2/04

ATENÇÃO: Modificações na entrega do trabalho!

Escalonamento de Processos (cont.)

Escalonamento em 2 níveis

Muitas vezes, os sistemas operacionais utilizam um mecanismo de swapping, que move processos entre disco e memória principal, para criar a ilusão de que um número maior de processos pode ser carregado na memória principal do que realmente é o caso. Neste caso, o escalonamento normal ocorre apenas entre os processos carregados na memória principal. O processo responsável pelo swapping tipicamente entra em ação de tempos em tempos, e age como um segundo escalonador, decidindo que processos serão colocados e retirados na memória principal.

Deadlocks

Condições para ocorrência de deadlock

Grafo de Alocação de Recursos

Formas de Tratamento

Algoritmo da Avestruz

Prevenção Estrutural

A idéia é negar uma das quatro condições necessárias para ocorrência do deadlock!

  1. negação da exclusão mútua
  2. negação do hold and wait
  3. negação da espera circular
  4. negação da não preempção

Prevenção Dinâmica

referência: Tanenbaum, 3.3.

7/04

Transações Atômicas

propriedades:

Atomicidade

Serialização

Nada se pode afirmar sobre a ordem em que duas transações concorrentes serão executadas, mas o efeito das transações deve ser coerente com a término completo de cada transação antes do início da próxima.

Formas de garantir a serialização
  1. uso de locks
  2. controle otimista - uso de timestamps

    referência: Silberschatz, 6.9.

    14/04

    Gerência de Memória

    amarração de endereços

    endereços físicos e endereços lógicos ou virtuais

    Swapping

    Controle de Espaço Livre

    Paginação

    referência: Tanenbaum, 4.1, 4.2, 4.3.1.

    16/04

    Gerência de Memória (cont.)

    Paginação

    Segmentação

    Memória virtual

    referência: Tanenbaum, 4.3.2, 4.3.3, 4.3.4.

    23/04

    => apresentação do segundo trabalho

    Gerência de Memória (cont.)

    Memória Virtual (cont.)

    Algoritmos de Substituição de Páginas

    Conjunto de Trabalho de um Processo

    referência: Tanenbaum, 4.4, 4.5.1.

    28/04

    Gerência de Memória (cont.)

    Exemplo: memória virtual no Unix System V

    30/04

    Prova 1

    5/05 e 7/05

    12/05

    Threads

    14/05

    Criptografia e Proteção

    19/05

    Sistemas de Arquivos

    Introdução

    Visão do Usuário (programador)

    referência: Tanenbaum, 5.1, 5.2.1, 5.2.3.

    21/05

    Sistemas de Arquivos (cont.)

    Implementação

    referência: Tanenbaum, 5.3.1, 5.3.2, 5.3.3, 5.3.4 (só file system consistency).

    26/05

    Sistemas de Arquivos (cont.)

    Desempenho

    Segurança

    Introdução
    Autenticação de Usuários
    1. autenticação física
    2. senhas
      • dificuldades de geração de boas senhas
      • armazenamento de senhas
    Princípios de Segurança
    Esquemas de proteção de arquivos
    1. listas de acesso
    2. capabilities

    referência: Tanenbaum, 5.3.5, 5.4.1, 5.4.4, 5.4.5, 5.5.

    28/05

    não houve aula

    2/06

    apresentação de trabalhos

    4/06

    Sistema de Arquivos do Minix: visão geral da implementação

    Organização de um sistema de arquivos minix

    O cache de blocos

    Montagem de diretórios

    Descritores de arquivos

    referência: Tanenbaum, 5.6.2, 5.6.3, 5.6.4, 5.6.5, 5.6.6, 5.6.7.

    9/06

    exercícios sobre sincronização

    16/06

    exercícios sobre sincronização

    18/06

    exercícios sobre sincronização

    23/06

    exercícios sobre deadlock e segurança

    25/06

    apresentação de trabalhos

    30/06

    dúvidas (sala 408)

    2/07

    prova: capítulos 2 e 5

    Last update: Tue Jun 30 10:30:27 EST 1998 by Noemi