Please enable JavaScript.
Coggle requires JavaScript to display documents.
Sincronismo de Processos e Threads - Coggle Diagram
Sincronismo de Processos e Threads
Antecedentes
Sincronismo entre produtor e consumidor
Condição de Corrida
Rotina do contador de buffer não pode ocorrer concorrentemente
O Problema da Seção Crítica
Só pode um processo por seção crítica
Seção de entrada
solicitar permissão para entrar em sua seção crítica
pode ser seguida por uma seção de saída
O código restante é a seção remanescente.
requisitos obrigatórios de uma boa solução
Exclusão Mútua
Um processo por vez executando sua RC
Progresso
decisão sobre qual processo será o próximo a entrar em sua RC
Espera limitada
Limita o número de entrada de um processo em sua RC
Manipulação de seção crítica
Kernels com preempção
Processo interceptado enquanto é executado modalidade kernel
Vantagens
Melhor capacidade de resposta
mais apropriado para programação em tempo real
Desvantagem
Sujeito a condições de corrida
Difíceis de projetar em arquiteturas SMP
processos em modalidade de kernel rodando simultaneamente em diferentes CPUs
Kernels sem preempção
Processo não é interceptado enquanto é executado modalidade kernel
Processo executado até sair da modalidade, ser abandonado ou abandonar voluntariamente o controle da CPU
Vantagens
Livre de condições de corrida
Desvantagens
Não tem as vantagens de um kernel com preempção
Soluções para o Problema da
Seção Crítica
Tipos de Soluções
Soluções de Hardware
Inibição de interrupções
Usa um par de instruções do tipo DI / EI
DI = Disable Interrupt
EI = Enable Interrupt
desativa as interrupções antes de entrar na RC
reativando-as imediatamente depois de sair dela
Instrução TSL (apresenta busy wait)
Executada de forma atômica
Vantagens
Simplicidade de uso
Processos de usuário não pode desabilitar interrupções
Presente em quase todos os processadores atuais.
Funciona em máquinas com vários processadores
Desvantagens
Espera ocupada (busy wait).
Possibilidade de postergação infinita (starvation)
Soluções de software com busy wait
Algoritmo de Peterson
Ao marcar a sua intenção de entrar, o processo já indica que a vez é do outro.
verifica se a entrada é permitida no RC
Desvantagem
desperdício de tempo de CPU
Soluções de software com bloqueio
Sleep/Wakeup
bloquear a execução dos processos quando não é permitido entra na RC
sleep()
Semáfaros
Ferramenta de sincronismo que não exige espera ocupada
acquire()
release()
Só pode ser acessado por duas operações indivisíveis
Quanto um semáforo só pode assumir os valores 0 ou 1
Problemas Clássicos de Sincronismo
Problema dos Leitores e Escritores
Os leitores podem acessar simultaneamente dados compartilhados.
Os escritores podem acessar exclusivo aos dados compartilhados
Problema dos Filósofos Glutões