Чтение-изменение-запись
В информатике . чтение-изменение-запись — это класс атомарных операций (таких как проверка и установка , выборка и добавление и сравнение и замена ), которые одновременно читают ячейку памяти и записывают в нее новое значение одновременно либо с совершенно новым значением, либо с некоторой функцией предыдущего значения. Эти операции предотвращают состояние гонки в многопоточных приложениях. Обычно они используются для реализации мьютексов или семафоров . Эти атомарные операции также широко используются при неблокирующей синхронизации .
Морис Херлихи (1991) ранжирует атомарные операции по их консенсусному числу следующим образом:
- ∞ : перемещение и замена из памяти в память, расширенная очередь, сравнение и замена , выборка и минусы , липкий байт , условная загрузка/сохранение (LL/SC) [1]
- 2 n - 2 : n -регистров присвоение
- 2 : проверка и установка , замена, выборка и добавление , очередь, стек
- 1 : атомарное чтение и атомарная запись.
Невозможно реализовать операцию, требующую заданного числа консенсуса, используя только операции с меньшим числом консенсуса, независимо от того, сколько таких операций используется. [2] Инструкции чтения-изменения-записи часто дают неожиданные результаты при использовании на устройствах ввода-вывода , поскольку операция записи может не влиять на тот же внутренний регистр , к которому осуществляется доступ при операции чтения. [3]
Этот термин также связан с уровнями RAID , которые выполняют фактические операции записи в виде атомарных последовательностей чтения-изменения-записи. [4] К таким уровням RAID относятся RAID 4 , RAID 5 и RAID 6 .
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Написание кода без блокировки: исправленная очередь» Херб Саттер : «Сравнение и замена (CAS)… широко доступно… Однако вместо этого некоторые системы предоставляют эквивалентно мощный метод с привязкой к нагрузке/сохранением (LL/SC)».
- ^ Херлихи, Морис (январь 1991 г.). «Синхронизация без ожидания» (PDF) . АКМ Транс. Программа. Ланг. Сист . 13 (1): 124–149. CiteSeerX 10.1.1.56.5659 . дои : 10.1145/114005.102808 . S2CID 2181446 . Проверено 20 мая 2007 г.
- ^ Massmind: «Проблема чтения-изменения-записи»
- ^ «Основные RAID-организации» . umass.edu . Архивировано из оригинала 24 февраля 2021 г. Проверено 4 октября 2013 г.