Anda di halaman 1dari 3

Taller en Clase Instrucciones TSL y SWAP

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);

a)cmo funciona esta solucin, cundo falla y cuando no?


La instruccin TSL funciona as: lee el contenido de una palabra de
memoria en un registro para despus almacenar un valor distinto de
cero en esa direccin de memoria.
Cundo falla? Falla cuando el proceso antes de hacer la solicitud a TSL
establece la variable compartida cerrojo en cero por tanto siempre va a
entrar a la regin crtica aun cuando otro proceso est en ella.
Cundo No?
Cuando la variable compartida cerrojo se establece con valor igual a 0
en el momento indicado es decir justo despus de salir de la seccin
crtica.
b) por qu se dice que esta solucin no funciona en sistemas
multiprocesador?
La instruccin TSL est diseada para trabajar con sistemas
multiprocesadores, ya que esta tiene un mecanismo que garantiza la
exclusin mutua para este tipo de sistemas, el cual consiste en lo
siguiente: La CPU que ejecuta la instruccin TSL cierra el bus de
memoria para prohibir a las dems CPU el acceso a la memoria
compartida hasta que termine de utilizarla, sin embargo la funcionalidad
para este tipo de sistemas es afectado por esta instruccin debido a que
provoca una espera ocupada necesaria que se constituye en un

desperdicio de tiempo de CPU y a su vez puede generar efectos


inesperados como espera indefinida invalidando as el objetivo que
persigue en los sistemas multiprocesadores.

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);

Por qu se dice que esta solucin puede presentar los problemas de


inversin de prioridad y deadlock?
Este algoritmo al tratar de dar solucin a exclusin mutua utiliza espera
ocupada y esto en ciertos casos puede generar inversin de prioridad
miremos la siguiente ilustracin.
Al considerar una computadora con dos procesos H con mxima
prioridad y L, con menor prioridad. Las reglas de planificacin son tales
que H se ejecuta siempre que est en estado listo. En cierto momento,
con L en su regin critica, H est listo para su ejecucin (por ejemplo,
termina una operacin de E/S). H comienza una espera ocupada, pero
como L nunca es planificada cuando H est en ejecucin, L nunca sale
de su regin crtica, por lo que H hace un ciclo infinito. Esta situacin se

denomina a veces como el problema de inversin de prioridad [1] y en


este mismo ejemplo L est bloqueado porque no puede terminar su
seccin critica generando as un deadlock.

Bibliografa:TANENBAUM, ANDREW S. Sistemas Operativos


Modernos, 2 Edicin, Pearson Education, 2003 pag 43,44,45.[1]
Adjuntos: pruebas de escritorio TSL y SWAP documentos excel.

Anda mungkin juga menyukai