RolaDeBoi

2305 palavras 10 páginas
Universidade Federal da Paraíba
Centro de Informática
Linguagem de Programação II

Prof. Bruno Jefferson bruno@ci.ufpb.br @2014, Bruno Jefferson

Roteiro
Introdução
Sintaxe e Semântica
Problemas Clássicos
Ń
Ń
Ń
Ń
Ń

Seções Críticas
Produtores e Consumidores
Buffers limitados
Jantar dos Filósofos
Leitores e Escritores

@2014, Bruno Jefferson

Introdução
Algoritmos que utilizam o mecanismo de espera ocupada são ineficientes na maioria dos programas concorrentes.
Semáforos foram a primeira ferramenta para prover sincronização entre processos e é considerada uma das mais importantes. Incluídos em todas as bibliotecas voltadas à programação concorrente.
@2014, Bruno Jefferson

Introdução
Podem ser implementados através de técnicas de espera ocupada ou via funcionalidades oferecidas pelos sistemas operacionais. Sua criação foi motivada pela maneira como o tráfego em uma ferrovia é sincronizado para evitar colisões.
São utilizados para implementar exclusão mútua e sincronização condicional.
@2014, Bruno Jefferson

Sintaxe e Semântica
Semáforo é um tipo especial de variável compartilhada que é manipulada por duas operações atômicas. São elas:
P(s) e V(s)

O valor de um semáforo é um inteiro não-negativo. Sua inicialização se assemelha com a inicialização de uma variável inteira. sem lock = 1;
@2014, Bruno Jefferson

Sintaxe e Semântica
Considerando que s é um semáforo, as operações P(s) e V(s) são definidas como segue: P(s): 0) s = s – 1;>
V(s):

@2014, Bruno Jefferson

Sintaxe e Semântica
Um semáforo genérico é aquele que pode conter qualquer valor não-negativo.
Semáforo binário apenas pode armazenar os valores 0(zero) e 1(um.)
Os processos são despertados na mesma ordem em que são retardados quando executam a operação P(s).
@2014, Bruno Jefferson

Problemas Clássicos
Semáforos têm suporte direto para a implementação de exclusão mútua e de sincronização condicional.
Alguns

Relacionados