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,在某个时间点上一定要完成

 

posted @ 2017-07-25 22:41  honpey  阅读(350)  评论(0编辑  收藏  举报