Escolar Documentos
Profissional Documentos
Cultura Documentos
Observaciones:
Individual
Duracin 30 minutos
1. Los siguientes algoritmos muestran cmo se define y se implementa la
exclusin mutua con la instruccin TSL. Se pide: a) elaborar y utilizar la
prueba de escritorio para explicar cmo funciona esta solucin, cundo
falla y cuando no? b) por qu se dice que esta solucin no funciona en
sistemas multiprocesador?
Definicin de la instruccin TSL
boolean TestAndSet(boolean
*target){
boolean rv = *target; //se hace
una copia
*target = TRUE; //se activa el
cerrojo
return rv; //Se retorna el valor
anterior
}
Implementacin de la exclusin
mutua con TSL
do {
...
//solicitud para entrar en seccin
crtica
while( TestAndSet(&cerrojo) );
//SECCIN CRTICA...
cerrojo = FALSE;
//SECCIN RESTANTE...
} while(TRUE);
Ejemplo:
Se supone que un sistema multiprocesador de 4 CPU en el cual los 4
procesadores tiene cada uno un proceso que quiere acceder a su regin
critica, la cual est siendo utilizada por un proceso dentro del primer
procesador, entonces los otros tres procesadores estn esperando a que
el procesador 1 desocupe la memoria compartida generando una espera
ocupada y un desperdicio CPU.
2. Los siguientes algoritmos muestran cmo se define y se implementa la
exclusin mutua con la instruccin Swap. Se pide elaborar y utilizar la
prueba de escritorio para explicar: a) cmo funciona esta solucin,
cundo falla y cuando no? b) por qu se dice que esta solucin puede
presentar los problemas de inversin de prioridad y deadlock?
Definicin de la instruccin Swap
(Tener en cuenta que es una
representacin y todo se realiza
atmicamente)
void Swap(boolean *a, boolean
*b){
boolean temp = *a;
*a = *b;
*b = temp;
}
Implementacin de la exclusin
mutua utilizando Swap
do {
boolean clave = TRUE;
//Solicitar cerrojo, usando Swap:
while( clave == TRUE )
Swap (&cerrojo, &clave);
//SECCIN CRTICA ...
cerrojo = FALSE;
//SECCIN RESTANTE ...
} while(TRUE);