Please enable JavaScript.
Coggle requires JavaScript to display documents.
SINCRONISMO DE PROCESSOS E THREADS, SINCRONISMO DE PROCESSOS E THREADS -…
SINCRONISMO DE PROCESSOS E THREADS
INTRODUÇÃO E ANTECEDENTES
Processos Cooperativos
Compartilham dados/espaço de endereçamento
Acesso concorrente
Inconsistência de dados
Condição de Corrida (Race Condition)
Resultado depende da ordem de execução
Exemplo: Problema Produtor/Consumidor
Buffer compartilhado + contador (count++)
Instruções de baixo nível intercaladas
Valores incorretos
Contexto Moderno
Sistemas multicore/multithread
Aumentam necessidade de sincronização
PROBLEMA DA SEÇÃO CRÍTICA
Definição
Segmento de código que acessa dados compartilhados
Requer acesso exclusivo
Requisitos
Exclusão Mútua
Apenas um processo na RC por vez
Progresso
Quem entra na RC é decidido em tempo finito
Espera Limitada
Nenhum processo espera eternamente
Kernels
Preemptivos
Melhor resposta, mas sujeitos a condições de corrida
Não-preemptivos
Livres de condições de corrida, mas pior resposta
SINCRONISMO DE PROCESSOS E THREADS
SOLUÇÕES PARA SEÇÃO CRÍTICA
Soluções de Hardware
Inibição de Interrupções (DI/EI)
Problemas
Não funciona em multiprocessadores
Perigoso para processos de usuário
Bloqueia interrupções durante a RC
Instrução TSL (Test and Set Lock)
Operação atômica
Lê e modifica variável lock
Vantagens
Funciona em multiprocessadores
Presente em processadores modernos
Desvantagens
Busy wait
Possível starvation
Soluções de Software com Busy Wait
Algoritmo de Peterson
Solução para exclusão mútua
Usa variáveis de interesse e turno
Problema
Não garante funcionamento em arquiteturas modernas
Reordenamento de instruções
Soluções com Bloqueio
Primitivas Sleep/Wakeup
Bloqueia processo em vez de busy wait
Problema
Sinal perdido
Wakeup antes do sleep
Semáforos
Variável inteira com operações atômicas
acquire() (wait/P/down)
release() (signal/V/up)
Tipos
Binários (mutex)
Valores 0 ou 1
Contadores
Controlam acesso a múltiplas instâncias
Aplicações
Exclusão mútua
Sincronização
ex: Produtor/Consumidor
Problemas
Deadlock
ex: aquisição em ordem invertida
Starvation
Monitores
Abstração de alto nível
Características
Dados + procedimentos encapsulados
Exclusão mútua automática
Vantagem
Mais seguro que semáforos
Evita erros de programação
Uso
Linguagens como Java e C#
CONEXÕES-CHAVE
Condição de Corrida
Acesso concorrente a dados compartilhados
Exclusão Mútua
Garantida por soluções de hardware/software
Busy Wait vs Bloqueio
Eficiência vs uso de CPU
Semáforos
Versáteis mas propensos a erros se usados incorretamente
Monitores
Abstração mais segura para exclusão mútua