next up previous contents
Next: Exclusión mutua a nivel Up: Ayuda con hardware Previous: Decremento/incremento atómico (fetch-and-increment)   Índice General

Comparar-y-intercambiar (compare-and-swap)

La instrucción compare-and-swap (CAS) es una generalización de la instrucción test-and-set. La instrucción trabaja con dos variables, les llamamos C(de compare) y S (de swap) Se intercambia el valor en la memoria por S si el valor en la memoria es igual que C.

Es la operación que se usa por ejemplo en los procesadores de Intel y es la base para facilitar la concurrencia en la máquina virtual de Java 1.5 para dicha familia de procesadores.

Con dicha instrucción se puede realizar los protocolos de entrada y salida. ¿Cómo? (refTareaExclusionPrácticas).

Existe también una mejora del CAS, llamado double-compare-and-swab, que realiza dos CAS normales a la vez, el código, expresado a alto nivel, sería:

if  C1 equal to V1 and C2 equal to V2
  then
    set C1 to S1
    set C2 to S2
    return true
  else
    return false



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