260 likes | 364 Views
Comunicação Interprocessos. Prof. Alexandre Monteiro Recife. Contatos. Prof. Guilherme Alexandre Monteiro Reinaldo Apelido: Alexandre Cordel E-mail/ gtalk : alexandrecordel@gmail.com greinaldo@fbv.edu.br Site: http://www.alexandrecordel.com.br/fbv Celular: (81) 9801-1878.
E N D
Comunicação Interprocessos Prof. Alexandre Monteiro Recife
Contatos • Prof. Guilherme Alexandre Monteiro Reinaldo • Apelido: Alexandre Cordel • E-mail/gtalk: alexandrecordel@gmail.com greinaldo@fbv.edu.br • Site: http://www.alexandrecordel.com.br/fbv • Celular: (81) 9801-1878
Comunicação Interprocessos • Os processos podem precisar trocar informações entre eles ou podem solicitar a utilização de um mesmo recurso simultaneamente, como arquivos, registros, dispositivos de E/S e memória. • O compartilhamento de recursos entre vários processos pode causar situações indesejáveis e, dependendo do caso, gerar o comprometimento da aplicação. • O Sistema Operacional tem a função de gerenciar e sincronizar processos concorrentes, com o objetivo de manter o bom funcionamento do sistema.
ComunicaçãoInterprocessoCondições de Disputa/Corrida Doisprocessosqueremteracessosimultaneamente à memóriacompartilhada (Ex: spool de Impressão )
Regiões Críticas • Para se evitar uma condição de corrida é preciso definir métodos que proíba que mais de um processo acesse uma determinada área de memória compartilhada ao mesmo tempo. • Esses métodos são conhecidos como exclusão mútua ou MUTEX (MUTualEXclusion). • A parte do programa no qual o processo acessa memória compartilhada é chamada seção crítica ou região crítica. • Dessa forma, a solução para se evitar uma condição de corrida seria organizar os problemas de tal forma que nenhum de dois ou mais processos estivessem em suas regiões críticas ao mesmo tempo.
RegiõesCríticas (1) • Condiçõesnecessárias para proverexclusãomútua: • Nuncadoisprocessossimultaneamenteemumaregiãocrítica • Nada pode ser afirmadosobre a velocidadeousobre o número de CPUs • Nenhumprocessoexecutando fora de suaregiãocríticapodebloquear outros processos • Nenhumprocessodeveesperareternamente para entraremsuaregiãocrítica
RegiõesCríticas (2)EsperaAtiva Exclusãomútuausandoregiõescríticas proposta de exclusão mútua na qual, um processo quando está acessando sua região crítica, outro processo que deseja entrar também em região crítica fica aguardando.
ExclusãoMútua com EsperaOciosa (1) – AlternativaEstrita Soluçãoproposta para o problema da regiãocrítica (a) Processo 0. (b) Processo 1.
ExclusãoMútua comEsperaOciosa (2) Solução de Peterson para implementar exclusão mútua
Dormir e Acordar Problema do produtor-consumidor com umacondição de disputa fatal
Semáforos O problema do produtor-consumidor usando semáforos
Mutexes Implementação de mutex_lock e mutex_unlock
Monitores (1) Exemplo de um monitor
Monitores (2) • Delineamento do problema do produtor-consumidor com monitores • somente um procedimento está ativo por vez no monitor • o buffer tem N lugares
Monitores (3) Solução para o problema do produtor-consumidor em Java
Monitores (4) Solução para o problema do produtor-consumidor em Java (parte 2)
Troca de Mensagens O problema do produtor-consumidor com N mensagens
Barreiras • Uso de uma barreira • processos se aproximando de uma barreira • todos os processos, exceto um, bloqueados pela barreira • último processo chega, todos passam
Jantar dos Filósofos (1) • Filósofoscomem/pensam • Cada um precisa de 2 garfos para comer • Pega um garfoporvez • Como prevenir deadlock • Situação de impasse.
Jantar dos Filósofos (2) Uma solução errada para o problema do jantar dos filósofos
Jantar dos Filósofos (3) Uma solução para o problema do jantar dos filósofos (parte 1)
Jantar dos Filósofos (4) Uma solução para o problema do jantar dos filósofos (parte 2)
O Problema dos Leitores e Escritores Uma solução para o problema dos leitores e escritores
O Problema do Barbeiro Sonolento (2) Solução para o problema do barbeirosonolento
Referências • Sistemas Operacionais Modernos – 3ª Edição. A. Tanenbaum, 2008. • Modern Operating Systems 3 e. Prentice-Hall, 2008.