A Programação Concorrente
Por: Jailson Nogueira • 7/4/2017 • Trabalho acadêmico • 252 Palavras (2 Páginas) • 193 Visualizações
[pic 1]
FACULDADE ANHANGUERA DE RIBEIRÃO PRETO
TRABALHO BIMESTRAL – PROGRAMAÇÃO CONCORRENTE
NOME: JAILSON MARCOS NOGUEIRA JUNIOR
RA: 8873426442
CIÊNCIA DA COMPUTAÇÃO
PROBLEMA DO BARBEIRO PREGUIÇOSO
No cenário proposto, temos as seguintes especificações:
Barbearia é a área crítica.
Barbeiro representa o semáforo.
Clientes são os processos.
Recurso compartilhado é a cadeira da barbearia.
Cadeiras da sala de espera é o sistema operacional.
Quando não há nenhum cliente (processo) para ser atendido (processado), o barbeiro (semáforo) executa a operação sleep (dorme), ou seja, fica aguardando o próximo processo (cliente) que utilizará o recurso compartilhado (cadeira) da área crítica (barbearia). Ao chegar um cliente (processo), o barbeiro (semáforo) utiliza as variáveis primitivas (P e V) decrementando seu valor (S = S - 1), ocupando (bloqueando) desta forma a cadeira (recurso compartilhado).
Quando chega outro cliente (processo) antes da finalização do que está em execução, ele chama o barbeiro (semáforo) com a operação (S = S – 1), porém ele ainda está ocupado, portanto o barbeiro retorna um sinal de espera (busy waiting). Desta forma, o cliente (processo) é colocado (escalonado) para uma cadeira da sala de espera (S.O.). Isso acontece para todos os clientes (processos) que chegarão enquanto a cadeira (recurso compartilhado) estiver ocupada.
Quando o cliente termina, ele sai da (S = S + 1) e o barbeiro avisa o próximo que a cadeira (recurso compartilhado) está livre.
Esse processo ocorre até que não haja mais nenhum cliente (processo) aguardando liberação da cadeira (recurso compartilhado).
Quando acabam-se os clientes (processos), o barbeiro volta ao estado inicial de espera (sleep).
Em seguida veremos o exemplo de um código de semáforo implementado para Arduíno:
[pic 2]
...