Please enable JavaScript.
Coggle requires JavaScript to display documents.
Sincronismo de Processos e Threads - Coggle Diagram
Sincronismo de Processos e Threads
O problema
Processo cooperativo
Afetam ou são afetados por outros processos em execução no sistema
Compartilham código e dados
Acesso concorrente ou paralelo a dados partilhados
Inconsistência de dados
Produtor/Consumidor
Situação problema
Processo produtor gera informações (servidor web a fornecer páginas HTML)
Processo consumidor lê/consome
Ambos utilizam buffer (tamanho limitado)
Produtor deposita itens e o consumidor retira-os
Acompanha um contador de itens cheios
Falha
Separadamente, rotinas do produtor e consumidor funcionam
Quando executadas de forma concorrente...
count++e count-- intercaladas deixam de funcionar corretamente
Condição de Corrida
Vários processos acedem e manipulam os mesmos dados de forma concorrente
Resultado da execução depende da ordem em que os acessos ocorrem
Seção crítica
Parte do código que altera dados comuns partilhados em vários processos ou threads
Consistência dos dados
Um processo de cada vez nessa parte do código
Projetar um protocolo de cooperação
Estrutura
Secção de entrada
Solicitar permissão
Secção crítica
Dados são manipulados
Secção de saída
Sinaliza a saída da secção crítica
Secção remanescente
Resto do código
Para uma boa solução...
Exclusão Mútua
Apenas um processo executa sua RC por vez
Progresso
Se 0 processos na RC, mas tenha quem queira estar...
Só participa da escolha de entrar quem não está na seção remanscente
Espera Limitada
Existe limite máx. de vezes que processos entram na RC após outro ter feito pedido
Evitar starvation
Kernel
Com preempção
Processo pode ser interrompido enquanto executa em modo de kernel
Melhor capacidade de resposta
Ideal para sistemas de tempo real
Difíceis de projetar em SMP
Sem preempção
Processo em modo de kernel não pode ser interrompido a força
Sem vantagens de tempo de resposta
Livres de condições de corrida
Gerencia estruturas de dados vitais sujeitas a condições de corrida
Problemas Clássicos de Sincronismo
Leitores e Escritores
Leitores possuem acesso simultâneo permitido
Escritores possuem acesso exclusivo obrigatório
Risco de starvation de escritores caso leitores tiverem prioridade contínua
Filósofos Glutões
N filósofos alternam entre pensar e comer numa mesa redonda
Cada um precisa de dois pauzinhos (esquerdo e direito) para comer
Utiliza estados (THINKING, HUNGRY, EATING) e semáforos
Evita que vizinhos comam em simultâneo
Previne deadlocks