[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
- Subject: Re: [reverbel-mac438] [MAC438] Exercícios do cap. 3
- From: Francisco Reverbel <reverbel@xxxxxxxxxx>
- Date: Sun, 30 Apr 2006 17:52:53 -0300
[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
>