Você está na página 1de 2

Semântica Formal e concorrência

Ações:

a = pega garfo da esquerda

b = pega garfo da direita

c = larga garfo da esquerda

d = larga garfo da direita

e = comer

f = pensar

Estados:

A = com garfo da esquerda

B = com garfo da direita

C = garfo da esquerda livre

D = garfo da direita livre

E = comendo

F = pensando

1)

W = (F; (((D?;b) U (~D?;((A?; c;( f; F)*) U (~A?;(f;F)*)))) || ((C?;a) U (~C?;((B?;d;(f;F)*) U (~B?;


(f;F)*)))); (A?;B?;(e;E)*); (((A?;c) || (D?;d)); (u;A)*)

Resposta: W1 || w2 || W3 || W4 || ... || Wn, n = número de filósofos

2)

W = (F->(D->[b])) (C->[a])

W1 &$ W2 &$ W3 &$ W4 &$ ... &$ Wn, n = número de filósofos

Nesta situação, todos os filósofos irão pegar o garfo que está imediatamente a sua direita, e
após isso irá ver se o garfo a sua esquerda também está livre e tentará pegá-lo, porém após
todos os filósofos pegarem o garfo imediatamente a sua direita, nenhum garfo mais estará
disponível, portanto os filósofos ficariam eternamente esperando um garfo a sua esquerda
ficar disponível, o que não irá ocorrer, sendo assim, um deadlock.

3)

A fórmula é falsa, pois existem 4 ou mais filósofos, ou seja, é impossível que todos os filósofos
consigam realizar a fórmula ao mesmo tempo, pois todos irão pegar ao mesmo tempo
imediatamente a sua direita, porém existem n garfos e n filósofos, logo depois de pegarem o
garfo imediatamente a sua esquerda, ficariam esperando o da esquerda ficar livre, porém isso
nunca irá ocorrer, portanto a fórmula não é verdadeira.

Você também pode gostar