Registros safe, regular y atomic
🎯 Al terminar podrás
- Leer las siglas SRSW, MRSW y MRMW.
- Decir qué puede devolver una lectura solapada con una escritura en un registro safe, regular y atomic.
- 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
¿Qué es un registro?
Sección titulada «¿Qué es un registro?»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.
Quién lee y quién escribe
Sección titulada «Quién lee y quién escribe»| Sigla | Significado |
|---|---|
| SRSW | Single-Reader Single-Writer |
| MRSW | Multi-Reader Single-Writer |
| MRMW | Multi-Reader Multi-Writer |
Qué garantiza cuando hay concurrencia
Sección titulada «Qué garantiza cuando hay concurrencia»El problema está en las lecturas que se solapan en el tiempo con una escritura.
| Registro | Lectura sin solapamiento | Lectura solapada con escrituras |
|---|---|---|
| Safe | el último valor escrito | cualquier valor válido del dominio (basura legal) |
| Regular | el último valor escrito | el valor viejo o alguno de los nuevos que se están escribiendo |
| Atomic | el último valor escrito | como 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.
Simulador
Sección titulada «Simulador»¿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.
El espacio de registros
Sección titulada «El espacio de registros»Tres dimensiones independientes:
- Lectores y escritores: SRSW → MRSW → MRMW.
- Tamaño: booleano → m-valuado.
- 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)»| Paso | De… | A… | Idea |
|---|---|---|---|
| 1 | SRSW safe | MRSW safe | un arreglo con una copia por lector; el escritor escribe todas y cada lector lee la suya |
| 2 | MRSW safe booleano | MRSW regular booleano | el 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 |
| 3 | regular booleano | regular m-valuado | codificación unaria: m bits; se escribe el nuevo valor y se «borra hacia abajo»; el lector toma el primer bit en 1 |
| 4 | SRSW regular | SRSW atómico | marca de tiempo: el escritor escribe (valor, ts) y el lector recuerda el último par y nunca devuelve uno más viejo |
| 5 | SRSW atómico | MRSW atómico | una 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 |
| 6 | MRSW atómico | MRMW atómico | cada 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.
Cómo lo preguntarían
Sección titulada «Cómo lo preguntarían»- 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 empieceread(0), ambas solapadas conwrite(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 respondidaswrite(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…📈 ¿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