|
In computer science, read-modify-write is a class of atomic operations (such as test-and-set, fetch-and-add, and compare-and-swap) that both read a memory location and write a new value into it simultaneously, either with a completely new value or some function of the previous value. These operations prevent race conditions in multi-threaded applications. Typically they are used to implement mutexes or semaphores. These atomic operations are also heavily used in non-blocking synchronization. Maurice Herlihy (1991) ranks atomic operations by their ''consensus numbers,'' as follows: * ''∞'': memory-to-memory move and swap, augmented queue, compare-and-swap, fetch-and-cons, sticky byte, load-link/store-conditional (LL/SC)〔("Writing Lock-Free Code: A Corrected Queue" ) by Herb Sutter: "Compare-and-swap (CAS) is ... widely available ... However, some systems instead provide the equivalently powerful load-linked/store-conditional (LL/SC) instead."〕 * ''2n - 2'': n-register assignment * ''2'': test-and-set, swap, fetch-and-add, queue, stack * ''1'': atomic read and atomic write It is impossible to implement an operation that requires a given consensus number with only operations with a lower consensus number, no matter how many of such operations one uses. Read-modify-write instructions often produce unexpected results when used on I/O devices, as a write operation may not affect the same internal register that would be accessed in a read operation.〔(Massmind: "The read–modify–write problem" )〕 This term is also associated with RAID levels that perform actual write operations as atomic read-modify-write sequences.〔(【引用サイトリンク】 Basic RAID Organizations )〕 Such RAID levels include RAID 4, RAID 5 and RAID 6. == See also == * Read-erase-modify-write 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Read-modify-write」の詳細全文を読む スポンサード リンク
|