看操作系统看懵了,多 cpu 写 mem 是怎么保证一致性的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
garyox64
V2EX    操作系统

看操作系统看懵了,多 cpu 写 mem 是怎么保证一致性的?

  •  
  •   garyox64 2022-07-26 22:48:52 +08:00 1724 次点击
    这是一个创建于 1174 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看了一点分布式算法,个人理解分布式解决的本质的多进程修改数据时保持一致性的问题 联想到在操作系统内的类比场景,就是多 cpu 访问多内存,然后看了操作系统的书,都有讲多核调度,但是似乎都只是讲了 tsk 在多核的算力分配的场景 好奇难道不需要考虑多 cpu 写 mem 失败的场景吗(对操作系统不太熟悉) 比如:a=1 ; task A 是给 a+1 ; task B 是给 a+2 两个 task 同时在两个 cpu 上同时修改 a ,怎么保证一致性呢,操作系统的书里没有讲到这个东西,比较好奇

    6 条回复    2022-07-27 10:32:31 +08:00
    misdake
        1
    misdake  
       2022-07-26 22:55:51 +08:00
    都学到操作系统了,前面 CSAPP 里学的信号量、PV 还有印象么
    misdake
        2
    misdake  
       2022-07-26 23:23:55 +08:00
    看你写的内容,感觉像是把两个问题揉在一起提问:
    1. 你举的例子里,两个进程同时尝试读写同一个地址的时候,因为读写分别是原子操作但整体不是原子操作,可能会出现读读写写的错误情况,单核在上下文切换时也可能发生。这个要用信号量或等效的方法解决。资料 https://www.coursera.org/lecture/os-pku/xin-hao-liang-ji-pvcao-zuo-sbhMU
    2. 两个核心同时访问同一个地址,一个写一个读,在硬件层面,CPU 是否提供多核间的数据一致性,一致性保证到一个什么程度,是用怎样的方法保证的。这个可以从 CPU 缓存开始学,一直学到缓存一致性协议。资料 https://mp.weixin.qq.com/s/PDUqwAIaUxNkbjvRfovaCg
    garyox64
        3
    garyox64  
    OP
       2022-07-26 23:48:23 +08:00
    @misdake 不好意思 原来正文这个格式没有排版
    其实我说进程只是举例分布式的场景啦,其实想问的最终还是 多 cpu 写 mem 的一致性问题
    多 cpu 读写缓存这个书上也有讲的,所以我主要想了解的还是 多 cpu 读写 mem 的时候的一致性问题,我看了微信的资料,似乎并没有相关的介绍
    misdake
        4
    misdake  
       2022-07-27 00:07:52 +08:00
    @garyox64 #3
    如果是单机多进程分布的话,多 CPU 仍然是通过某种缓存一致的总线相连的,仍然能保证缓存一致性。读写 mem 其实就是在读写 cache ,所以这个天然就没问题。
    如果指的是多机的分布的话。内存不在同一个空间里,没办法直接写,要写一些基础设施来通过某种网络共享内存,很可能没有硬件的直接支持。这种情况下多机同时读写同一块数据要通过软件的方法来规避,尽量保证同一时间数据只有一个地方能读写,然后使用某种基于网络的同步机制,大家一起读。(即同时间最多 1 个读写,或者多个只读)
    yumenawei
        5
    yumenawei  
       2022-07-27 08:53:19 +08:00
    MESI 协议了解一下
    garyox64
        6
    garyox64  
    OP
       2022-07-27 10:32:31 +08:00
    @misdake https://www.cnblogs.com/yanlong300/p/8986041.html 找了一个资料,原来 MESI 的写回是通过 store buffer 写回的但是仍然不能 100%保证一致性,所以最后引入了 内存屏障的概念
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3641 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:09 PVG 08:09 LAX 17:09 JFK 20:09
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86