Você está na página 1de 4

Sistemas Operacionais

Captulo 7 Comunicao entre Processo

7.1 Introduo y y Compartilhamento de recursos entre processos pode gerar situaes indesejveis Mecanismos de sincronizao garantem a comunicao entre processos concorrentes e o acesso a recursos compartilhados

7.2 Especificao de Concorrncia em Programas y Primeira notao para especificao da concorrncia: FORK e JOIN o FORK Inicia a execuo de outro programa concorrentemente o JOIN O programa chamador espera o outro programa terminar para continuar o processamento Implementao mais simples: PARBEGIN e PAREND o PARBEGIN Inicia lista de programas que sero executados paralela e aleatoriamente. o PAREND Especifica o ponto de sincronizao.

7.3 Problemas de Compartilhamento de Recur sos y y Mecanismos de controle devem existir para evitar problemas Exemplos: o Atualizao de arquivos compartilhados ao mesmo tempo o Clculos com mesmas variveis ao mesmo tempo.

7.4 Soluo para os Problemas de Compartilhamento y y y Excluso Mltua (soluo mais simples): impedir que dois ou mais processos acessem um mesmo recurso no mesmo instante, um deve esperar que o outro termine para utilizar. Regio crtica: parte do cdigo onde feito o acesso ao recurso compartilhado. Usualmente utiliza-se de um protocolo ao entrar em uma regio crtica e ao sair dela.

7.5 Problemas de Sincronizao y y y Problemas introduzidos pela excluso mltua. Velocidade de Execuo dos Processos: o Processos com diferenas de velocidade ou maior tempo de processamento Starvation: o Situao em que um processo nunca consegue executar sua regio crtica e acessar o recurso compartilhado. o Ocorre quando dois ou mais processos esperam por um mesmo recurso alocado. Caso o sistema escolha o processo aleatoriamente quando o recurso liberado, um processo pode nunca ser escolhido o Quando um processo tem baixa prioridade tambm pode nunca ser escolhido. o Filas FIFO eliminam esse problema. Sincronizao Condicional: o Quando um recurso no se encontra pronto para ser utilizado pelos proces sos, o processo deve ser colocado no estado de espera, at a liberao do recurso. o Problema de processo produtor/consumidor: exemplo, quando um processo tenta gravar num buffer e outro tenta ler. Um processo no poderia ler de um buffer cheio nem tentar ler de um buffer vazio.

7.6 Solues de Hardware y Desabilitao de Interrupes: o Desabilitar interrupes externas ao entrar numa regio critica e habilitar ao sair. o Se o processo no habilitar as interrupes ao sair da regio crtica, o sistema pode estar comprometido. Instruo Test-and-set: o Instruo especial que permite ler uma varivel, armazenar seu contedo em uma outra rea e atribuir um novo valor a essa varivel. o Executa sem interrupo o uma instruo invisvel o Assim, dois processos no podem manipular uma varivel compartilhada ao mesmo tempo (excluso mltua).

7.7 Soluo de Software y Fatores para a soluo de problemas de sincronizao: o O nmero de processadores e o tempo de execuo dos processos concorrentes devem ser irrelevantes; o Um processo, fora de sua regio crtica, no pode impedir que outros processos entrem em suas prprias regies crticas; o Um processo no pode permanecer indefinidamente esperando para entrar em sua regio crtica.

7.7.1 Semfaros y y y Soluo mais geral e simples de ser implementada. Varivel inteira, no negativa, que s pode ser manipulada por duas instrues: DOWN e UP. Mutexes (mutual exclusionsemaphores): o Semfaros aplicados ao problema da excluso mltua o Na excluso mltua, as instrues DOWN e UP funcionam como protocolos de entrada e sada. Valor > 0, recurso liberado, Valor = 0, processo impedido do acesso. o Processo entra na regio crtica executa DOWN, impedindo outros processos do acesso. o Processo sai da regio crtica executa UP, liberando o a cesso para outros processos. o Normalmente, UP e DOWN so SystemCalls. Semfaros aplicados ao problema de sincronizao condicional: o Em geral, se existe um processo que deve ser notificado sobre a ocorrncia de um evento e um outro capaz de detectar sua ocorrncia, pode-se utilizar um semfaroacossiado ao evento esperado para sincronizar ambos os processos o Semfaros contadores: teis quando aplicados na alocao de recursos do mesmo tipo (pool).

7.7.2 Monitores y y y y y y Mecanismos de sincronizao de alto nvel que tentam tornar mais fcil o desenvolvimento e correo de programas concorrentes. Conjunto de procedimentos, variveis e estrutura de dados definidos dentro de um mdulo. Somente um processo pode estar executando um dos procedimentos do monitor em um determinado instante. Implementao da excluso mtua nos monitores realizada pelo compilador. WAIT Faz um processo entrar em estado de espera quando uma varivel de condio (estrutura de dados tipo fila) est impedindo a liberao para outros processo. SIGNAL Liberao do recurso pelo processo que o alocou.

7.7.3 Troca de Mensagens y Mecanismo de comunicao e sincronizao entre processos.

y y y y y y y y y

SEND Envia uma mensagem a um processo receptor o SEND (Receptor, Mensagem) RECEIVE Recebe uma mensagem de um processo transmissor o RECEIVE (Emissor, Mensagem) No ocorre excluso multua. Uma mensagem s pode ser lida apos Ter sido enviada. Pode ocorrer perda de mensagens ACK (acknowledgement) enviada pelo processo receptor para informar o recebimento da mensagem. Se o emissor no receber um ACK em determinado tempo, reenvia a mensagem. Endereamento direto s permite a comunicao entre dois processos. Endereamento indireto utiliza uma rea compartilhada (buffer conhecido como mailbox) onde as mensagens podem ser colocadas pelo emissor e retiradas pelo receptor Comunicao sncrona (rendezvous): o Um processo envia uma mensagem e fica esperando at que o receptor leia a mensagem o Um receptor tenta receber uma mensagem e fica esperando at que o processo transmissor grave alguma mensagem. o Dispensa necessidade de buffers. o A necessidade de espera reduz o grau de concorrncia. Comunicao assncrona: o O transmissor no aguarda o recebimento da mensagem. o O receptor no aguarda o envio de uma mensagem. o Necessita de buffers o Maior paralelismo na execuo dos processos em relao a sncrona.

7.8 Deadlock y y y Um processo espera por um evento que nunca ocorrer. Conseqncia, em geral, do compartilhamento de recursos do sistema entre vrios processos de forma exclusiva. Espera circular quando, por exemplo, um processo A, utilizando um recurso P, necessita de um recurso Q, alocado pelo processo B, para continuar o processamento e o processo B necessita do recurso P para continuar o processamento. Deadlocks ocorrem quando 4 condies so verdadeiras: 1. Excluso mtua - Cada recurso s pode estar alocado a um nico processo em um determinado instante. 2. Um processo, alm dos recursos j alocados, pode estar esperando por outros recursos. 3. No-preempso Um recurso no pode ser liberado de um processo s porque outros processos desejam o mesmo recurso. 4. Espera circular Um processo pode Ter de esperar por um recurso alocado a outro processo e vice-versa.

7.8.1 Preveno de Deadlock y y Garantir que uma das quatros condies nunca se satisfaam 1a condio: o A ausncia da excluso mltua acaba com o problema. o Pode causar srios problemas de consistncia. 2a condio: o Alocar todos os recursos necessrios para a execuo, antes de se executar, caso no disponveis, fica em espera. o Pode ocorrer starvation, pois seus recursos podem nunca estarem liberados todos ao mesmo tempo o Dificuldade de se determinar o nmero de recursos que um processo dever alocar antes de sua execuo. o Algum recurso pode demorar a ser liberado. 3a condio: o Evitada quando permitimos que um recurso seja retirado de um processo, no caso de outro processo necessitar do mesmo. o Pode perder o processamento feito at o momento. o Pode ocorrer starvation, quando o processo garante alguns recursos e o sistema os libera em seguida.

4a condio: o Forar ao processo Ter apenas um recurso de cada vez, se precisar de outro recurso, deve liberar o primeiro.

7.8.2 Deteco do Deadlock y y y Mecanismo que determina a existncia de deadlock, permitindo identificar os recursos e processos envolvidos no sistema Existe uma estrutura de dados capaz de identificar cada recurso do sistema. Geralmente os algoritmos verificam a existncia de espera circular, percorrendo toda a estrutura quando um processo solicita um recurso que no pode ser imediatament e garantindo.

7.8.3 Correo do Deadlock y y y y Eliminar um ou mais processos envolvidos no deadlock e desalocar os recursos j garantidos por eles, eliminando a espera circular. A escolha dos processos normalmente feita aleatoriamente ou com base em prioridades. Pode gerar um elevado overhead ao sistema. Rollback : o liberao de apenas uns recursos alocados at o ciclo de espera terminar o o processo retorna seu processamento quando o recurso devolvido. o Difcil de ser implementado devido ser bastante dependente da aplicao.