下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
对linuxrcu机制的理解RCU(Read-copyupdate)锁机制是kernel2.6的重大进步,使用rcu可以获得比使用rwlock更高的性能,而且代码简单,不易死锁。Linux文档如下描述:SothetypicalRCUupdatesequencegoessomethinglikethefollowing:Removepointerstoadatastructure,sothatsubsequentreaderscannotgainareferencetoit.WaitforallpreviousreaderstocompletetheirRCUread-sidecriticalsections.Atthispoint,therecannotbeanyreaderswhoholdreferencestothedatastructure,soitnowmaysafelybereclaimed(e.g.,kfree()d).如上所述,RCU原理其实很简单,现在假设你自己要实现一个基于rcu原理的模型。假定cpu处理报文的过程是原子的,这样可以认为处理完一个报文就经过了一个quiescentstate,RCU引用的过时数据就可以释放了。接收报文开始进入一个新的周期,当发送报文后,标记一个周期的结束。假设有8个cpu,轮流处理报文,而报文处理依赖的信息存储在共享内存中。那末,现在的问题是:请用rcu机制实现共享内存的释放。假设所有的cpu处理一个报文结束,就代表一个graceperiod(因为只有处理报文时才会使用共享内存),即每个cpu都经过了一个quiscentstate.那么现在就有三个问题:1.如何确定所有的cpu都经过了一个quiscentstate?2.在rcu处理时,如何保证别的cpu不对要释放的数据操作?3.在rcu处理后,如何开启和判断下一个rcu周期?带着这三个问题,我们可以看一下linux是如何实现rcu机制的。以下的分析是基于linux-2.6.27代码:Rcu有两个重要的数据结构:/*Globalcontrolvariablesforrcupdatecallbackmechanism・*/structrcu_ctrlblk{TOC\o"1-5"\h\zlongcur;/*Currentbatchnumber.*/longcompleted;/*Numberofthelastcompletedbatch*/intnext_pending;/*Isthenextbatchalreadywaiting?*/intsignaled;spinlock_tlockcacheline_intemodealigned_in_smp;cpumask_tcpumask;严CPUsthatneedtoswitchinorder*//*forcurrentbatchtoproceed・*/}cacheline」nternodealigned」n_smp;上述结构是rcu全局控制结构structrcu_data{/*1)quiescentstatehandling:*/longquiescbatch;/*Batch#forgraceperiod*/intpassed_quiesc;/*User-mode/idleloopetc.*/intqs_pending;/*corewaitsforquiescstate*//*2)batchhandling*/longbatch;/*Batch#forcurrentRCUbatch*/structrcuhead*nxtlist,structrcu_head**nxttail;longqlen;/*#ofqueuedcallbacks*/structrcu_head*curlist;structrcu_head**curtail;structrcu_head*donelist;structrcu_head**donetail;longblimit;/*Upperlimitonaprocessedbatch*/intcpu;structrcu_headbarrier;};上述结构是每个cpu用的rcu数据结构。DECLARE_PER_CPU(structrcu_data,rcu_data);staticstructrcu_ctrlblkrcu_ctrlblk={
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 责任明确的工作分配方式计划
- 农业装备行业安全生产工作总结
- 汽车租赁行业品牌宣传总结
- 城市道路编号
- 2025年相似三角形教案中的教学方法比较
- 二零二五年度电商企业间市场推广合作协议范本2篇
- 二零二五年度正版光盘复制与授权使用协议3篇
- 二零二五年度学校教学楼隔音降噪改造施工合同
- 系统动力学课件与案例分析
- 作业脚手架坍塌事故及案例分析
- 男方报销生育险未就业承诺书
- DB63-T 1789-2021地方标准制定工作规范
- 口腔病历书写课件
- 初中数学学法指导课件
- 2022年林芝化学九上期中考试模拟试题含解析
- 北洋政府的黑暗统治优秀教学课件
- 酒店组织架构图以及各岗位职责(完整版)
- Western blot 技术-详细版
- 环氧树脂固化
- 渝建竣表格新表(共253页)
- 意外脱管鱼骨图分析(共1页)
评论
0/150
提交评论