首页 > 代码库 > RCU
RCU
RCU看了好几遍,但是一直没有看明白,今明两天一定要攻下RCU这座大山
RCU是Read-Copy-Update
读的时候,该CPU上禁止抢占,也就是说这个CPU是不允许调度的【是设置了什么环境变量吗?在schedule_tick中会判断这个环境变量,然后会禁止去设置PREET的值】,也就是说这个CPU上仍然会相应中断,但是,so sorry,无论时钟中断怎么来,怎么更新我这个进程的执行时间,但是我仍然是不会让出CPU的。
那除了禁止抢占之外,还需要表明这个CPU目前正处于questience期呀,现在
文档中说RCU的一套核心的思想是:1)阻止读者看到将要被销毁的数据;2)完成真正的销毁工作;、
比如从一个链表中把一个节点给去掉,那么
rcu的读者不需要任何的锁,不需要施加任何的原子操作、写任何的变量到内存中去,也不需要执行任何的内存屏障的操作,
同spinlock一样,rcu并不允许读者被block住,不允许一直死循环,也不允许进程被调度出去让用别的用户态去执行。因此,一旦一个CPU被检测到没有出现上述的三种情况,那么我们就认为这个CPU已经安全地出了上述的RCU的critial area,
实现方法是一个CPU本地的RCU的计数器
什么叫做实时的操作系统,是说规定了一个任务的deadline,在某个时间点上一定要完成
RCU
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。