Python模块:os.path模块的路径拼接与判断
2026/6/18 9:19:23
在学习 DSB 和 ISB 之前,我们先明白一个前提 ——现代 CPU 会 自行优化,这些优化在普通场景下没问题,但在多核协作、操作硬件时可能出 bug:
DSB 和 ISB 就是用来 “纠正” 这些优化的工具:当我们需要严格的执行顺序或数据同步时,用它们强制 CPU 按我们的要求来。
DSB 就像一个 “交通指挥员”,让屏障前面所有和数据相关的操作(读数据、写数据)都完成后,才允许屏障后面的操作开始。比如:先确保数据写完并同步到内存,再执行下一步读操作。
ISB 就像一个 “刷新按钮”,会清空 CPU 里已经提前准备好的指令(指令流水线),让后续指令重新从内存读取。这样能确保执行的是最新的指令,而不是旧的 “缓存指令”。
对比项 | DSB(数据同步屏障) | ISB(指令同步屏障) |
管什么 | 数据的读 / 写顺序和同步 | 指令的新鲜度(是否是最新) |
典型场景 | 多核数据共享、操作硬件寄存器 | 修改代码后执行、切换权限 |
简单记忆 | “数据要同步,就用 DSB” | “指令要刷新,就用 ISB” |
比如核心 A 给核心 B 发数据,必须用 DSB 确保核心 B 读到最新值:
比如给硬件发 “启动命令” 后,要读硬件状态,必须用 DSB 确保命令真的传到硬件:
比如程序运行中把一段旧指令改成新指令,必须用 ISB 让 CPU 读新指令:
比如通过系统调用进入内核,ISB 能确保后续指令按内核权限执行,避免权限错误。