Você está na página 1de 1

Em sistemas distribuídos existem alternativas para se obter exclusões mútuas,

que também apresentam garantias de justiça, ausência de deadlock e ausência de


livelock (situação na qual uma unidade concorrente não consegue terminar a execução
ou entrar em uma seção crítica por excesso de trabalho ou falta de velocidade;
difere de deadlock por estar ativa e não bloqueada ou aguardando algo).
Exemplos incluem o algoritmo centralizado e o algoritmo em anel.
Exclusão mútua (por vezes abreviado para mutex) algoritmos são utilizados na programação s
imultânea para evitar o uso simultâneo de um recurso comum, como uma variável global,
que são pedaços de código de computador chamado seções críticas. Uma seção crítica é um ped
no qual um processo ou thread acessa um recurso comum. A seção crítica por si só não é um
ecanismo ou algoritmo de exclusão mútua. Um programa, processo ou segmento pode ter
a seção crítica nele, sem nenhum mecanismo ou algoritmo que implementa exclusão mútua.
Exemplos desses recursos são sinalizadores de grão fino, contadores ou filas, usado
para comunicação entre o código que funciona simultaneamente, como um aplicativo e seu
s manipuladores de interrupção. A sincronização de acesso a esses recursos é um problema g
rave porque um segmento pode ser parado ou iniciado a qualquer momento.
Para ilustrar: suponhamos que uma seção do código é alterar uma parte dos dados sobre vári
as etapas do programa, quando uma outra linha, talvez provocado por algum aconte
cimento imprevisível, inicia a execução. Se este segundo segmento lê a partir do mesmo p
edaço de dados, os dados, que está em vias de ser substituído, está em um estado inconsi
stente e imprevisível. Se o segundo segmento que tenta sobrescrever dados, o estad
o resultante provavelmente será irrecuperável. Estes dados compartilhado que está send
o acessado por seções críticas do código, deve ser protegido, de modo que outros process
os que ler ou escrever para o bloco de dados estão excluídos da execução.
Um mutex é também um nome comum para um objeto de programa que negocia a exclusão mútua
entre threads, também chamado de bloqueio.

Primitivas de sincronização podem ser construídos como os exemplos abaixo usando as so


luções explicado acima:
* Bloqueios
* mutexes Reentrant
* Semáforos
* Monitores
* Mensagem de passagem
* Espaço de Tuplas
Muitas formas de exclusão mútua, têm efeitos colaterais. Por exemplo, semáforos clássico p
ermitir impasses, em que um processo recebe um semáforo, um outro processo recebe
um segundo semáforo, e então ambos esperar para sempre para o outro semáforo seja libe
rado. Outros efeitos colaterais comuns incluem a fome, em que um processo nunca
recebe recursos suficientes para executar a conclusão inversão de prioridade, em que
um segmento de maior prioridade espera por um segmento de baixa prioridade, e "
alta latência" em que a resposta a interrupções não está pronta .
Muita pesquisa tem como objetivo eliminar os efeitos acima, tais como, garantind
o a não-bloqueando o progresso. Nenhum sistema é perfeito conhecido.