Weno, tengo un problemilla a ver si alguien me puede echar un cable:
Considerar la siguiente modificacion de Peterson para 2 procesos para que se pueda implementar la exclusion mutua de N procesos:
Di si la solución es correcta. En caso contrario propon, si es posible las modificaciones necesarias para que lo sea.
Código:
int Turno=0;
BOOLEAN QuiereEntrar[N] = {FALSE,...,FALSE};
void Proceso(int i){
extern BOOLEAN QuiereEntrar[N];
extern int Turno;
int k;
while(TRUE){
QuiereEntrar[i] = TRUE;
Turno = (i+1) % N;
for(k=0;k<N;k++)
while(QuiereEntrar[k] && Turno==k);
/*sección Crítica*/
QuiereEntrar[i] = FALSE;
/*Sección residual*/
}
}
Se que el problema está en la variable Turno, ya que tal y como está tendriamos otra sección crítica ahí mismo, ya que puede llegar otro proceso y alterar la variable turno. Por tanto ...
Pense en convertir a la variable Turno en un array... pero no se si voy por buen camino ... me podeis ayudar¿?
Gracias !!