實(shí)驗(yàn)2存儲(chǔ)管理_第1頁
實(shí)驗(yàn)2存儲(chǔ)管理_第2頁
實(shí)驗(yàn)2存儲(chǔ)管理_第3頁
實(shí)驗(yàn)2存儲(chǔ)管理_第4頁
實(shí)驗(yàn)2存儲(chǔ)管理_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、操作系統(tǒng)原理上機(jī)實(shí)踐報(bào)告1 西華大學(xué)計(jì)算機(jī)系上機(jī)實(shí)踐報(bào)告一. 實(shí)驗(yàn)?zāi)康?、通過編寫和調(diào)試存儲(chǔ)管理的模擬程序以加深對(duì)存儲(chǔ)管理方案的理解;2、熟悉虛存管理的各種頁面淘汰算法。3、通過編寫和調(diào)試地址轉(zhuǎn)換過程的模擬程序以加強(qiáng)對(duì)地址轉(zhuǎn)換過程的了解。二. 實(shí)驗(yàn)內(nèi)容與設(shè)計(jì)思想上機(jī)實(shí)踐內(nèi)容:設(shè)計(jì)一個(gè)請(qǐng)求頁式存儲(chǔ)管理方案。并編寫模擬程序?qū)崿F(xiàn)之。產(chǎn)生一個(gè)需要訪問的指令地址流。它是一系列需要訪問的指令的地址。為不失一般性,你可以適當(dāng)?shù)?(用人工指定地方法或用隨機(jī)數(shù)產(chǎn)生器)生成這個(gè)序列,使得50的指令是順序執(zhí)行的。 25的指令均勻地散布在前地址部分,25的地址是均勻地散布在后地址部分。為簡單起見。頁面淘汰算法采用fi

2、fo 頁面淘汰算法,并且在淘汰一頁時(shí),只將該頁在頁表中抹去。而不再判斷它是否被改寫過,也不將它寫回到輔存。設(shè)計(jì)思路:產(chǎn)生一個(gè)需要訪問的指令地址流;指令合適的頁面尺寸(例如以 1k 或 2k為 1 頁);指定內(nèi)存頁表的最大長度,并對(duì)頁表進(jìn)行初始化;每訪問一個(gè)地址時(shí),首先要計(jì)算該地址所在的頁的頁號(hào),然后查頁表,判斷該頁是否在主存如果該頁已在主存,則打印頁表情況; 如果該頁不在主存且頁表未滿,則調(diào)入一頁并打印頁表情況;如果該頁不在主存且頁表已滿,則按fifo頁面淘汰算法淘汰一頁后調(diào)入所需的頁,打印頁表情況;逐個(gè)地址訪問,直到所有地址訪問完畢。存儲(chǔ)管理算法的流程圖如下: 操作系統(tǒng)原理上機(jī)實(shí)踐報(bào)告2 圖

3、 1 fifo 頁面置換算法流程圖三. 使用環(huán)境windows 8 , vs2012 四. 核心代碼及調(diào)試過程addpage函數(shù)組要完成向頁表中加入頁,當(dāng)頁表未滿時(shí),直接將該頁加入頁表;若頁表已經(jīng)裝滿則淘汰最先進(jìn)入的頁面然后加入該頁void addpage(page pa) if (isfull() cout 淘汰 p0.num 頁 加入 pa.num 頁n; for (int i = 0; i page_table_size - 1; i+) 開始結(jié)束操作系統(tǒng)原理上機(jī)實(shí)踐報(bào)告3 pi = pi + 1; ppage_table_size - 1 = pa; else plength = pa

4、; length+; cout 加入 pa.num 頁n; 模仿 cpu 逐條訪問指令流,若指令地址所在頁的頁號(hào)大于總頁數(shù)則發(fā)生越界中斷;若指令地址所在頁的頁號(hào)在頁表中則輸出頁表信息;若指令地址所在頁的頁號(hào)不在頁表中,則發(fā)生缺頁中斷然后向頁表中加入該頁再輸出頁表信息; for (size_t i = 0; i read_size; i+) /計(jì)算頁號(hào) n int pagenum = readi/page_size ; cout 訪問 pagenum =all / page_size) cout 越界中斷 n; continue; if (pt.isinpagetable(pagenum) ;

5、else cout 缺頁中斷 n; pt.addpage(allpagepagenum); 操作系統(tǒng)原理上機(jī)實(shí)踐報(bào)告4 圖 1:直接訪問存在頁表中的頁和頁表未滿直接加入頁表圖 2:頁表已經(jīng)滿淘汰舊頁面加入新頁五. 總結(jié)fifo算法通過維護(hù)一個(gè)頁面的鏈表來記錄它們裝入內(nèi)存的順序。淘汰的是最老的頁面,但是該頁面可能仍在使用,因此fifo算法不是一個(gè)好的選擇。fifo算法理論上很簡單,但是實(shí)際實(shí)現(xiàn)起來還是很有難度的,如果最開始的時(shí)候沒有考慮好數(shù)據(jù)結(jié)構(gòu), 要那些數(shù)據(jù)。 用什么樣的方式來組織, 后來的麻煩會(huì)有很多。還有就是語言本身的的特點(diǎn),如數(shù)據(jù)的初始化,內(nèi)存的管理。六. 附錄完整代碼:#include

6、 操作系統(tǒng)原理上機(jī)實(shí)踐報(bào)告5 using namespace std; #define all 100000 /總共有好多指令#define page_size 1024 /頁面尺寸為 1k #define page_table_size 10 /頁表可以裝 20 個(gè)頁面#define read_size 100 /訪問地址流個(gè)數(shù)class page public : int num; /頁號(hào)int wlnum;/ 物理塊號(hào)page() page(int n, int m) num = n; wlnum = m; ; class pagetable private: int length; /

7、頁表長度public: page ppage_table_size; pagetable() /p = new pagepage_table_size; length = 0; 操作系統(tǒng)原理上機(jī)實(shí)踐報(bào)告6 void addpage(page pa) if (isfull() cout 淘汰 p0.num 頁 加入 pa.num 頁n; for (int i = 0; i page_table_size - 1; i+) pi = pi + 1; ppage_table_size - 1 = pa; else plength = pa; length+; cout 加入 pa.num 頁n; b

8、ool isfull() if (length page_table_size) return false; else return true; bool isinpagetable(int num) for (int i = 0; i length; i+) if (pi.num = num) return true; return false; void printtable() for (int i = 0; i length; i+) 操作系統(tǒng)原理上機(jī)實(shí)踐報(bào)告7 cout 頁號(hào): pi.num t 物理塊號(hào) pi.wlnum endl; ; void main() /外存 中 所以的頁

9、面page allpageall/page_size; /初始化 所有頁面for (int i = 0; i all / page_size; i+) allpagei.num = i; allpagei.wlnum = 1024 * i; pagetable pt; /*模擬 cpu 運(yùn)行*/ /創(chuàng)建 訪問指令流int readread_size; for (int i = 0; i read_size; i+) if (i read_size / 4 & i3 * read_size / 4) readi = readi - 1 + 1; else readi = rand() % 40000; /開始逐條進(jìn)行訪問for (size_t i = 0; i read_size; i+) 操作系統(tǒng)原理上機(jī)實(shí)踐報(bào)告8 /計(jì)算頁號(hào) n int pagenum = readi/page_size ; cout 訪問 pagenum =all / page_size) cout 越界中斷 n;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論