Вы находитесь на странице: 1из 9

FACULDADE DE TALENTOS HUMANOS - FACTHUS MATHEUS XAVIER DE CAMPOS

EXCLUSO MTUA

UBERABA MG 2012

MATHEUS XAVIER DE CAMPOS

EXCLUSO MTUA

Trabalho apresentado Faculdade de Talentos Humanos como um dos prrequisitos para a obteno do grau de Bacharel em Engenharia Mecnica com Habilitao em Controle e Automao. Professor: Eduardo Henrique de Oliveira

UBERABA MG 2012

Sumrio 1. EXCLUSO MTUA............................................................................................. 4 2. REGIES CRTICAS ............................................................................................ 5 3. PRIMITIVAS DE EXCLUSO MTUA ................................................................. 6 4. IMPLEMENTAO DE PRIMITIVAS DE EXCLUSO MTUA ........................... 7 5. EXCLUSO MTUA PARA N PROCESSOS ....................................................... 8 6. REFERNCIA BIBLIOGRFICA .......................................................................... 9

1. EXCLUSO MTUA Considere um sistema com muitos terminais em tempo compartilhado. Assuma que os usurios terminam cada linha de texto que eles digitam com a tecla <ENTER>. Suponha que seja desejvel monitorar continuamente o nmero total de linhas que os usurios entraram no sistema desde o incio do dia. Assuma que cada terminal de usurio seja monitorado por um processo diferente. Toda vez que um destes processos recebe uma linha do terminal, ele incrementa de um uma varivel global compartilhada do sistema, chamada LINHAS. Considere o que aconteceria se dois processos tentassem incrementar LINHAS simultaneamente. Assuma que cada processo possui sua prpria cpia do seguinte cdigo:

LOAD LINHAS; L a variveis linhas no registrador acumulador. ADD 1; Incrementa o registrador acumulador. STORE LINHAS; Armazena o contedo do acumulador na varivel.

Suponhamos que LINHAS tenha o valor atual 21687. Agora suponhamos que o primeiro processo execute as instrues LOAD e ADD, deixando ento o valor 21688 no acumulador. Ento o processo perde o processador (aps o trmino de seu quantum) para o segundo processo. O segundo processo ento executa as trs instrues, fazendo com que a varivel linhas tenha o valor 21688. Ele ento perde o processador para o primeiro processo que continua executando de onde tinha parado, e, portanto executando a instruo STORE, e armazenando 21688 na varivel LINHAS. Devido falta de comunicao entre os processos, o sistema deixou de contar uma linha o valor correto seria 21689. O problema est em dois ou mais processos escreverem em uma varivel compartilhada. Vrios processos poderiam estar lendo uma varivel compartilhada sem problemas. Entretanto, quando um processo l uma varivel que outro processo est escrevendo, ou quando um processo tenta escrever em uma varivel que outro processo tambm esteja escrevendo, resultados inesperados podem acontecer. O problema pode ser resolvido dando a cada processo acesso exclusivo varivel LINHAS. Enquanto um processo incrementa a varivel, todos os outros processos desejando faz-lo no mesmo instante devero esperar; quando o primeiro

processo terminar o acesso varivel compartilhada, um dos processos passa a ter acesso varivel. Assim, cada processo acessando a varivel exclui todos outros de faz-lo simultaneamente. Isto chamado de excluso mtua. Como veremos, os processos em espera devero ser gerenciados de forma a esperarem um tempo razoavelmente curto. 2. REGIES CRTICAS A excluso mtua somente precisa estar presente nos instantes em que os processos acessam dados compartilhados modificveis quando os processos esto executando operaes que no conflitam um com o outro, eles deveriam ser liberados para processarem concorrentemente. Quando um processo est acessando dados compartilhados modificveis, dito que o processo est em sua regio crtica ou seo crtica. Fica claro, que para evitarmos problemas como o mostrando acima, necessrio garantir que quando um processo est em sua regio crtica, todos os outros processos (pelo menos aqueles que acessam a mesma varivel compartilhada modificvel) sejam excludos de suas respectivas regies crticas. Enquanto um processo est em sua regio crtica, outros processos podem certamente continuar sua execuo fora de suas regies crticas. Quando um processo deixa sua regio crtica, um dos processos esperando para entrar em sua prpria regio crtica pode prosseguir. Garantir a excluso mtua um dos principais problemas em programao concorrente. Muitas solues foram

propostas: algumas baseadas em software e outras baseadas em hardware; algumas em baixo nvel, outras em alto nvel; algumas requerendo cooperao voluntria entre processos, outras exigindo uma rgida aderncia a protocolos estritos. Um processo dentro de uma regio crtica est em um estado muito especial. O processo possui acesso exclusivo aos dados compartilhados modificveis, e todos os outros processos desejando acess-los devem esperar. Assim, regies crticas devem executar o mais rpido possvel, um processo no deve passar para o estado bloqueado dentro da regio crtica, e regies crticas devem ser cuidadosamente codificadas (para evitar, por exemplo, loops infinitos).

3. PRIMITIVAS DE EXCLUSO MTUA O programa concorrente apresentado a seguir, implementa o mecanismo de contagem de linhas de texto digitadas pelos usurios, descrito anteriormente. A linguagem utilizada uma pseudolinguagem com sintaxe semelhante linguagem Pascal, mas com mecanismos de paralelismo. Para maior simplicidade, vamos

assumir que somente dois processos concorrentes nos programas apresentados nesta e nas sees seguintes. Manipular n processos concorrentes

consideravelmente mais complexo.

program excluso_mtua; var linhas_digitadas: integer; procedure processo_um; while true do begin leia_prxima_linha_do_terminal; entermutex; linhas_digitadas := linhas_digitadas + 1; exitmutex; processe_a_linha; end; procedure processo_dois; while true do begin leia_prxima_linha_do_terminal; entermutex; linhas_digitadas := linhas_digitadas + 1; exitmutex; processe_a_linha; end; begin linhas_digitadas := 0; parbegin

processo_um; processo_dois; parend; end.

O par de construes entermutex / exitmutex introduzidos no exemplo delimitam o cdigo da regio crtica de cada processo. Essas operaes so normalmente chamadas de primitivas de excluso mtua, e cada linguagem que as suporte pode implement-las sua maneira. No caso de dois processos, como no exemplo, as primitivas operam da seguinte maneira. Quando o processo_um executa entermutex, se o processo_dois no est em sua regio crtica, ento o processo _um entra em sua regio crtica, acessa a varivel e ento executa exitmutex para indicar que ele deixou sua regio crtica. Se o processo_dois est em sua regio crtica quando o processo_um executa entermutex, ento o processo_um espera at que o processo_dois execute exitmutex. Ento o processo_um pode prosseguir e entrar em sua regio crtica. Se tanto o processo_um como o processo_dois executam

simultaneamente entermutex, ento somente liberado para prosseguir, enquanto o outro permanece esperando. Por enquanto, vamos assumir que o vencedor escolhido aleatoriamente pelo sistema operacional.

4. IMPLEMENTAO DE PRIMITIVAS DE EXCLUSO MTUA A implementao das primitivas entermutex (entrada no cdigo de excluso mtua) e exitmutex (sada do cdigo de excluso mtua) deve satisfazer as seguintes restries:

A soluo deve ser implementada puramente em software em uma mquina sem suporte a instrues especficas para excluso mtua. Cada instruo da mquina executada indivisivelmente, isto , uma vez que uma instruo comea a ser executada, ela termina sem nenhuma interrupo. Se mltiplos processadores tentam acessar o mesmo item de dados, assumimos que um recurso de hardware chamado storage interlock (interbloqueio

de armaze-namento) resolve qualquer conflito. O storage interlock sequencializa as referncias conflitantes a um item de dados, isto , as referncias acontecem uma por vez. Assumimos tambm que as vrias referncias so servidas em uma ordem aleatria. Nenhuma suposio deve ser feita sobre as velocidades relativas dos processos concorrentes assncronos. Processos operando fora de suas regies crticas no podem evitar que outros processos entrem em suas prprias regies crticas. Processos no devem ter sua vez de entrar em sua regio crtica indefinidamente adiada. Uma implementao elegante em software de excluso mtua foi pela primeira vez apresentada pelo matemtico alemo Dekker. Esta soluo implementa excluso mtua com espera ocupada (busy wait), pois os processos ficam em um loop infinito fazendo testes at conseguirem entrar nas suas regies crticas. O algoritmo de Dekker foi analisado e apresentado por diversos autores da rea de sistemas opera-cionais. Um deles, G. L. Peterson, apresentou mais tarde um algoritmo mais simplificado do algoritmo original de Dekker. Entretanto, a soluo de Dekker somente funciona para excluso mtua entre dois processos. Outras solues foram inventadas, e contam com algum suporte do sistema operacional, o que facilita a vida do programador. Vejamos a seguir estas solues.

5. EXCLUSO MTUA PARA N PROCESSOS Em 1965, Dijkstra foi o primeiro a apresentar uma soluo em software para a implementao de primitivas de excluso mtua para n processos. Knuth respondeu em 1966 com uma soluo que eliminou a possibilidade de adiamento indefinido existente no algoritmo de Dijkstra, mas que ainda permitia que um processo pudesse sofrer um longo atraso na hora de entrar em sua regio crtica. Isto desencadeou vrias tentativas de encontrar algoritmos com menores atrasos. Eisenberg e McGuire (1972) apresentaram uma soluo que garantia que em uma situao com n processos, um desses processos conseguiria entrar em sua regio crtica com no mximo n 1 tentativas.

Em 1974, Lamport desenvolveu uma soluo que particularmente aplicvel a sistemas de processamento distribudo. O algoritmo utiliza um sistema do tipo pegue uma senha, da mesma forma que algumas padarias da poca utilizavam, e por isso foi chamado de Lamports Bakery Algorithm (algoritmo de padaria de Lamport). Brinch Hansen (1978) tambm discute controle de concorrncia entre processos distribudos. Burns, et all (1982), oferece uma soluo utilizando uma nica varivel compartilhada. Carvalho e Roucairol (1983) discutem a garantia de excluso mtua em redes de computadores.

6. REFERNCIA BIBLIOGRFICA Apostila de Sistemas Operacionais. Disponvel em: http://pt.scribd.com/doc/50169406/51/Exclusao-Mutua-para-N-Processos. Acesso em 13 jun. 2012.