Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* * * Comunicação Entre Processos Sistemas Operacionais parte II * * * Comunicação entre Processos Condições de Corrida Dois ou mais processos acessando dados compartilhados * * * Comunicação entre Processos Exclusão Mútua Região Crítica Parte do programa cujo processamento pode levar a condições de corrida. * * * Exclusão Mutua * * * Comunicação entre Processos Condições para uma boa solução Dois ou mais processos não podem estar simultaneamente dentro de suas RC Nenhuma consideração sobre suas velocidades relativas ou nº de processadores Nenhum processo fora de sua RC pode bloquear outro processo Nenhum processo pode ser obrigado a esperar indefinidamente para entrar em sua RC * * * Comunicação entre Processos Exclusão Mutua Inibição de Interrupção Útil para processos do Kernel Variáveis de Travamento Não funciona, por que? Estrita Alternância Ruim quando um processo é muito mais lento que o outro. * * * Estrita alternancia * * * Solução de Peterson * * * Instrução TSL enter_region: TSL REGISTER,LOCK |copia lock para o registrador e seta lock para 1 CMP REGISTER,#0 | lock = zero? JNE enter3region |Se foi diferente de zero, bloqueio foi ativado, loop RET | retorna para a funçao chamadora, entrou regiao critica Leave_region: MOVE LOCK,#0 | Coloca 0 lock RET | return to caller * * * Comunicação entre Processos Soluções de Software - Histórico Solução para o problema da exclusão mútua entre dois processos Dekker, Peterson Solução para o problema da exclusão mútua entre n processos Dijkstra, Peterson Problema de starvation Problema de espera ocupada (spin lock) Looping de espera consome tempo do processador desnecessariamente * * * Comunicação entre Processos Spin Lock Problema da prioridade invertida Bloqueio e Desbloqueio de Processos Sleep/ wakeup Comando para colocar um processo no estado de espera até ser liberado por outro processo Fatores: legibilidade, simplicidade e correção dos programas concorrentes Atômico Problema do Produtor - Consumidor * * * Condição de Corrida * * * Semáforo Um semáforo é uma variável de sincronização que pode ter valores inteiros não-negativos. Foram inventados por Edsger Dijkstra in 1965. Duas operações são definidas sobre semáforos: P (do holandês "proberen", testar): uma operação atômica que espera o semáforo ficar positivo, e a seguir decrementa-o de 1. Tanenbaum utiliza down. V (do holandês "verhogen", incrementar): uma operação atômica que incrementa o semáforo de 1. Tanenbaum utiliza up. * * * Semáforo Semáforos provêm uma abstração simples e elegante que é útil para implementar exclusão mútua e outras tarefas de sincronização. * * * Exclusão Mútua e Sincronização entre Processos * * * Comunicação entre Processos Signal: Um processo notifica outro através de uma interrupção de software (Ex. kill do unix). Semaphore: Processos bloqueados, aguardando sua vez, recebem uma notificação (signal). Pipes: Fluxo de comunicação unidirecional. Message passing: Processos enviam e recebem mensagens (send/receive), podendo a comunicaçãoser individual (dois processos) ou em grupo.
Compartilhar