Please enable JavaScript.
Coggle requires JavaScript to display documents.
SINCRONISMO DE PROCESSOS E THREADS - Coggle Diagram
SINCRONISMO DE PROCESSOS E THREADS
Antecedentes
O problema do Produto/Consumidor
Produto produz informações para processo consumidor
Condição de Corrida
Processos acessam e manipulam os mesmos dados concorrentemente
Sincronização para que não consuma um intem que não foi produzido
O Problema da Seção Crítica
Região Crítica é Pequena
Para a Solução ser boa
Progresso
Processos que não estão na remanescente podem decidir quem vai executar
Espera Limitada
Limite para o número de vezes que podem entrar
Exclusão Mútua
Processos não podem executar ao mesmo tempo
Kernel com Preempção
Processos Interceptados
Processo pode alterar variáveis comuns
Seção de Entrada
Para entrar na seção critica
Seção de Saída
Para Sair da Seção Critica
Seção Remanescente
Código restante
Kernel sem Preempção
Processo não Interceptado
Projetar protocolo para processos utilizarem na cooperação
Soluções para o Problema da Seção Crítica
Soluções de Software com busy wait
Busy Wait
Espera ocupada
Algoritmo de Peterson
Dois processos que se alteram na execução
O processo indica que é a vez do outro apenas tendo a intenção de entrar
Soluções de software com bloqueio
Primitivas Sleep/Wakeup
Bloquear a execução quando sua entrada não é permitida
wakeup ( )
Acorda o processo bloqueado
sleep ( )
Suspende execução até que outro acorde
Semáforos
Acessado por duas operações atômicas
signal ( )
wait ( )
Semáforo de Contagem
Domínio Restrito
Semáforo Binário
lock (mutex)
unlock (mutex)
Não exige espera Ocupada
Problemas
Deadlock
Starvation
Monitores
Assegura que um processo de cada vez seja ativo
Operações definidas dotadas de exclusão mútua dentro do monitor
Não é suficientemente poderoso
Processo só pode acessar os dados por meio de procedimentos
Mecanismos de sincronização adicional
condition
Soluções de Hardware
Inibição de Interrupções
EI
Enable Interrupt
DI
Disable Interrupt
Desativa todas as interrupções antes de entrar na RC
Probemas
Não funciona em ambiente multicore
Dessinteressante o usuário poder desabilitar interrupções
Instrução TSL
"Test and Set Lock"
Bloqueia Barramento de Memória
Executada de forma Atômica
Problemas
Busy Wait
Starvation
Problemas Clássicos de Sincronismo
Problema dos Leitores e Escritores
Escritor e outro processo não podem acessar o banco de dados juntos
Leitores tem acesso simultâneo
Escritores tem acesso exclusivo
Problema dos Filósofos Glutões
Demonstração de problemas de controle de concorrência
Solução
Um semáforo para cada chopstick