Vous êtes sur la page 1sur 9

Programao Concorrente

Condies de Corrida,
Regies Crticas e
Excluso Mtua
Prof. Eduardo Alchieri

Processos
(comunicao entre processos)

Os processos executando concorrentemente podem ser de


dois tipos:
Independentes

Um processo independente se no puder afetar ou ser


afetado pelos outros processos em execuo no sistema
Qualquer processo que no compartilhe dados com
qualquer outro processo independente

Cooperativos

Um processo cooperativo se puder afetar ou ser afetado


por outros processos em execuo no sistema
Qualquer processo que compartilhe dados com outros
processos

Processos
(comunicao entre processos)

Os processos cooperativos precisam de mecanismos de


comunicao entre processos (Interprocess
Communication IPC) que lhe permitam a troca de dados
Existem dois modelos fundamentais de comunicao entre
processos:

Memria compartilhada

estabelecida uma rea compartilhada para que os processos


possam ler ou escrever nessa rea

Memria distribuda

A comunicao toda feita atravs de troca de mensagens

Condies de Corrida

Problema: Condies de Corrida (race conditions)

Condies de corrida so situaes onde dois ou mais


processos esto acessando dados compartilhados, e o
resultado final do processamento depende de quem executa
e quando executa

Exemplo:

Diretrio de Spool

.
.

Processo A
4
5
6
Processo B

abc
prog.c
prog.n

.
.

Out = 4

In = 7

Condies de Corrida

Como evitar condies de disputa ?

Encontrar alguma forma de proibir que mais de um processo


acesse o dado compartilhado ao mesmo tempo, isto ,
estabelecer a excluso mtua de execuo

Excluso mtua: impedir que dois ou mais processos


acessem um mesmo recurso ao mesmo tempo.
Regio Crtica: parte do cdigo do programa onde feito o
acesso memria compartilhada (ou ao recurso
compartilhado), ou seja, a parte do programa cujo
processamento pode levar ocorrncia de condies de
corrida

Excluso Mtua

Excluso mtua usando regies crticas

Regio Crtica

Fluxo de execuo de um processo

Executa regio no crtica

Executa ''procedimento'' para entrar na regio crtica

Executa sua REGIO CRTICA

Executa ''procedimento'' para deixar a regio crtica

Executa regio no crtica

Regio Crtica

Uma boa soluo (correta e eficiente) para a condio de


corrida requer que quatro condies sejam satisfeitas:

Dois ou mais processos no podem estar simultaneamente


dentro de suas regies crticas correspondentes
Nenhuma considerao pode ser feita a respeito da
velocidade relativa dos processos, ou a respeito do nmero
de processadores disponveis no sistema
Nenhum processo que esteja executando fora de sua regio
crtica pode bloquear a execuo de outro processo
Nenhum processo pode ser obrigado a esperar
indefinidamente para entrar em sua regio crtica

Solues para Excluso Mtua

Desabilitar Interrupes

Consiste em desabilitar as interrupes de cada processo


logo aps o seu ingresso em uma regio crtica, habilitandoas outra vez imediatamente antes de sair da regio crtica
PERIGO!!!
No uma boa prtica atribuir aos processos de
usurios o poder de desabilitar interrupes, interferindo
diretamente no ncleo do sistema operacional
Alm disso, em computadores com mais de uma CPU,
desabilitar as interrupes de uma CPU no impede
que outras CPUs interfiram nas operaes (acesse a
memria compartilhada) que a primeira CPU esta
executando

Vous aimerez peut-être aussi