[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: [reverbel-mac438] [MAC438] Exercícios do cap. 3



[Esqueci de mudar a codificação do meu mailer para ISO 8859-1 antes de
enviar a mensagem anterior, que foi arquivada de modo ilegível pelo
mhonarc. :-( ]

Solução do exercício 3.2:

int lock = 1;                   /* shared lock (initially open) */

process CS[i = 1 to n] {
    int sign;

    while (true) {
        DEC(lock, sign);        /* entry protocol */
        while (sign == 1) {
            INC(lock, sign); 
            skip; 
            DEC(lock, sign);
        }
        critical section;      
        INC(lock, sign);        /* exit protocol */
        noncritical section;
    }
}

Reverbel

On Sun, 2006-04-30 at 17:35 -0300, Francisco Reverbel wrote:
> Se a gente puder usar alguma instrução especial atômica (tipo
> "test-and-set") para resolver o problema da região crítica, em geral não
> vai ter muita diferença entre a solução para 2 processos e a solução
> para n processos. A dificuldade é geralmente a mesma.
> 
> Para os exercícios 3.2 e 3.3, a dica é olhar para a solução com a
> "test-and-set", que está na figura 3.3 do Andrews, e tentar trocar o TS
> por outra instrução atômica, como DEC ou Swap.
> 
> Vou mandar outra mensagem com uma solução para o exercício 3.3. Façam
> esse exercício *antes* de ler a minha próxima mensagem para a lista!
> 
> Reverbel
> 
> On Sun, 2006-04-30 at 14:18 -0300, Mariana Bravo wrote:
> > Olá!
> > 
> > Estou estudando o capítulo 3 e tentando fazer os exercícios indicados.
> > 
> > Alguém tem alguma DICA de como resolver o ex 3.2? Ou o 3.3?
> > 
> > Tentei simplificar para resolver com apenas 2 processos, mas ainda sim me
> > falta criatividade.
> > 
> > Mariana
>