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