Ir al contenido

Registros safe, regular y atomic

🎯 Al terminar podrás

  1. Leer las siglas SRSW, MRSW y MRMW.
  2. Decir qué puede devolver una lectura solapada con una escritura en un registro safe, regular y atomic.
  3. Detectar en una línea de tiempo una inversión nuevo → viejo (regular pero no atómico).

Antes necesitas: Exclusión mutua: supuestos de Peterson

  • Visual mira el diagrama o la tabla y explica qué cambia en cada paso
  • Simulador predice el estado antes de pulsar el paso siguiente

Una ubicación de memoria (el nombre es histórico) que guarda un valor binario y soporta dos operaciones:

public interface Register<T> {
T read();
void write(T v);
}

T suele ser booleano o un entero de m bits.

SiglaSignificado
SRSWSingle-Reader Single-Writer
MRSWMulti-Reader Single-Writer
MRMWMulti-Reader Multi-Writer

El problema está en las lecturas que se solapan en el tiempo con una escritura.

RegistroLectura sin solapamientoLectura solapada con escrituras
Safeel último valor escritocualquier valor válido del dominio (basura legal)
Regularel último valor escritoel valor viejo o alguno de los nuevos que se están escribiendo
Atomicel último valor escritocomo regular y además linealizable

Un registro atómico se comporta como si cada operación ocurriera en un instante dentro de su intervalo (punto de linealización). Consecuencia práctica: no hay inversión nuevo→viejo. Si una lectura devolvió el valor nuevo, ninguna lectura que empiece después de que esa termine puede devolver el viejo.

Atomic ⇒ Regular ⇒ Safe.

¿Safe, regular o atómico?

Un escritor y varios lectores (MRSW). Haz clic en una lectura para cambiar el valor que devuelve y observa cómo cambia la clasificación.

tiempo →Escritorwrite(0)write(1)Lector ALector Bread(1)read(0)
✔ safe✔ regular✘ atómico (linealizable)
Cada lectura se solapa con write(1): puede devolver el valor viejo (0) o el nuevo (1), así que es regular. Pero read(1) terminó antes de que empezara read(0): esa inversión nuevo→viejo no es linealizable, así que NO es atómico.

Tres dimensiones independientes:

  1. Lectores y escritores: SRSW → MRSW → MRMW.
  2. Tamaño: booleano → m-valuado.
  3. Fuerza: safe → regular → atomic.

El resultado central del capítulo es que se puede construir un registro MRMW m-valuado atómico usando solo registros SRSW booleanos safe. Por eso algoritmos como Bakery son válidos «sin hardware especial».

La cadena de construcciones (Herlihy & Shavit, cap. 4)

Sección titulada «La cadena de construcciones (Herlihy & Shavit, cap. 4)»
PasoDe…A…Idea
1SRSW safeMRSW safeun arreglo con una copia por lector; el escritor escribe todas y cada lector lee la suya
2MRSW safe booleanoMRSW regular booleanoel escritor solo escribe si el valor cambia. Así, una lectura solapada devuelve el viejo o el nuevo, porque en un booleano no hay otra opción
3regular booleanoregular m-valuadocodificación unaria: m bits; se escribe el nuevo valor y se «borra hacia abajo»; el lector toma el primer bit en 1
4SRSW regularSRSW atómicomarca de tiempo: el escritor escribe (valor, ts) y el lector recuerda el último par y nunca devuelve uno más viejo
5SRSW atómicoMRSW atómicouna tabla n × n: cada lector, además, le escribe a los demás lo que leyó, para que nadie vea algo más viejo después
6MRSW atómicoMRMW atómicocada escritor lee todas las marcas, toma max + 1 (como Bakery) y escribe en su registro; el lector toma el par (ts, id) mayor

La conclusión es que la «atomicidad» que suponen Peterson y Bakery se puede fabricar en software a partir de lo más débil que existe, a costa de más memoria y más lecturas.

  • Dada una línea de tiempo de escrituras y lecturas, clasificar el registro (el simulador de arriba).
  • «¿Por qué el diagrama de la diapositiva 17 es regular pero no linealizable?» → read(1) termina antes de que empiece read(0), ambas solapadas con write(1). Cada una por separado es legal (viejo o nuevo), pero en un orden secuencial, después de ver el 1 no se puede volver a ver el 0.
  • «Un registro booleano safe, ¿es regular?» → Sí. Si la lectura solapada puede devolver cualquier valor del dominio 1, devuelve el viejo o el nuevo, a menos que la escritura no cambie el valor. Ese es el truco de la construcción de Herlihy: solo escribir si el valor cambia.

Autoevaluación

0/4 correctas · 0 respondidas
1. Un registro safe, ante una lectura que NO se solapa con escrituras, devuelve…
2. Escritura write(1) en curso (valor previo 0). Dos lecturas solapadas: la primera devuelve 1, la segunda (que empieza después de que la primera termina) devuelve 0. El registro puede ser…
3. ¿Qué significa MRSW?
4. Linealizable significa…

📈 ¿Qué tan bien lo dominas?

Elige pensando en lo que hiciste, no en lo que leíste. Para marcar 3 tienes que haber resuelto un ejercicio nuevo sin pistas y haberlo justificado. Si solo lo leíste y sientes que «ya entendí», todavía es un 1.

Fuente ·for_partial/pending_themes/Sem0_6-OST-About registers.pdf · Herlihy & Shavit, The Art of Multiprocessor Programming, cap. 4