Exclusao Mutua
Condições de Corrida,
Regiões Críticas e
Exclusão Mútua
Prof. Eduardo Alchieri
Processos
(comunicação entre processos)
Os processos executando concorrentemente podem ser de dois tipos:
Independentes
Um processo é independente se não puder afetar ou ser afetado pelos outros processos em execução no sistema
Qualquer processo que não compartilhe dados com qualquer outro processo é independente
Cooperativos
Um processo é cooperativo se puder afetar ou ser afetado por outros processos em execução no sistema
Qualquer processo que compartilhe dados com outros processos Processos
(comunicação entre processos)
Os processos cooperativos precisam de mecanismos de comunicação entre processos (Interprocess
Communication – IPC) que lhe permitam a troca de dados
Existem dois modelos fundamentais de comunicação entre processos:
Memória compartilhada
É estabelecida uma área compartilhada para que os processos possam ler ou escrever nessa área
Memória distribuída
A comunicação é toda feita através de troca de mensagens
Condições de Corrida
Problema: Condições de Corrida (race conditions)
Condições de corrida são situações onde dois ou mais processos estão acessando dados compartilhados, e o resultado final do processamento depende de quem executa e quando executa
Exemplo:
Diretório de Spool
.
.
Processo A
4
5
6
Processo B
7
abc prog.c prog.n
.
.
Out = 4
In = 7
Condições de Corrida
Como evitar condições de disputa ?
Encontrar alguma forma de proibir que mais de um processo acesse o dado compartilhado ao mesmo tempo, isto é, estabelecer a exclusão mútua de execução
Exclusão mútua: impedir que dois ou mais processos acessem um mesmo recurso ao mesmo tempo.
Região Crítica: parte do código do programa onde é feito o acesso à memória compartilhada (ou ao recurso compartilhado), ou seja, é a parte do programa cujo processamento pode levar à ocorrência de condições de corrida Exclusão