下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
对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四川内江市隆昌市第一中学招聘4人笔试考试参考试题及答案解析
- 2026中国华录集团有限公司招聘42人笔试考试备考题库及答案解析
- 2025新疆双河国投运营集团有限公司财务人员招聘2人考试笔试备考试题及答案解析
- 2025广西河池市南丹县消防救援大队招7人笔试考试参考试题及答案解析
- 2025年池州东至县医疗保障局所属事业单位公开选调工作人员10名考试笔试模拟试题及答案解析
- 2025云南玉溪川洋产业发展有限公司招聘2人笔试考试参考试题及答案解析
- 2026年黑龙江黑河卫生专业技术资格考试中医针灸学主治医师(相关专业知识)模拟练习题及答案解析
- 2025广东深圳市宝安区翻身实验学校(西校区)诚聘初中地理、初中道法和高中历史教师3人笔试考试参考试题及答案解析
- 2025浙江宁波农商发展集团有限公司招聘3人笔试考试备考题库及答案解析
- 2025年下半年武警江西总队医院社会招聘5人笔试考试参考试题及答案解析
- 2021年山西省文化旅游投资控股集团公司组织架构和部门职能
- 预存款合作协议
- 招标代理机构入围 投标方案(技术方案)
- 热工与流体力学基础课件
- 药品生产企业销售模式、组织架构及岗位设置-药品生产企业销售部门组
- 乡村振兴背景下农村集体经济发展问题
- 小型水工建筑物设计基本知识-水工建筑物的安全加高
- 燃气报警施工方案
- 保安员基本条件及行为规范
- 家装设计的职责【部门职能】1、接待装-112702874
- 艾坚蒙(安庆)科技发展有限公司年产4000吨光固化引发剂系列产品项目环境影响报告书
评论
0/150
提交评论