找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 396|回复: 2

关于原子性和数据一致性的理解

[复制链接]

37

主题

37

回帖

317

积分

至尊会员

积分
317

至尊会员

发表于 2024-5-21 22:10:08 | 显示全部楼层 |阅读模式
X86底层实现原子性,

1、对于单处理器使用关闭中断方式(关闭中断后操作系统的调度程序就不能被执行了);
2、对于多处理器来说可以用 锁总线技术(一些指令前面可以加lock指令前缀,让这条指令的整个处理过程不被打断,保证一气呵成);
3、个别指令 自身就有原子特性;
4、防止指令重排序mfence内存屏障;
5、多处理器缓存之间、以及同一处理器不同核心之间  数据一致性问题使用MESI协议来保证数据的一致性;

      针对在X86处理器上开发的  操作系统  就是利用  处理器上述5种手段来实现 原子性 和数据一致性,然后操作系统封装成了API做成 系统调用 供应用层来调用以实现 原子性 和  数据一致性,
比如  POSIX提供的 pthread.h 和 Pelles在C11标准中在自己的标准库里实现的thread.h ,其实它们两的底层 都是调用操作系统提供的 原子性 和 数据一致性的系统调用API来完成的......

再往上抽象比如Java语言,由于Java是由C/C++开发的,所以Java语言中的关于  原子性的关键synchronized 和  数据一致性的volatie关键字  底层是用实现它的相关C编译器带的标准库或者POSIX接口来实现的.........

不知道我的理解对不对.........烦请老师帮我指正!

350

主题

281

回帖

2834

积分

管理员

积分
2834
发表于 2024-5-22 11:59:12 | 显示全部楼层
基本上没什么问题。

点评

老师,像ARM、MIPS、Power、RISC、LoongArch等处理器,他们在指令集方面肯定也有类似x86这样的原子性和数据一致性的功能,只不过操作系统给封装起来了,让我们上层应用层再编写原子性代码逻辑时不用考虑低层处理器架   发表于 2024-5-22 15:06
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2024-9-17 03:41 , Processed in 0.231820 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表