多CPU环境中,同一内存地址的读写同时进行的时候会发现什么情况?

DarknessTM 2007-05-23 11:42:55
硬件方面有对内存访问的序列化限制吗?

假设A地址的 初始数据是B

2个线程在进行操作,其中1个线程对A地址进行数据更新,更新为B1
另一个线程正在读取A的数据,会得到什么数据?

这2个步骤正好同时进行
...全文
789 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
samsun2000 2007-06-04
  • 打赏
  • 举报
回复
很多解决方法,基于软硬件的都有。如果是catch的,有基于总线的MESI方法,基于目录的管理方法。如果是普通内存,有load before write方法来保证原子写。内容很多,建议看书
c157xigua 2007-06-01
  • 打赏
  • 举报
回复
应该不可能吧。在其中一个cpu写数据的过程中。内存传输数据的总线应该处在写数据的状态。而内存的数据总线应该只有一个吧。
Cnwanglin 2007-05-24
  • 打赏
  • 举报
回复
单核CPU是不会发生的

多核按照单核的理解应该发生,但是它为什么没发生呢,同样的软件系统

说明多核的CPU有控制,有更好的解决方案
foxdeng 2007-05-24
  • 打赏
  • 举报
回复
硬件上有防护这种情况的机制措施,严格时间上的同时读写同一地址内存是不会出现的。
DarknessTM 2007-05-24
  • 打赏
  • 举报
回复
我的意思不是说如何解决这个问题,而是这个现象可不可能发生(基本指目前的PC构架),发生的话会是什么结果
likexin 2007-05-24
  • 打赏
  • 举报
回复
依赖于机器 如果没有硬件保护 可以用一些相关指令,在读数据时锁内存 TSL
大熊猫侯佩 2007-05-23
  • 打赏
  • 举报
回复
lock 锁前缀
  • 打赏
  • 举报
回复
即便没有Cache,多处理器也是共享内存控制器的,应该不会出现同时读写的事。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧