5/29/2014 Felimone Amone Junior 2 Introduo Processos podem compartilhar recursos, principalmente posies de memoria, e arquivos e se um processo altera os algum dado ou arquivos pode causar inconsistncias. Deste modo surge uma necessidade dos processos comunicarem-se, pois estas inconsistncias podem levar a travamentos, maus resultados e mais. 5/29/2014 Felimone Amone Junior 3 Comunicao entre processos Por exemplo, tm-se dois processos A e B, e dois locais de memoria C e D. a funo do processo A e de escrever o contedo de C em D. e a do processo B e de actualizar C. assumindo que em C esta o numero 22: 1. O processo A l o dado contido em C 2. Imediatamente antes de escrever o em D o processo A e enviado a lista de PRONTO. 3. O processo B incrementa C, passando a ser 23. 4. O processo A volta ao estado de execuo e escreve em D 22. Como se pode ver o local D j no possui o mesmo dado que C, estando agora num estado inconsistente. Situaes em que dois ou mais processos esto lendo ou escrevendo algum dado compartilhado, e o resultado final depende de quem executa e quando so chamados de situaes de corrida.
5/29/2014 Felimone Amone Junior 4 Regio Critica A parte do programa que pode levar a uma condio de corrida chama-se regio critica, ou por outra a parte do programa que faz uso de algum dado compartilhado chama-se regio critica. Uma soluo de condio de corrida deve atender 3 aspectos: Dois processos no podem estar simultaneamente em suas regies criticas. Nenhum processo fora de sua regio critica pode bloquear outro processo Nenhum processo deve esperar eternamente para entrar na sua regio critica
5/29/2014 Felimone Amone Junior 5 Excluso mutua com espera ociosa Desabilitar interrupes A soluo mais simples, que consiste em, cada processo em execuo desabilita as interrupes logo depois de entrar na sua regio critica e habilita imediatamente depois de sair dela, deste modo garante-se que nenhum outro processo alterara os dados compartilhados. Esta soluo no e vivel, visto que se um processo desabilita interrupes e no volta a habilita-las o sistema todo vai abaixo, e tambm em um ambiente multiprocessador desabilitar interrupes somente funcionaria no processador em que o processo esta sendo executado e os outros processos noutros processadores continuariam tendo acesso a memoria compartilhada. 5/29/2014 Felimone Amone Junior 6 Excluso mutua 5/29/2014 Felimone Amone Junior 7 Variveis de travamento (lock) Quando um processo ir entrar em sua Regio Crtica, ele deve verificar o status de uma varivel, se o seu valor for 0, significa que pode entrar em sua regio crtica, caso contrrio no pode. Supondo que o processo A leia a varivel com valor 0, antes que o seu valor seja modificado ocorre uma interrupo chamando um outro processo B. Ento o processo B seta a varivel com valor 1 e entra na sua Regio Crtica. Porm, quando o processo A voltar a ser executado, para ele o valor da varivel 0 e tambm entrar em sua regio crtica. 5/29/2014 Felimone Amone Junior 8 Chaveamento obrigatrio 5/29/2014 Felimone Amone Junior 9 TSL A instruo TSL uma chamada de sistema que bloqueia o acesso a memoria at o termino da execuo da instruo 5/29/2014 Felimone Amone Junior 10 OBRIGADO 5/29/2014 Felimone Amone Junior 11