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:
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 .