Please enable JavaScript.
Coggle requires JavaScript to display documents.
Sincronismo de Processos e Threads - Coggle Diagram
Sincronismo de Processos e Threads
Antecedentes
Problema do Produtor/Consumidor
Um produtor produz algo que o consumidor usará
É preciso sincronismo para consumir apenas o que está no buffer
Buffer
Região compartilhada de memória
Condição de Corrida
Vários processos tentam acessar/manipular dados ao mesmo tempo, podendo alterar o resultado dependendo da ordem
Problema da Seção Crítica
Seção Crítica
Um segmento que pode alterar dados compartilhados com outros processos/threads
Consistência de Dados
Só pode ser garantida se apenas um processo por vez entrar na SC
Boa solução
Exclusão Mútua
Sempre um processo por vez na SC
Progresso
Somente processos que não estiverem execuntando suas seções remanescentes podem entrar na SC
Espera limitada
Limite para o número de vezes que um processo pode entrar na SC
Protocolo
Seção de entrada
Seção que solicita a entrada na seção crítica
Seção de saída
Pode vir após a seção crítica
Seção remanescente
O código restante
Soluções para o Problema da SC
Soluções de Hardware
Inibição de Interrupções
Desativa todas as interrupções ao entrar na SC, e ativa ao sair
Instrução TSL
O processador que executa a TSL bloqueia o barramento de memória, impedindo que outras CPUs acessem a MP até que a instrução tenha terminado
Soluções de Software com Bloqueio
Sleep/Wakeup
A ideia desta abordagem é bloquear a execução dos processos quando a eles não é permitido entrar em suas regiões críticas
Semáforos
Ferramenta de sincronismo sem busy wait, modificado por duas operações padrões. Pode gerar problemas por erros de programação
Monitores
um bloco que contém internamente dados para serem compartilhados e procedimentos para manipular esses dados
Soluções de Software com Busy Wait
Algoritmo de Peterson
Ao marcar a sua intenção de entrar, o processo já indica (para o caso de empate) que a vez é do outro
Busy wheigt
Espera ocupada, por exemplo, ficar perguntando toda hora se já chegou em algum lugar, até chegar
Problemas Clássicos de Sincronismo
Leitores e Escritores
Um escritor só escreve se não houver nenhum
leitor lendo ou escritor escrevendo
Filósofos Glutões
Quando um filósofo fica com fome ele pega os dois pauzinhos mais próximos, um de cada vez, e come até ficar saciado. Quando acaba de comer, ele repousa os pauzinhos e volta a pensar