Nothing Special   »   [go: up one dir, main page]

跳转到内容

Read-modify-write:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
无编辑摘要
无编辑摘要
第7行: 第7行:
Read-modify-write指令用于IO端口时,可能会产生出乎意料的结果,如无法给一个比特置位。这往往是因为写操作并不影响到读操作的源寄存器。<ref>{{Cite web |url=http://techref.massmind.org/techref/readmodwrite.htm |title=Massmind: "The read–modify–write problem" |accessdate=2017-11-22 |archive-date=2017-12-01 |archive-url=https://web.archive.org/web/20171201033821/http://techref.massmind.org/techref/readmodwrite.htm |dead-url=no }}</ref>
Read-modify-write指令用于IO端口时,可能会产生出乎意料的结果,如无法给一个比特置位。这往往是因为写操作并不影响到读操作的源寄存器。<ref>{{Cite web |url=http://techref.massmind.org/techref/readmodwrite.htm |title=Massmind: "The read–modify–write problem" |accessdate=2017-11-22 |archive-date=2017-12-01 |archive-url=https://web.archive.org/web/20171201033821/http://techref.massmind.org/techref/readmodwrite.htm |dead-url=no }}</ref>


[[RAID]]也使用这一术语描述原子操作的read-modify-write序列。<ref>{{cite web| url = http://www.ecs.umass.edu/ece/koren/architecture/Raid/basicRAID.html| title = Basic RAID Organizations | accessdate = 2013-10-04| website = umass.edu| archive-date = 2013-10-24
[[RAID]]也使用这一术语描述原子操作的read-modify-write序列。<ref>{{cite web| url = http://www.ecs.umass.edu/ece/koren/architecture/Raid/basicRAID.html| title = Basic RAID Organizations | accessdate = 2013-10-04| website = umass.edu| archive-date = 2013-10-24| archive-url = https://web.archive.org/web/20131024014416/http://www.ecs.umass.edu/ece/koren/architecture/Raid/basicRAID.html
| archive-url = https://web.archive.org/web/20131024014416/http://www.ecs.umass.edu/ece/koren/architecture/Raid/basicRAID.html
| dead-url = no
| dead-url = no
}}</ref> Such RAID levels include [[RAID&nbsp;4]], [[RAID&nbsp;5]] and [[RAID&nbsp;6]].
}}</ref> Such RAID levels include [[RAID&nbsp;4]], [[RAID&nbsp;5]] and [[RAID&nbsp;6]].

2021年11月27日 (六) 10:26的版本

读-修改-写(read-modify-write)是计算机科学中的一个原子操作(atomic operation,类似的还有test-and-set, fetch-and-add, compare-and-swap等),操作过程是读一个内存位置(或IO端口),修改其值,再写回原位置。[1][2]

必须要先读操作的一个原因是,系统架构往往只允许字(word)级的读写,必须先读出那些不做修改的比特,保持不变再写回。写成C语言语句类似于:

*pRegister |= SOME_BIT;

Read-modify-write指令用于IO端口时,可能会产生出乎意料的结果,如无法给一个比特置位。这往往是因为写操作并不影响到读操作的源寄存器。[3]

RAID也使用这一术语描述原子操作的read-modify-write序列。[4] Such RAID levels include RAID 4, RAID 5 and RAID 6.

参见

参考文献

  1. ^ "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."
  2. ^ Herlihy, Maurice. Wait-free synchronization (PDF). ACM Trans. Program. Lang. Syst. January 1991, 13 (1): 124–149 [2007-05-20]. doi:10.1145/114005.102808. (原始内容存档 (PDF)于2011-06-05). 
  3. ^ Massmind: "The read–modify–write problem". [2017-11-22]. (原始内容存档于2017-12-01). 
  4. ^ Basic RAID Organizations. umass.edu. [2013-10-04]. (原始内容存档于2013-10-24).