Please enable JavaScript.
Coggle requires JavaScript to display documents.
Sincronismo de Processos e Threads - Coggle Diagram
Sincronismo de Processos e Threads
Processo cooperativo
Pode afetar ou ser afetado por outro processo em execução
Pode gerar inconsistência de dados
Antecedentes
Produtor/Consumidor
Produtor produz determinada informação
Apenas quando o buffer não está cheio
Consumidor consome essas informações
Apenas quando há item no buffer
Ambos acessam uma região de memória compartilhada
Consumidor não pode consumir algo não produzido ainda
Condição de corrida
Dependendo da ordem de acesso, resultados diferentes
Problema de Seção Crítica
Seção Crítica (SC)
Trecho que pode alterar variáveis comuns a vários processos
Para garantia de consistência, esse trecho deve ser serial
Requisitos para solução
Exclusão Mútua
Somente um processo pode entrar na SC por vez
Espera Limitada
Há uma fila rigida das solicitações de entrada
Progresso
Processos na seção remanescente não devem ser escolhidos para SC
Kernel
Com preempção
Prós
Maior capacidade de resposta
Menor tempo de resposta
Contras
Sujeito a condições de corrida
Dificil projeto em SMP (Multiprocessamento simétrico)
Sem preempção
Prós
Livre de condições de corrida
Contras
Perde as vantagens de sistemas com preempção
Soluções para o Problema da Seção Crítica
Busy Wait
Inversão de prioridade
LowPriority (LP) é interrompido, mas não consegue se encerrar
HighPriority depende do LP mas sempre entra na frente dele na fila de solicitações
Loop de solicitação de entrada na SC até que seja permitida a entrada
Hardware
Inibição de interrupções
Par DI / EI
Problemas
Usuário responsável pela habilitação das interrupções novamente
Não adianta com mais de um processador
Perda de sincronização com E/S
TSL (Test and Lock)
Bloqueia o barramento de memória
Vantagens
Simplicidade de uso
Funciona com vários processadores
Responsabilidade não fica com o usuário
Desvantagens
Busy Wait
Starvation