UTNianos

Versión completa: [Sistemas Operativos] [Aporte] Guía Sincronización 2011 resuelta
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Guía Sincronización 2011 resuelta por mi.
Tengo una duda con el ejercicio que se patea un penal

En la resolución no entiendo porque hay un semaforo gol ya existiendo la variable booleana GOL y la funcion validartiro()
Tampoco me cierra el semaforo 'arbitro', existiendo el semaforo 'orden'. Lo demas lo tengo igual



vector de semáforos
jugador[5]=[1,0,0,0,0];

pos_jug,pos_arq,orden,arbitro,gol,pateo=0

//Proceso ÁRBITRO

while(TRUE){

wait(pos_jug);

wait(pos_arq);

dar_orden();

signal(orden);

wait(arbitro);

validar_tiro();

signal(gol);

signal(gol);

signal(jugador[siguiente()]);
}

//Proceso JUGADOR
while(TRUE){

wait(jugador[actual()]);

posicionarse();

signal(pos_jug);

wait(orden);

patear();

signal(pateo);

wait(gol);

if (GOL==TRUE){
festejar();
else{
lamentarse();
}

//Proceso ARQUERO
while(TRUE){

posicionarse();

signal(pos_arq);

wait(pateo);

atajar();

signal(arbitro);

wait(gol);

if (GOL==FALSE){
festejar();
else{
lamentarse();
}


Nadie me explica me preguntonta?
quizas un toque tarde, pero el semaforo gol lo tenes que poner, porque fijate que jugador o arquero podrian validar gol antes de que el arbitro ejecute la instruccion validar tiro... nunca se puede depender de los tiempos de ejecucion

y el semaforo arbitro, es porque el arbitro no puede validar el tiro antes de que el tipo ataje, asi que una vez que ataje el arquero, despierta a arbitro para que pueda validar el tiro

saludos !
El 2 no debería ser así?

sem_a = 3
sem_mutex=1

while (TRUE){
wait(sem_a)
wait (sem_mutex);
id_recurso = pedir_recurso();
signal (sem_mutex);
usar_recurso(id_recurso);
signal(sem_a)
}

Puede pasar que se asignen el mismo recurso a los 3 procesos que ingresan.


Para el 9, es lo mismo si pongo signal(vec_sem_jugador[siguiente()]) al final del proceso Jugador en vez del proceso Arbitro?

Después del festejo habilita a otro jugador a posicionarse. Por lo general es así, hasta que no terminó de patear no se posiciona el próximo.
URLs de referencia