下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
對linuxrcu機制的理解RCU(Read-copyupdate)鎖機制是kernel2.6的重大進步,使用rcu可以獲得比使用rwlock更高的性能,而且代碼簡單,不易死鎖。Linux文檔如下描述:SothetypicalRCUupdatesequencegoessomethinglikethefollowing:Removepointerstoadatastructure,sothatsubsequentreaderscannotgainareferencetoit.WaitforallpreviousreaderstocompletetheirRCUread-sidecriticalsections.Atthispoint,therecannotbeanyreaderswhoholdreferencestothedatastructure,soitnowmaysafelybereclaimed(e.g.,kfree()d).如上所述,RCU原理其實很簡單,現(xiàn)在假設(shè)你自己要實現(xiàn)一個基于rcu原理的模型。假定cpu處理報文的過程是原子的,這樣可以認為處理完一個報文就經(jīng)過了一個quiescentstate,RCU引用的過時數(shù)據(jù)就可以釋放了。接收報文開始進入一個新的周期,當發(fā)送報文后,標記一個周期的結(jié)束。假設(shè)有8個cpu,輪流處理報文,而報文處理依賴的信息存儲在共享內(nèi)存中。那末,現(xiàn)在的問題是:請用rcu機制實現(xiàn)共享內(nèi)存的釋放。假設(shè)所有的cpu處理一個報文結(jié)束,就代表一個graceperiod(因為只有處理報文時才會使用共享內(nèi)存),即每個cpu都經(jīng)過了一個quiscentstate.那么現(xiàn)在就有三個問題:1.如何確定所有的cpu都經(jīng)過了一個quiscentstate?2.在rcu處理時,如何保證別的cpu不對要釋放的數(shù)據(jù)操作?3.在rcu處理后,如何開啟和判斷下一個rcu周期?帶著這三個問題,我們可以看一下linux是如何實現(xiàn)rcu機制的。以下的分析是基于linux-2.6.27代碼:Rcu有兩個重要的數(shù)據(jù)結(jié)構(gòu):/*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;上述結(jié)構(gòu)是rcu全局控制結(jié)構(gòu)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;};上述結(jié)構(gòu)是每個cpu用的rcu數(shù)據(jù)結(jié)構(gòu)。DECLARE_PER_CPU(structrcu_data,rcu_data);staticstructrcu_ctrlblkrcu_ctrlblk={
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度民辦學(xué)校教師職稱評定與晉升合同3篇
- 2025版高端住宅門窗定制與施工一體化合同3篇
- 二零二五年度新能源出租車司機聘用合同樣本
- 二零二五年度出租車公司司機外包管理合同法律意見
- 2025知識產(chǎn)權(quán)勞動合同補充協(xié)議范本:企業(yè)知識產(chǎn)權(quán)布局與戰(zhàn)略規(guī)劃3篇
- 二零二五年度土地承包經(jīng)營權(quán)轉(zhuǎn)讓合同
- 2025年度智能化農(nóng)業(yè)大棚建設(shè)與土地租賃合同
- 2025年度木托盤生產(chǎn)原料供應(yīng)鏈金融合同4篇
- 二零二五年度牛羊肉產(chǎn)業(yè)鏈投資合作合同4篇
- 2025年度農(nóng)業(yè)種植與農(nóng)產(chǎn)品溯源技術(shù)服務(wù)合同4篇
- 2024年安全教育培訓(xùn)試題附完整答案(奪冠系列)
- 神農(nóng)架研學(xué)課程設(shè)計
- 文化資本與民族認同建構(gòu)-洞察分析
- 2025新譯林版英語七年級下單詞默寫表
- 【超星學(xué)習(xí)通】馬克思主義基本原理(南開大學(xué))爾雅章節(jié)測試網(wǎng)課答案
- 《錫膏培訓(xùn)教材》課件
- 斷絕父子關(guān)系協(xié)議書
- 福建省公路水運工程試驗檢測費用參考指標
- 2024年中國工業(yè)涂料行業(yè)發(fā)展現(xiàn)狀、市場前景、投資方向分析報告(智研咨詢發(fā)布)
- 自然科學(xué)基礎(chǔ)(小學(xué)教育專業(yè))全套教學(xué)課件
- 《工程勘察資質(zhì)分級標準和工程設(shè)計資質(zhì)分級標準》
評論
0/150
提交評論