Algoritmo dos Filósofos em Pascal - Resolve parcialmente o problema

269 palavras 2 páginas
Esse algoritmo filoso_1 apresenta uma solução parcial do problema dos filósofos onde, cada uma dos filósofos pega um garfo ao mesmo tempo, sendo assim nenhum poderá comer, pois para comer eles precisam estar segurando dois garfos. Essa situação é conhecida como deadlock, onde o processo aguarda um recurso que nunca estará disponível.
A figura abaixo mostra como essa situação ocorrera:

Agora veremos o algoritmo em Pascal de uma forma simplificada que representa essa situação:
PROGRAM Filosofo_1; /* Nome do programa. */ VAR Garfos : ARRAY [0..4] of Semaforo := 1; /* Cria um array de Garfos com quatro elementos, que só poderá receber o valor 1 ou 0, nesse caso e atribuído 1. */ I : INTEGE; /* Cria uma variável para servir como contador. */

PROCEDURE Filosofo (I : INTEGER); /* É o procedimento do filosofo correspondente a variável contadora. */

BEGIN /* Inicia o processo. */ REPEAT /* Repete em quanto for verdadeira. */ Pensando; /* Irá executar se o filosofo estiver pensando. */ DOWN (Garfos [I]); /* Decrementa 1 na possição I de Garfos. */ DOWN (Garfos [(I+1) MOD 5]); /* Aqui irá mandar o valor do resultado para o semáforo. */ Comendo; /* Irá executar se o filósofo estiver comendo. */ UP (Garfos[I]); /*Incrementa 1 na posição I de Garfos. */ UP (Garfos[(I+1) MOD 5]); /*Aqui irá mandar o valor do resultado para o semáforo. */ UNTIL False; /* Finaliza quando for falso. */
END; /* Finaliza o processo. */

BEGIN /* Inicia o programa. */ PARBEGIN /* Executa os comandos concorrentemente em uma ordem imprevisível. */ FOR I := 0 TO 4 DO /* Conta de 0 até 4 */ Filosofo (I); /* Acontece a chamada do procedimento do filósofo correspondente a variável contadora. */ PAREND; /* Só encerrara quando todos os processos tiverem terminado. */
END. /* Finaliza o programa. */

Relacionados

  • Logica
    5223 palavras | 21 páginas
  • Ciencia da computação
    140878 palavras | 564 páginas
  • Historia dos computadores
    8295 palavras | 34 páginas
  • Infor
    8309 palavras | 34 páginas
  • Livro c#
    25045 palavras | 101 páginas
  • Sistemas de informação
    4936 palavras | 20 páginas
  • Cormem
    16414 palavras | 66 páginas
  • Texto
    18039 palavras | 73 páginas
  • Formando
    18990 palavras | 76 páginas
  • sistemas operacionais
    72668 palavras | 291 páginas