En informática , leer, modificar y escribir es una clase de operaciones atómicas (como probar y establecer , buscar y agregar y comparar e intercambiar ) 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 condiciones de carrera en aplicaciones de subprocesos múltiples. Normalmente se utilizan para implementar mutex o semáforos . Estas operaciones atómicas también se utilizan mucho en la sincronización sin bloqueo .
Maurice Herlihy (1991) clasifica las operaciones atómicas por sus números de consenso , de la siguiente manera:
- ∞ : movimiento e intercambio de memoria a memoria, cola aumentada, comparación e intercambio , recuperación y contras , byte fijo , enlace de carga / condicional de almacenamiento (LL / SC) [1]
- 2n - 2 : asignación de n registros
- 2 : probar y configurar , intercambiar, buscar y agregar , poner en cola, apilar
- 1 : lectura atómica y escritura atómica
Es imposible implementar una operación que requiere un número de consenso dado con solo operaciones con un número de consenso más bajo, sin importar cuántas de estas operaciones se utilicen. [2] Las instrucciones de lectura, modificación y 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 y escritura. [4] Estos niveles de RAID incluyen RAID 4 , RAID 5 y RAID 6 .
Ver también
Referencias
- ^ "Escribir código sin bloqueo: una cola corregida" por Herb Sutter : "Comparar e intercambiar (CAS) está ... ampliamente disponible ... (LL / SC) en su lugar ".
- ^ Herlihy, Maurice (enero de 1991). "Sincronización sin espera" (PDF) . ACM Trans. Programa. Lang. Syst . 13 (1): 124-149. CiteSeerX 10.1.1.56.5659 . doi : 10.1145 / 114005.102808 . Consultado el 20 de mayo de 2007 .
- ^ Massmind: "El problema de lectura, modificación y escritura"
- ^ "Organizaciones RAID básicas" . umass.edu . Consultado el 4 de octubre de 2013 .