計算機操作系統(tǒng)實驗指導(dǎo)-基于RISC-V代理內(nèi)核 課件 第四章實驗2:內(nèi)存管理_第1頁
計算機操作系統(tǒng)實驗指導(dǎo)-基于RISC-V代理內(nèi)核 課件 第四章實驗2:內(nèi)存管理_第2頁
計算機操作系統(tǒng)實驗指導(dǎo)-基于RISC-V代理內(nèi)核 課件 第四章實驗2:內(nèi)存管理_第3頁
計算機操作系統(tǒng)實驗指導(dǎo)-基于RISC-V代理內(nèi)核 課件 第四章實驗2:內(nèi)存管理_第4頁
計算機操作系統(tǒng)實驗指導(dǎo)-基于RISC-V代理內(nèi)核 課件 第四章實驗2:內(nèi)存管理_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

基于RISC-V代理內(nèi)核的操作系統(tǒng)課程實驗與課程設(shè)計第四章.實驗2:內(nèi)存管理目錄實驗2的基礎(chǔ)知識Sv39虛地址管理方案回顧物理內(nèi)存布局與規(guī)劃PKE操作系統(tǒng)和應(yīng)用進程的邏輯地址空間結(jié)構(gòu)與頁表操作相關(guān)的重要函數(shù)實驗內(nèi)容lab2_1虛實地址轉(zhuǎn)換lab2_2簡單內(nèi)存分配和回收lab2_3缺頁異常實驗2的基礎(chǔ)知識Sv39虛地址管理方案回顧Sv39中邏輯地址的結(jié)構(gòu)Sv39中PDE/PTE格式Sv39虛地址管理方案回顧Sv39中虛擬地址到物理地址的轉(zhuǎn)換過程Sv39虛地址管理方案回顧satp寄存器格式satp寄存器中MODE域的取值和含義取值虛存方案0Bare8Sv399Sv48物理內(nèi)存布局與規(guī)劃對于我們用spike的模擬RISC-V機器而言,2GB的物理內(nèi)存并不是從0地址開始編址,而是從0x80000000開始編址的。PKE操作系統(tǒng)的邏輯地址空間結(jié)構(gòu)在開啟了Sv39虛擬內(nèi)存管理方案后,所有的邏輯地址到物理地址的翻譯都必須通過頁表和MMU硬件進行。PKE操作系統(tǒng)內(nèi)核的邏輯地址空間和它到物理地址空間的映射圖PKE應(yīng)用進程的邏輯地址空間結(jié)構(gòu)lab2_1的應(yīng)用app_helloworld_no_lds進程在裝入后,其邏輯地址空間有4個區(qū)間建立了和物理地址空間的映射。用戶進程的邏輯地址空間到物理地址空間的映射圖與頁表操作相關(guān)的重要函數(shù)1、將邏輯地址映射到物理地址intmap_pages(pagetable_tpage_dir,uint64va,uint64size,uint64pa,intperm);2、查找邏輯地址所在的頁表項pte_t*page_walk(pagetable_tpage_dir,uint64va,intalloc);3、查找邏輯地址所在虛擬頁面地址對應(yīng)的物理頁面地址uint64lookup_pa(pagetable_tpagetable,uint64va);目錄實驗2的基礎(chǔ)知識Sv39虛地址管理方案回顧物理內(nèi)存布局與規(guī)劃PKE操作系統(tǒng)和應(yīng)用進程的邏輯地址空間結(jié)構(gòu)與頁表操作相關(guān)的重要函數(shù)實驗內(nèi)容lab2_1虛實地址轉(zhuǎn)換lab2_2簡單內(nèi)存分配和回收lab2_3缺頁異常lab2_1虛實地址轉(zhuǎn)換給定應(yīng)用預(yù)期輸出lab2_1虛實地址轉(zhuǎn)換實驗內(nèi)容:開啟Sv39頁式地址管理,將應(yīng)用(app_helloworld_no_lds.c,鏈接時未指定邏輯地址)投入正常運行。實現(xiàn)user_va_to_pa()函數(shù),完成給定邏輯地址到物理地址的轉(zhuǎn)換,最終使得helloworld程序獲得正確輸出。lab2_2簡單內(nèi)存分配和回收給定應(yīng)用預(yù)期輸出lab2_2簡單內(nèi)存分配和回收實驗內(nèi)容:這里,新定義了兩個用戶態(tài)函數(shù)naive_malloc()和naive_free(),它們最終會轉(zhuǎn)換成系統(tǒng)調(diào)用,完成內(nèi)存的分配和回收操作。需要完成naive_free對應(yīng)的功能,獲得預(yù)期的輸出。lab2_3缺頁異常給定應(yīng)用預(yù)期輸出lab2_3缺頁異常實驗內(nèi)容:應(yīng)用程序執(zhí)行時,由于采用遞歸函數(shù)求等差數(shù)列的和,遞歸層數(shù)過多,使得用戶態(tài)棧溢出。本實驗中,我們處理的是缺頁異常。首先,判斷我們處理的確實是缺頁異常;判斷發(fā)生缺頁的是不是用戶??臻g,如果是則分配一個物理頁空間,最后將該空間通過vm_map“粘”到用戶棧上以擴充用戶棧空間。lab2_challenge1復(fù)雜缺頁異常給定應(yīng)用預(yù)期輸出lab2_challenge1復(fù)雜缺頁異常實驗內(nèi)容:程序思路基本同lab2_3一致,對給定n計算0到n的和,但要求將每一步遞歸的結(jié)果保存在數(shù)組ans中。創(chuàng)建數(shù)組時,我們使用了當(dāng)前的malloc函數(shù)申請了一個頁面(4KB)的大小,對應(yīng)可以存儲的個數(shù)上限為1024。首先由于n足夠大,所以在函數(shù)遞歸執(zhí)行時會觸發(fā)用戶棧的缺頁,你需要對其進行正確處理,確保程序正確運行;其次,1025在最后一次計算時會訪問數(shù)組越界地址,由于該處虛擬地址尚未有對應(yīng)的物理地址映射,因此屬于非法地址的訪問,這是不被允許的,對于這種缺頁異常,應(yīng)該提示用戶并退出程序執(zhí)行。lab2_challenge2堆空間管理給定應(yīng)用預(yù)期輸出lab2_challenge2堆空間管理實驗內(nèi)容:以上程序先利用better_malloc分別申請100和50個字節(jié)的一個物理頁的內(nèi)存,然后使用better_free釋放掉100個字節(jié),向50個字節(jié)中復(fù)制一串字符串,進行輸出。原本的pke中malloc的實現(xiàn)是非常簡化的(一次直接分配一個頁面),你的挑戰(zhàn)任務(wù)是修改內(nèi)核(包括machine文件夾下)的代碼,使得應(yīng)用程序的malloc能夠在一個物理頁中分配,并對各申請塊進行合理的管理。通過應(yīng)用程序和對應(yīng)的預(yù)期結(jié)果可以看出:兩次申請的空間在同一頁面,并且釋放第一塊時,不會釋放整個頁面,所以需要你設(shè)計合適的數(shù)據(jù)結(jié)構(gòu)對各塊進行管理,使得better_malloc申請的空間更加“緊湊”。lab2_challenge3多核內(nèi)存管理給定應(yīng)用預(yù)期輸出……lab2_challenge3多核內(nèi)存管理實驗內(nèi)容:

在本次實驗中,給定兩個程序,每個程序會通過lab2_2實現(xiàn)的naive_malloc申請一些內(nèi)存頁,在內(nèi)存頁開始處寫入一個int并打印內(nèi)存頁的虛擬地址。最后每個進程會打印自己寫入內(nèi)存頁的數(shù),并通過naive_f

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論