Sleep/Wake Up bloqueante para problemas bounded buffer(limitado pelo buffer) problema do produtor/consumidor (produtor adiciona no buffer, consumidor tira do buffer) o problema do produtor/consumidor acontece quando o produtor quer adicionar no buffer, mas ele está cheio, ou o consumidor quer tirar do buffer, mas ele está vazio para resolver isso, o sleep/wake up coloca o processo para dormir dois processos acessam o buffer ao mesmo tempo buffer age como uma fila circular exclusão mutua deve ser aplicada há a possibilidade de usar uma variável para dizer se um pode consumir e se o outro pode adicionar, contudo, o scheduler pode interromper antes da variável ser modificada, podendo então causar a dissincronia e consequentemente um deadlock um processo pode colocar outro para dormir (sleep) ou acordar (wake up) Semáforo armazena o numero de wake ups enviados, começando em 1 se o número for 0, o recurso está sendo usado, se não ele está livre operação down executa sempre que um processo quer utilizar o recurso e up para liberar o recurso operações são atômicas aplica a exclusão mutua bloqueante quando um processo acessa a região crítica, ele da um comando down, se o valor for 0 ele entra numa fila e fica bloqueado até chegar a vez dele de usar, se não ele executa Semáforo full → conta no buffer quantos espaços estão sendo usados (começa com o numero de elementos) Semáforo empty → conta o numero de espaços vazios no buffer (começa com 0) soluciona o mesmo problema do produtor/consumidor Monitor há somente um processo ativo dentro do monitor o restante é bloqueado semelhante ao semáforo, só que mais fácil de controlar bloco programático compilador que garante a exclusão mutua dentro de um bloco monitor há procedimentos a serem executados, antes de executar ele vê se não há nada que estava sendo executado antes Mensagem processos podem estar em diferentes máquinas envia e recebe mensagens ao invés de usar memória compartilhada pode usar as primitivas SEND e RECIEVE para sincronia pode ser bloqueante ou não (usando outra THREAD por exemplo) por usar rede, há diversos problemas que podem acontecer para resolver a perda de mensagens, é usado ACK para dizer que a info chegou corretamente para resolver a perda do ACK, as mensagens são todas numeradas, assim, caso um envie a mesma mensagem 2 vezes, entende-se que ele não recebeu o ACK então, você descarta a mensagem e envia o ACK de novo pode haver combinação de bloqueante e não bloqueante (emissor x receptor) emissor bloqueante e receptor bloqueante = síncrono
...