Please enable JavaScript.
Coggle requires JavaScript to display documents.
Sincronismo de Processos e Threads - Coggle Diagram
Sincronismo de Processos e Threads
O Problema da Seção Crítica
Um segmento de código que pode alterar dados comuns
Requisitos para uma
boa solução
Progresso
Espera limitada
Exclusão Mútua
Arbodagens para manipular
seções críticas
Kernels sem preempção
processo não é interceptado enquanto executa em modalidade de kernel
Vantagens
Livre de condições de corrida!
Desvantagens
Não tem as vantagens de um kernel com preempção
Kernels com preempção
O Processo pode ser interceptado enquanto está sendo executado em kernel
Vantagens
Melhor capacidade de resposta
mais apropriado para programação em tempo real
Desvantagens
Sujeito a condições de corrida
Soluções para o Problema da Seção Crítica
Soluções de Hardware
Inibição de Interrupções
desativa todas as interrupções antes da RC e depois reativa
Desvantagens
Usuário desabilita interrupções
Não funciona com vários processadores
Inibição de interrupção por
longo tempo
Instrução TSL
bloqueia o
barramento de memória
Vantagens
Simplicidade de uso
processos de usuário não desabilitam interrupções
Funciona em máquinas
com vários processadores
Desvantagens
Espera ocupada
Possibilidade de
postergação infinita
Soluções de Software com Busy Wait
Algoritmo de Peterson
Ao marcar a sua intenção de entrar, o processo já indica (empate) que a vez é do outro
verifica se a entrada é permitida na RC do processo
Desvantagem
desperdício de tempo de CPU
inversão de prioridade
Soluções de Software com Bloqueio
Primitivas Sleep/Wakeup
o evita o desperdício de tempo de CPU
Semáforos
não exige espera ocupada
Menos complicado
Monitores
Torna obrigatória a exclusão mútua
Problemas Clássicos de Sincronismo
Problema dos Leitores e Escritores
Problema
Possível starvation dos escritores
Solução
prioridade aos escritores, mas em ordem de chegada
Problema dos Filósofos Glutões