1. Como exemplo de \textit{deadlock} involvendo recursos reutilizáveis, considere o cenário estabelecido entre 02 processos que estão competindo por recursos: ... neste cenário que seqüência p0, q0, p1, ... cria um "deadlock" ?
Steps Process P Steps Process Q ... ... p0 request( D ); q0 request( T ); p1 lock( D ); q1 lock( T ); p2 request( T ); q2 request( D ); p3 lock( T ); q3 lock( D ); p4 ... perform action ... q4 ... perform action ... p5 unlock( D ); q5 unlock( T ); p6 unlock( T ); q6 unlock( D );
2. Para o cenário apresentado a seguir, a seqüência p0, q0, p1, ... de execução é a que cria um "deadlock" ? ... há outra alternativa para termos um "deadlock"
Steps Process P1 Steps Process P2 ... ... p0 receive( P2 ); q0 receive( P1 ); ... ... p1 send( P2 ); q1 send( P1 ); ... ...
3. Seja a solução para o Problema dos Filósofos Jantando apresentada a seguir. Nesta solução, cada filósofo pega inicialmente o garfo da esquerda e depois o da direita. Após terminar de comer, os 02 garfos são recolocados na mesa. ... esta solução no entanto é passível de "deadlock"! Descreva como se dá o "deadlock".
program dining_philosopher; var fork: array[ 0 .. 4 ] of binary_semaphore (:= 1); i: integer; procedure philosopher( i: integer ) begin repeat think; wait( fork[i] ); wait( fork[(i+1) mod 5] ); eat; signal( fork[i] ); signal( fork[(i+1) mod 5] ); forever; end; /* Main Program */ begin parbegin philosopher( 0 ); philosopher( 1 ); philosopher( 2 ); philosopher( 3 ); philosopher( 4 ); parend; end;
Uma solução é considerar que somente 4 filósofos estão à mesa em um dado instante, o que garante que pelo menos um filósofo irá comer. Discuta os cenários nos quais apenas 3 e 2 filósofos estão ao mesmo tempo na sala. Como estas condições podem ser impostas?
4. Por que o estudo de mecanismos de Mútua Exclusão é importante no contexto de processo ? ... e no contexto de "deadlock" ?
5. Suponha que o \textit{quantum} de tempo de um dado escalonador de processos seja ajustável. Faça uma análise qualitativa do impacto da variação deste parâmetro no desempenho dos processos em execução.