Please enable JavaScript.
Coggle requires JavaScript to display documents.
Sistemas Operacionais A - Cap.7 - Sincronização e Comunicação entre…
Sistemas Operacionais A - Cap.7 - Sincronização e Comunicação entre Processos
Cezar Augusto Crummenauer
Mecanismos de sincronização
Garantem a comunicação entre processos concorrentes e o acesso a recursos compartilhados
Problemas de Compartilhamento de Recursos
Exclusão mútua
Soluções em hardware
Desligar interrupções
Instrução test-and-set
Pode causar starvation
Soluções em hardware
Primeiro algoritmo
Segundo algoritmo
Terceiro algoritmo
Quarto algoritmo
Algoritmo de Dekker-Peterson
Pode ser usado para mais de dois processos
Problema de espera ocupada (busy wait)
Sincronização Condicional
Exemplo clássico: gravação e leitura em um buffer por dois processos
Processos produtores e consumidores
Espera ocupada
Semáforos
Dijkstra
Mecanismo de sincronização que permitia implementar, de forma simples, a exclusão mútua e a sincronização condicional entre processos
Instruções indivisíveis UP e DOWN
Semáforos binários
Também chamados de mutexes (mutual exclusion semaphores)
Semáforos contadores
Podem assumir qualquer valor inteiro >= 0
Exclusão mútua usando semáforos
Sem espera ocupada
Processos ficam em estado de espera, não gerando overhead no processador
Sincronização condicional usando semáforos
Exemplo: aguardar operação de E/S
Problema dos filósofos
Deadlock
Problema do barbeiro
Monitores
Mecanismos de sincronização de alto nível que tornam mais simples o desenvolvimento de aplicações concorrentes
Mecanismo de sincronização estruturado, ao contrário dos semáforos, que são considerados não-estruturados
São implementados por compiladores
Exclusão mútua usando monitores
O compilador se encarrega de garantir a exclusão mútua
Sincronização condicional usando monitores
Através de variáveis especiais de condição, é possível associar a execução de um procedimento que faz parte do monitor a uma determinada condição, garantindo a sincronização condicional