En informática , la lectura-modificación-escritura es una clase de operaciones atómicas (como test-and-set , fetch-and-add y compare-and-swap ) que leen una ubicación de memoria y escriben un nuevo valor en ella simultáneamente, ya sea con un valor completamente nuevo o alguna función del valor anterior. Estas operaciones evitan las condiciones de carrera en aplicaciones multiproceso. Normalmente se utilizan para implementar mutexes o semáforos . Estas operaciones atómicas también se utilizan mucho en la sincronización no bloqueante .
Maurice Herlihy (1991) clasifica las operaciones atómicas según sus números de consenso , de la siguiente manera:
- ∞ : movimiento e intercambio de memoria a memoria, cola aumentada, comparación e intercambio , búsqueda y comparación, byte fijo, carga-enlace/almacenamiento condicional (LL/SC) [1]
- 2 n − 2 : asignación de registro n
- 2 : probar y configurar , intercambiar, buscar y agregar , cola, pila
- 1 : lectura atómica y escritura atómica
Es imposible implementar una operación que requiere un número de consenso dado solo con operaciones con un número de consenso menor, sin importar cuántas de esas operaciones se utilicen. [2] Las instrucciones de lectura-modificación-escritura a menudo producen resultados inesperados cuando se utilizan en dispositivos de E/S , ya que una operación de escritura puede no afectar el mismo registro interno al que se accedería en una operación de lectura. [3]
Este término también está asociado con los niveles RAID que realizan operaciones de escritura reales como secuencias atómicas de lectura-modificación-escritura. [4] Dichos niveles RAID incluyen RAID 4 , RAID 5 y RAID 6 .
Véase también
Referencias
- ^ "Escritura de código sin bloqueos: una cola corregida" de Herb Sutter : "Comparar e intercambiar (CAS) está... ampliamente disponible... Sin embargo, algunos sistemas proporcionan en cambio el equivalente y poderoso sistema LL/SC con almacenamiento condicional y vinculado a carga".
- ^ Herlihy, Maurice (enero de 1991). "Sincronización sin espera" (PDF) . ACM Trans. Program. Lang. Syst . 13 (1): 124–149. CiteSeerX 10.1.1.56.5659 . doi :10.1145/114005.102808. S2CID 2181446. Consultado el 20 de mayo de 2007 .
- ^ Massmind: "El problema de leer-modificar-escribir"
- ^ "Organizaciones RAID básicas". umass.edu . Archivado desde el original el 24 de febrero de 2021 . Consultado el 4 de octubre de 2013 .