stringtranslate.com

Читать–изменить–записать

В информатике чтение-изменение-запись — это класс атомарных операций (таких как проверка-и-установка , выборка-и-добавление и сравнение-и-обмен ), которые одновременно считывают ячейку памяти и записывают в нее новое значение , либо совершенно новое значение, либо некоторую функцию предыдущего значения. Эти операции предотвращают состояние гонки в многопоточных приложениях. Обычно они используются для реализации мьютексов или семафоров . Эти атомарные операции также активно используются в неблокируемой синхронизации .

Морис Херлихи (1991) ранжирует атомарные операции по их консенсусным числам следующим образом:

Невозможно реализовать операцию, требующую заданного числа консенсуса, только с операциями с меньшим числом консенсуса, независимо от того, сколько таких операций используется. [2] Инструкции чтения-изменения-записи часто приводят к неожиданным результатам при использовании на устройствах ввода-вывода , поскольку операция записи может не затрагивать тот же внутренний регистр , к которому будет осуществляться доступ при операции чтения. [3]

Этот термин также связан с уровнями RAID , которые выполняют реальные операции записи как атомарные последовательности чтения-изменения-записи. [4] Такие уровни RAID включают RAID 4 , RAID 5 и RAID 6 .

Смотрите также

Ссылки

  1. ^ «Написание кода без блокировок: исправленная очередь» Герба Саттера : «Сравнение и обмен (CAS) ... широко доступен ... Однако некоторые системы вместо этого предоставляют эквивалентно мощный метод с привязкой к загрузке/условным сохранением (LL/SC)».
  2. ^ Herlihy, Maurice (январь 1991 г.). «Wait-free synchronization» (PDF) . ACM Trans. Program. Lang. Syst . 13 (1): 124–149. CiteSeerX  10.1.1.56.5659 . doi :10.1145/114005.102808. S2CID  2181446 . Получено 2007-05-20 .
  3. ^ Massmind: «Проблема чтения–изменения–записи»
  4. ^ "Basic RAID Organizations". umass.edu . Архивировано из оригинала 2021-02-24 . Получено 2013-10-04 .