linux设备驱动 您所在的位置:网站首页 linux特点多cpu linux设备驱动

linux设备驱动

2024-07-16 22:42| 来源: 网络整理| 查看: 265

RCU(Read-Copy Update,读-拷贝-更新),它是基于其原理命名的。RCU 并不是新的锁机制,它 对于Linux 内核而言是新的。早在20 世纪80 年代就有了这种机制,而在Linux 系统中,开发2.5.43 内核时引入该技术,并正式包含在2.6 内核中。

对于被 RCU 保护的共享数据结构,读执行单元不需要获得任何锁就可以访问它,不使用原子指令, 而且在除Alpha 的所有架构上也不需要内存栅(Memory Barrier),因此不会导致锁竞争、内存延迟以及流水线停滞。不需要锁也使得使用更容易,因为死锁问题就不需要考虑了。

使用 RCU 的写执行单元在访问它前需首先复制一个副本,然后对副本进行修改,最后使用一个回调 机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据,这个时机就是所有引用该数据的 CPU 都退出对共享数据的操作的时候。读执行单元没有任何同步开销,而写执行单元的同步开销则取决于 使用的写执行单元间的同步机制。

RCU 可以看做读写锁的高性能版本,相比读写锁,RCU 的优点在于既允许多个读执行单元同时访问 被保护的数据,又允许多个读执行单元和多个写执行单元同时访问被保护的数据。

但是,RCU 不能替代读写锁,因为如果写比较多时,对读执行单元的性能提高不能弥补写执行单元导 致的损失。因为使用RCU 时,写执行单元之间的同步开销会比较大,它需要延迟数据结构的释放,复制 被修改的数据结构,它也必须使用某种锁机制同步并行的其他写执行单元的修改操作。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有