下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
对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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CASMES 526-2025市政道路园林绿化工程施工质量验收规范
- DB31/T 1438.2-2024用水定额 第2部分:工业
- T/CES 059-2021电力气象监测装置通用技术规范
- DB32/T 5378-2026畜禽粪肥还田环境承载力测算方法
- T/HNNMIA 30-2022硬质合金与钢钎焊技术导则
- T/CTS 24-2024道路交通安全宣传教育资料标签设置与编码规范
- T/CEPPEA 5065-2025电力工程消防应急照明和疏散指示系统设计技术规程
- T/JAASS 40-2022畜禽粪肥兽药污染防控技术规范
- T/CI 1093-2025隧道施工移动式高强安全保障舱
- T/JSEIA 0002-2024中药行业智能化改造数字化转型网络化联接实施指南
- 2025年湖北卷化学-加标签(精校版)(无答案)
- 2026秋新教材统编版四年级上册语文第一单元教案(大单元教学设计)
- 5.2 必须长期坚持的指导思想 课件(25张幻灯片)+内嵌视频
- 室内设计 课件 模块三 办公空间设计
- 2026年高考全国一卷数学试题真题及答案详解(精校打印)
- 2026年四川省拟任县处级领导干部理论(任职资格考试)全真模拟试题及答案
- 1.2 地球与地球仪 第3课时课件(共20张) 七年级地理上学期人教版
- 终身学习:中学教师专业成长与实践路径
- 台州市黄岩城乡自来水有限公司招聘笔试题库2026
- 2026年上海安全员A证考试题库(附答案)
- 常州大学怀德学院教师招聘考试真题及答案
评论
0/150
提交评论