操作系統(tǒng)lab2實驗報告(總14頁).doc
《操作系統(tǒng)lab2實驗報告(總14頁).doc》由會員分享,可在線閱讀,更多相關(guān)《操作系統(tǒng)lab2實驗報告(總14頁).doc(14頁珍藏版)》請在匯文網(wǎng)上搜索。
1、 操作系統(tǒng)實驗報告HUNAN UNIVERSITY操作系統(tǒng)實驗報告目錄一、內(nèi)容2二、目的2三、實驗設(shè)計思想和練習(xí)題2練習(xí)0:填寫已有實驗2練習(xí)1:實現(xiàn) first-fit 連續(xù)物理內(nèi)存分配算法(需要編程)2練習(xí)2:實現(xiàn)尋找虛擬地址對應(yīng)的頁表項(需要編程)7練習(xí)3:釋放某虛地址所在的頁并取消對應(yīng)二級頁表項的映射(需要編程)10運行結(jié)果12四、實驗體會12一、內(nèi)容本次實驗包含三個部分。首先了解如何發(fā)現(xiàn)系統(tǒng)中的物理內(nèi)存;然后了解如何建立對物理內(nèi)存的初步管理,即了解連續(xù)物理內(nèi)存管理;最后了解頁表相關(guān)的操作,即如何建立頁表來實現(xiàn)虛擬內(nèi)存到物理內(nèi)存之間的映射,對段頁式內(nèi)存管理機制有一個比較全面的了解。二、
2、目的1.理解基于段頁式內(nèi)存地址的轉(zhuǎn)換機制;2.理解頁表的建立和使用方法;3.理解物理內(nèi)存的管理方法。三、實驗設(shè)計思想和練習(xí)題練習(xí)0:填寫已有實驗使用eclipse中的diff/merge工具將實驗1的代碼填入本實驗中代碼中有“LAB1”的注釋相應(yīng)部分。練習(xí)1:實現(xiàn) first-fit 連續(xù)物理內(nèi)存分配算法(需要編程)在實現(xiàn)first fit 內(nèi)存分配算法的回收函數(shù)時,要考慮地址連續(xù)的空閑塊之間的合并操作。提示:在建立空閑頁塊鏈表時,需要按照空閑頁塊起始地址來排序,形成一個有序的鏈表??赡軙薷膁efault_pmm.c中的default_init,default_init_memmap,def
3、ault_alloc_pages, default_free_pages等相關(guān)函數(shù)。請仔細(xì)查看和理解default_pmm.c中的注釋。請在實驗報告中簡要說明你的設(shè)計實現(xiàn)過程。請回答如下問題:你的first fit算法是否有進一步的改進空間。解答:分析思路:(1)數(shù)據(jù)結(jié)構(gòu):A每個物理頁利用一個Page結(jié)構(gòu)體表示,查看kern/mm/memlayout.h包括:ref:引用計數(shù),即映射此物理頁的虛擬頁個數(shù);flags:描述物理頁屬性,bit 0設(shè)置為1,即為“被保留”項,bit 1設(shè)置為1,即為空閑項;property:記錄某連續(xù)內(nèi)存塊的大小,即地址連續(xù)的空閑頁的個數(shù);page_link:將多個
4、連續(xù)內(nèi)存鏈接在一起的雙向鏈表指針,即構(gòu)建雙向鏈接各個Page結(jié)構(gòu)的雙向鏈表。B所有的連續(xù)內(nèi)存空閑塊可用一個雙向鏈表管理,利用一個free_area_t結(jié)構(gòu)體表示,查看kern/mm/memlayout.h包括:list_entry:雙向鏈表指針,指向空閑的物理頁;nr_free:記錄當(dāng)前空閑頁的個數(shù)的無符號整形變量。(2)連續(xù)物理內(nèi)存分配思路:物理內(nèi)存頁管理器順著雙向鏈表進行搜索空閑內(nèi)存區(qū)域,直到找到一個足夠大的空閑區(qū)域,這是一種速度很快的算法,因為它盡可能少地搜索鏈表。如果空閑區(qū)域的大小和申請分配的大小正好一樣,則把這個空閑區(qū)域分配出去,成功返回;否則將該空閑區(qū)分為兩部分,一部分區(qū)域與申請分
5、配的大小相等,把它分配出去,剩下的一部分區(qū)域形成新的空閑區(qū)。其釋放內(nèi)存的設(shè)計思路是把這塊區(qū)域重新放回雙向鏈表中。(3)具體設(shè)計:bootloader進行探測物理格局后,利用kern_entry()函數(shù)設(shè)置堆棧,并臨時建立一個段映射關(guān)系,調(diào)用kern_init()函數(shù)輸出檢查后,pmm_init()函數(shù)完成物理內(nèi)存的管理,假定page_init()函數(shù)是按照地址從小到大的順序傳遞連續(xù)內(nèi)存空閑塊,根據(jù)page_init()函數(shù)中傳遞的參數(shù)(某個連續(xù)的空閑塊的起始頁,頁個數(shù)),default_init_memmap()來建立一個連續(xù)內(nèi)存空閑塊的雙向鏈表,鏈表頭設(shè)free_area.free_list
6、,鏈表項設(shè)Page的base-page_link。代碼分析:(1)default_init_memmap :用于構(gòu)建空閑頁鏈表;A步驟:(1)初始化每一個空閑頁,注意使用頭插法是因為地址是從低到高地址增長;(2)計算空閑頁的總數(shù)。B具體實現(xiàn):(2)default_alloc_pages :用于為進程分配空閑頁;A步驟:(1)從空閑鏈表表頭開始查找最小的地址,尋找足夠大的空閑塊; (2)如果找到,獲得指向分配的頁,重新設(shè)置標(biāo)志位,從空閑鏈表中刪除此頁;(3)判斷空閑塊大小是否合適;(4)如果合適,不操作;如果不合適,分割頁塊;(5)計算剩余空閑頁個數(shù),返回分配的頁塊地址。B具體實現(xiàn):注:算法改進
7、空間:第一頁重置標(biāo)志位操作被注釋后,依然可以編譯運行。(3)default_free_pages :用于釋放已經(jīng)使用完的頁,使其合并到free_list中;A步驟:(1)在free_list中查找合適位置,用以插入; (2)改變被釋放頁的標(biāo)志位flags及計數(shù)器ref;(3)在free_list中向高地址或第地址合并。B具體實現(xiàn):練習(xí)2:實現(xiàn)尋找虛擬地址對應(yīng)的頁表項(需要編程)通過設(shè)置頁表和對應(yīng)的頁表項,可建立虛擬內(nèi)存地址和物理內(nèi)存地址的對應(yīng)關(guān)系。其中的get_pte函數(shù)是設(shè)置頁表項環(huán)節(jié)中的一個重要步驟。此函數(shù)找到一個虛地址對應(yīng)的二級頁表項的內(nèi)核虛地址,如果此二級頁表項不存在,則分配一個包含此
- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 操作系統(tǒng) lab2 實驗 報告 14