next up previous contents
Next: Intercambiar (exchange) Up: Ayuda con hardware Previous: Ayuda con hardware   Índice General

Comprobar-y-poner (Test-and-set)

La instrucción test-and-set (TAS) implementa una comprobación a cero del contenido de una variable en la memoria al mismo tiempo que varía su contenido en caso que la comprobación se realizó con el resultado verdadero.

Así se puede realizar la exclusión mutua con

Initially:  vi is equal false
            C  is equal true

a: loop
b:   non-critical section
c:   loop
d:     if C equals true            ; atomic test-and-set
e:       set C to false and exit
f:   endloop
g:   set vi to true
h:   critical section
i:   set vi to false
j:   set C to true
h: endloop

En caso de un sistema multi-procesador hay que tener cuidado que la operación test-and-set esté realizada en la memoria compartida.

Teniendo solamente una variable para la sincronización de varios procesos el algoritmo arriba no garantiza una espera limitada de todos los procesos participando. ¿Por qué?

Para conseguir una espera limitada se implementa un protocolo de paso de tal manera que un proceso saliendo de su sección crítica da de forma explícita paso a un proceso esperando (en caso que tal proceso exista). (refTareaExclusionPrácticas)



© 2005, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática