ARM64体系下linux机制学习
文章平均质量分 91
linux顿悟吧
芯片bsp驱动开发
展开
-
ARM64 linux并发与同步之经典自旋锁
在实际项目中临界区数据有可能会修改一个数据结构或者链表中的数据,在整个过程中要保证原子性,才不会影响数据的有效性,这个过程使用原子变量不合适,需要使用锁机制来完成,自旋锁(spinlock)是linux内核中常见的锁机制。早期的linux内核是使用一个简单的无符号类型的变量来表示是否持有锁,这样会带来一个问题,当前持有锁的代码路径刚刚释放,有可能又获取了该锁,这样对别的代码路径不公平,这样会导致整个系统的性能会差很多;它不会保存当前的中断状态,因此在释放自旋锁后会恢复先前未知的中断状态。原创 2023-11-14 15:53:00 · 486 阅读 · 0 评论 -
ARM64 linux并发与同步之内存屏障
*指令同步屏障(Instruction Synchronization Barrier, ISB)指令:**比DMB指令和DSB指令严格,刷新流水线和预取缓冲区后,才会从高速缓存或者内存中预取ISB指令之后的指令。仅当所有在它前面的存储器访问操作都执行完毕后,才提交在它后面的访问指令,DMB指令保证的是DMB指令之前的所有内存访问指令和DMB指令之后的所有内存访问指令的顺序。DMB指令仅仅影响内存访问指令、数据高速缓存指令,以及高速缓存管理指令等,并不会影响其他指令的顺序。位于此指令前的所有缓存,原创 2023-11-12 15:59:49 · 552 阅读 · 0 评论 -
ARM64 linux并发与同步之原子操作
linux 并发与同步中的原子操作原创 2023-11-07 11:55:30 · 573 阅读 · 0 评论