You are on page 1of 2

Jantar dos filósofos

O problema do jantar dos filósofos, figurativamente falando: temos um
número ‘x’ pessoas em uma mesa, cada uma com um prato de espaguete e
um garfo (um recurso compartilhado), mas para comer seu próprio
espaguete ele precisa do seu próprio garfo mais o garfo do vizinho. Eles
podem ficar em 3 estados, pensando, famintos e comendo, e pelo fato de
todos poderem ficar famintos ao mesmo tempo, gera-se conflito, ou do
ponto de vista computacional um deadlock.
A solução deve se a implementação de 2 tipos de semáforos de controle,
um para avisar que determinado processo está com intenção de entrar na
região crítica, e outro que será individual para cada processo que impedirá
ou não que determinado processo acesse a região crítica, sendo assim
funcionando da seguinte maneira (em uma situação hipotética) : 5
processos, no caso lidos de 0 a 4, o processo 0 inicia, o primeiro semáforo é
‘apagado’(indicando que ele tem intenção de entrar na região critica), após
fazer isso ele checa se o anterior dele (no caso o 4) e o posterior (no caso o
1) estão comendo (pois se estiverem os recursos estão ocupados), se não
estiverem seu semáforo acende e ele muda seu estado para “comendo”
após isso apaga (agora fazendo uso de seu recurso mais o do vizinho
número 1). Mas temos que lembrar do clock, temos os outros processos,
digamos que o tempo do processo 0 tenha acabado, o do ‘1’ inicia, seu
semáforo passa a indicar que ele tem a intenção de utilizar a região crítica,
mas quando ele vai ser testado, é visto que o processo 0 está a utilizar seu
recurso, seu semáforo individual nem chega a acender e ele fica em loop
até que seu tempo acabe. Sendo assim apenas o processo 0 e o processo 2
teriam passado para o estado “comendo” pois o processo0 está utilizando o
recurso do processo1, e o processo 2 está utilizando o do 3, restando o 4
que não pode pegar de mais ninguém. Quando voltar a vez do processo 0 e
ele terminar de “comer” seu semáforo volta a indicar interesse em mexer
na região crítica, após isso ele “devolve” o recurso dos vizinhos, e os coloca
em teste para checar se seus determinados anteriores e posteriores
estariam comendo, se não, como eles já teriam os recursos disponíveis,
poderiam começar a “comer” e assim sucessivamente, até que os
processos se encerrem.
Escritores e Leitores
Basicamente é um esquema de competição e ordenação, onde temos
leitores, escritores e um banco de dados, em que podemos ter um escritor
alterando um determinado banco de dados e enquanto isso, não é possível
ter leitores (pois podem ler informações erradas ) e nem outros escritores
(para evitar conflito de informações), e quando o escritor termina a edição,
leitores podem ter acesso, inclusive se novos leitores chegarem, podem ser
admitidos, porém, se um escritor quiser ter acesso ao banco de dados, ele
seria suspenso, até que os leitores terminassem, o problema é, em alguns
casos os leitores não parariam de chegar, logo o escritor esperaria
infinitamente. Uma solução para determinada situação foi, tratar a chegada
de um novo escritor como um “divisor de aguas”, sendo assim quando um
escritor solicitasse acesso ao banco de dados ele ficaria em espera, e os
leitores que fossem chegando após o escritor, esperariam a vez do mesmo e

Barbeiro sonolento Podemos levar o problema do barbeiro sonolento de forma parecida com o exemplo dado em sala. afim de evistar conflito ou perda de clientes desnecessária. Neste problema temos a presença do mutex para controlar se algum processo está ou não em sua área crítica. Dentro das áreas críticas também temos comandos para que cada processo se ponha para dormir em caso de inexistencia ou ocupação do outro. que pode diminui-la. no caso atual temos o Cliente. sobre um gerador e um leitor de informação porém. Caso estejam. nenhum outro cliente ou o barbeiro poderão alterar a fila.somente após o termino da edição eles poderiam ter acesso ao banco de dados. se algum processo está alterando a fila de clientes em espera. além da presença de comandos para acordar o outro processo em caso de alteração da condição que os colocou para dormir. que pode acrescentar a fila de Clientes em espera e o Barbeiro. ou seja. .