2. ◤
Condições de Corrida
Condições onde 2 ou mais processos estão processando
informações compartilhadas e o seus resultados dependem de
quem os executa e quando isso vai ocorrer. Para evitar erros,
devemos ter atenção no paralelismo, que devido ao aumento de
núcleos, se torna mais comum.
3. ◤
Regiões críticas
É onde parte da memória que não pode ser alcançada por linhas de execução,
é acessada. Se 4 parâmetros forem cumpridos ela evita as condições de
corrida, são eles:
▪ Dois processos jamais podem ser simultâneos na mesma região;
▪ Sem suposições sobre o número ou a velocidade das CPUs;
▪ Processos fora de sua região não bloqueiam outros processos;
▪ Processos não são obrigado a esperar eternamente para entrar na região
crítica;
4. ◤
Exclusão Mutua com espera ocupada
Pode ser feita de várias maneiras, uma delas são tirando a
habilidade de interrupções tipo de variáveis trava, a solução de
Peterson e a de TSl. Entretanto a exclusão feita com espera
ocupada não é tão eficiente e alguns processos que não utilizam
corretamente suas variáveis podem corromper todo o sistema.
5. ◤
Dormir e Acordar
▪ Funcionam em pares;
▪ Sem problemas com tempo de espera;
▪ Resultados esperados;
6. ◤
Dormir e Acordar
▪ Sleep: é uma chamada que bloqueia o processo chamado;
▪ Wakeup: é a chamada que acorda o processo;
7. ◤
Semáforos
▪ Primeira vez utilizado foi em algo 68;
▪ Bom para problemas de sincronicidade;
▪ Evita problemas de corrida;
8. ◤
Semáforo
▪ Possui duas operações Up e Down;
▪ Resolve problemas utilizando sinais salvo para usar no futuro;
9. ◤
Mutexes
▪ bons para gerenciar a exclusão mútua;
▪ o fáceis e eficientes de implementar;
11. ◤
Monitores
▪ Down e Wake Up
▪ Down verifica se o valor é maior do que zero, se for ele retira
um valor, gastando um acordar (wake up) armazenado. Se o
valor for zero, o processo é colocado para dormir sem terminar
o download até o momento.
12. ◤
Variáveis de Condição
▪ Usadas em conjunto com wait e signal.
▪ Permite também que outros processos, antes bloqueados,
entrem no monitor.
▪ Para evitar dois processos ativos simultaneamente,
necessitamos de uma regra dizendo que ocorre apos o signal.
▪ Hansen teve a sacada de mestre…
13. ◤
Troca de mensagens
▪ Esse método de comunicação entre processos usa duas
primitivas, send e receive, que, como semáforos e
diferentemente dos monitores, são chamadas de sistema em
vez de construções de linguagem.
▪ Mensagem especial de confirmação de recebimento de volta
▪ Retransmissão sequência consecutiva em cada mensagem
original.
14. ◤
Problema do produtor consumidor com a
troca de mensagens
▪ Buffer Automático
▪ Endereço único
▪ Caixas postais
▪ Rendezvous