版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、ucore中的物理內(nèi)存分配 ucore系統(tǒng)中的物理內(nèi)存分配使用的是buddy伙伴算法,算法與Linux中的buddy算法有很高的相似度。 以下介紹ucore源碼中buddy實現(xiàn)物理內(nèi)存分配的算法。123塊分配算法:buddy_alloc_pages_sub(size_t order)static inline struct Page *buddy_alloc_pages_sub(size_t order) assert(order = MAX_ORDER); /檢驗傳入?yún)?shù)的合法性 size_t cur_order; /定義變量current_order for (cur_order = or
2、der; cur_order = MAX_ORDER; cur_order +) if (!list_empty(&free_list(cur_order) list_entry_t *le = list_next(&free_list(cur_order); struct Page *page = le2page(le, page_link);/找到page結(jié)構(gòu) nr_free(cur_order) -; list_del(le); size_t size = 1 order) cur_order -; size = 1; struct Page *buddy = page + size;
3、buddy-property = cur_order; SetPageProperty(buddy); nr_free(cur_order) +; list_add(&free_list(cur_order), &(buddy-page_link); ClearPageProperty(page); return page; return NULL; 4 內(nèi)核使用該函數(shù)來在管理區(qū)中找到一個空閑塊。該函數(shù)需要一個參數(shù):order,order表示請求的空閑頁塊大小的對數(shù)值(0 表示一個單頁塊,1 表示一個雙頁塊,2表示四頁塊)。如果頁框被成功分配,函數(shù)就返回第一個被分配頁框的頁描述符。否則,函數(shù)返
4、回NULL。 在函數(shù)中,從所請求order的鏈表開始,它掃描每個可用塊鏈表進(jìn)行循環(huán)搜索,如果當(dāng)前order找不到合適空閑塊,那么需要搜索更大的order,就繼續(xù)搜索: for (cur_order = order; cur_order = MAX_ORDER; cur_order +) if (!list_empty(&free_list(cur_order) return null;56關(guān)于塊釋放,由于是要求我們自己寫的內(nèi)容,就不做介紹了。下面是幾個ucore中buddy system的其他幾個函數(shù):判斷是否為buddystatic inline boolpage_is_buddy(stru
5、ct Page *page, size_t order, int zone_num) if (page2ppn(page) zone_num = zone_num) return !PageReserved(page) & PageProperty(page) & property = order; return 0; 正如所見,要想成為伙伴,必須滿足以下四個條件:(1)它必定和page在同一個zone內(nèi);(2)它必須屬于動態(tài)內(nèi)存( PageReserved位 清零);(3)它的property字段必須有意義(PageProperty位 置位);(4)它的property字段必須存放將要被釋放的塊的order。7Getorder函數(shù)static inline size_t /根據(jù)需要的頁數(shù)求出order的大小,如n=15,則order=4getorder(size_t n) size_t order, order_size; for (order = 0, order_size = 1; order = MAX_ORDER; order +, order_size = 1) /orde
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能化地磅數(shù)據(jù)管理-深度研究
- 2025年廣西體育高等??茖W(xué)校高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 圖書館空間設(shè)計研究-深度研究
- 2025年山西財貿(mào)職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025年山東化工職業(yè)學(xué)院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 基礎(chǔ)設(shè)施公募REITs融資模式研究
- 2025年天津開發(fā)區(qū)職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025至2030年中國發(fā)光啤酒杯數(shù)據(jù)監(jiān)測研究報告
- 2025年四川職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2025年中國馬標(biāo)本市場調(diào)查研究報告
- 2024-2025學(xué)年山東省濰坊市高一上冊1月期末考試數(shù)學(xué)檢測試題(附解析)
- 數(shù)學(xué)-湖南省新高考教學(xué)教研聯(lián)盟(長郡二十校聯(lián)盟)2024-2025學(xué)年2025屆高三上學(xué)期第一次預(yù)熱演練試題和答案
- 決勝中層:中層管理者的九項修煉-記錄
- 幼兒園人民幣啟蒙教育方案
- 高考介詞練習(xí)(附答案)
- 單位就業(yè)人員登記表
- 衛(wèi)生監(jiān)督協(xié)管-醫(yī)療機構(gòu)監(jiān)督
- 記錄片21世紀(jì)禁愛指南
- 腰椎間盤的診斷證明書
- 移動商務(wù)內(nèi)容運營(吳洪貴)任務(wù)七 裂變傳播
- 單級倒立擺系統(tǒng)建模與控制器設(shè)計
評論
0/150
提交評論