Faculdade de Informática - PUCRS ALGORITMOS DISTRIBUÍDOS Exclusão mútua Sistemas Distribuídos 222 Algoritmos Distribuídos (exclusão mútua) Faculdade de Informática - PUCRS z Problema: recursos que não podem ser usados simultaneamente por diversos processos z Acesso exclusivo deve ser provido pelo sistema z Esta exclusividade é conhecida como exclusão mútua Sistemas Distribuídos 223 1 Algoritmos Distribuídos (exclusão mútua) Faculdade de Informática - PUCRS z Um algoritmo que implementa exclusão mútua deve satisfazer os seguintes critérios: y exclusão mútua: dado um recurso compartilhado que pode ser acessado por diversos processos ao mesmo tempo, somente um processo pode acessar aquele recurso a qualquer momento y starvation: cada processo que requisita o recurso deve recebe-lo em algum momento Sistemas Distribuídos 224 Faculdade de Informática - PUCRS Algoritmos Distribuídos (exclusão mútua) z Algoritmo centralizado z Neste algoritmo, um processo do sistema é eleito como o coordenador e coordena as entradas na seção crítica (SC) z Cada processo que deseja entrar em uma SC deve antes pedir autorização para o coordenador z Se não existe processo acessando a SC, então o coordenador pode imediatamente garantir acesso ao processo que fez a requisição z Se mais de um pede acesso à SC, então só um ganha acesso z Após término do uso, processo informa coordenador z Coordenador pode então liberar SC para outro processo (se existir) Sistemas Distribuídos 225 2 Algoritmos Distribuídos (exclusão mútua) Faculdade de Informática - PUCRS z Algoritmo Distribuído z Se processo deseja acessar SC, então ele envia mensagem para todos os outros processos z Mensagem contem: y identificador do processo y nome da SC que ele deseja acessar y um timestamp único gerado pelo processo que enviou a mensagem Sistemas Distribuídos 226 Algoritmos Distribuídos (exclusão mútua) Faculdade de Informática - PUCRS z Ao receber mensagem, processo: y responde ao processo que enviou msg e garante acesso à SC se: n não quer acessar SC n quer acessar SC mas seu timestamp é maior que o timestamp do processo que enviou a mensagem y não responde se: n processo que recebeu mensagem está executando na SC n processo está esperando para acessar SC e seu timestamp é menor que o timestamp do processo que enviou a mensagem Sistemas Distribuídos 227 3 Algoritmos Distribuídos (exclusão mútua) P1 e P2 querem entrar na seção crítica TS=6 P2 P1 TS=4 TS=6 TS=6 TS=4 TS=4 P3 P4 Faculdade de Informática - PUCRS OK P1 P2 Entra na seção crítica OK P4 P1 P1 OK OK P2 P1 P4 Defere resposta p/ P1 e P2 P4 na seção crítica P1 Responde a P2 P3 Entra na seção crítica P1 P4 P2 Defere resposta p/ P1 OK P3 Responde a P1 e P2 OK P2 Sai da seção crítica P3 Sai da seção crítica Sistemas Distribuídos 228 Faculdade de Informática - PUCRS Enunciado do 1ro Trabalho Prático z Implementar o algoritmo de exclusão mútua distribuída baseado na garantia de acesso a partir da autorização de todos z Supor relógios das máquinas sincronizados z Trabalho deve ser feito na linguagem C, utilizando RPC z O recurso compartilhado pelos diversos processos é um arquivo que está em uma área comum das diversas máquinas onde os processos vão ser executados. No início este arquivo tem um valor aleatório. Cada processo deve ler o último valor que se encontra neste arquivo, realizar uma operação sobre o valor, e armazenar o resultado na próxima posição (append). A seqüência de operações (o conteúdo do arquivo) deve constar no documento final a ser entregue. Cada vez que o processo acessa o recurso (arquivo) ele deve imprimir o valor que lá se encontrava, a operação que foi realizada, e o novo valor que lá foi armazenado. Cada processo deve realizar no mínimo 5 operações sobre o valor do arquivo. Cada processo deve ter uma operação diferente dos outros, de tal forma que o resultado de dois processos com base na mesma entrada é sempre diferente. z Devem existir no mínimo 5 processos executando Sistemas Distribuídos 229 4 Algoritmos Distribuídos (exclusão mútua) Faculdade de Informática - PUCRS z Algoritmo baseado na passagem de token y Neste método, exclusão mútua é conseguida pelo uso de um token único que circula entre os processos do sistema y Um token é uma mensagem especial que dá ao detentor da mensagem direito de acesso à SC y Para que o algoritmo seja justo, os processos são organizados em um anel y O token circula entre os processos no anel sempre na mesma direção Sistemas Distribuídos 230 5