版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、石家莊經(jīng)濟(jì)學(xué)院華信學(xué)院操作系統(tǒng)課程設(shè)計報告(學(xué) 院)系: 華信學(xué)院 專 業(yè): 計算機(jī)科學(xué)與技術(shù) 姓 名: 班 級: 09級3班 學(xué) 號: 40941708032 指導(dǎo)教師: 孟永剛 2012年 6 月 22 日操作系統(tǒng)課程設(shè)計報告姓名宋攀學(xué)號409417080324日期2012年6月11-21號實驗室機(jī)房2、3指導(dǎo)教師孟永剛設(shè)備編號設(shè)計題目虛擬存儲器一、設(shè)計內(nèi)容模擬分頁式虛擬存儲管理中硬件的地址轉(zhuǎn)換和缺頁中斷,以及選擇頁面調(diào)度算法處理缺頁中斷。二、設(shè)計目的在計算機(jī)系統(tǒng)中,為了提高主存利用率,往往把輔助存儲器(如磁盤)作為主存儲器的擴(kuò)充,使多道運(yùn)行的作業(yè)的全部邏輯地址空間總和可以超出主存的絕對地
2、址空間。用這種辦法擴(kuò)充的主存儲器稱為虛擬存儲器。通過本實習(xí)幫助同學(xué)們理解在分頁式存儲管理中怎樣實現(xiàn)虛擬存儲器。三、設(shè)計過程、 同組人員:陳秀 張德蛟1. 數(shù)據(jù)結(jié)構(gòu)設(shè)計本設(shè)計所用的數(shù)據(jù)結(jié)構(gòu)包括:結(jié)構(gòu)體和數(shù)組,詳細(xì)描述如下:指令結(jié)構(gòu)體如下typedef struct int page_num;/頁號int unit_num;/單元號order;頁表結(jié)構(gòu)體如下typedef structint page_num;/頁號int flag;/標(biāo)志int memery_num;/主存儲塊號int m_flag;/修改標(biāo)志char location4;/在磁盤上的位置pageform;作業(yè)頁表數(shù)組如下#de
3、fine C 7pageform aC;主存頁表數(shù)組如下#define C1 4pageform pC1; 2. 算法設(shè)計 1) 該源程序分為以下幾個模塊: (1)主存初始化模塊(2)頁表初始化模塊(3)打印初始化后的頁表信息模塊(4)地址轉(zhuǎn)換和產(chǎn)生缺頁中斷模塊(5)先進(jìn)先出(FIFO)頁面調(diào)度算法處理缺頁中斷模塊 2) 對各模塊進(jìn)行詳細(xì)說明: (1)主存初始化模塊函數(shù):memunit_init()入口參數(shù):無出口參數(shù):無功能描述:調(diào)入4個頁面對4個空閑主存進(jìn)行頁面初始化,調(diào)入頁面包括a0,a1,a2,a3;空閑主存包括 p0,p1,p2,p3。流程圖如圖1所示:開始初始化內(nèi)存各頁表項結(jié)束 圖
4、1主存初始化模塊(2)頁表初始化模塊函數(shù):page_init()入口參數(shù):無出口參數(shù):無功能描述:對作業(yè)頁表表項初始化,包括對頁面a0,a1,a2,a3,a4,a5,a6的初始化。流程圖如下:開始初始化作業(yè)各頁表項結(jié)束 圖2 (3)打印頁表信息函數(shù):pageform_print()入口參數(shù):無出口參數(shù):無開始功能描述:打印初始化后的作業(yè)頁表表項,對作業(yè)頁表表項初始化,包括對頁面a0,a1,a2,a3,a4,a5,a6的初始化;然后打印a0,a1,a2,a3,a4,a5,a6各頁表項。流程圖如圖3所示:初始化作業(yè)各頁表項打印作業(yè)表各表項結(jié)束 圖3打印頁表信息模塊(4)地址轉(zhuǎn)換和產(chǎn)生缺頁中斷模塊
5、函數(shù):order1()入口參數(shù):無出口參數(shù):無功能描述:根據(jù)取出的指令的頁號查找頁表,如果該頁的標(biāo)志位=1就輸出該頁的絕對地址,否則發(fā)生缺頁中斷打印 * 頁號。流程圖如圖4所示:是否是否取一條指令取指令中的訪問的頁號查頁表形成絕對地址輸出絕對地址輸出“”頁號表示發(fā)生缺頁中斷取下一條指令開始該頁標(biāo)志1 有后繼指令結(jié)束 圖 4地址轉(zhuǎn)換和產(chǎn)生缺頁中斷模塊(5)先進(jìn)先出(FIFO)頁面調(diào)度算法處理缺頁中斷模塊函數(shù):order2()入口參數(shù):無出口函數(shù):無 功能描述:根據(jù)取出的指令的頁號查找頁表,在該頁的標(biāo)志位=1的前提下,如果是存命令, 就置該頁的修改標(biāo)志位=1并且計算和輸出該頁的絕對地址,如果不是存
6、命令,就只計算和輸 出該頁的絕對地址;在該頁的標(biāo)志位=0的前提下,則模擬FIFO算法,k初始化為0,則執(zhí)行把pk的各個表項分別賦值給j的各個表項,判斷j頁的修改標(biāo)志是否為1 ,如果為1就輸出 OUT j并且輸出IN cmd.page_num,否則只輸出 IN cmd.page_num,執(zhí)行把cmd.page_num賦值給pk.page_num,再執(zhí)行k:=(k+1)mod m,然后修改所有由于輸入命令所引起的有關(guān)的頁面各種表項,最后輸出所有作業(yè)頁面的最新表項。 流程圖如圖5所示: 開始 取一條指令 cmd取指令中的頁號 cmd.page_num 查頁表 是 否頁表標(biāo)志位=1是存指令 形成絕對地
7、址 否是置cmd.page_num頁修改標(biāo)志=1修改頁表及pk并輸出更新后的頁表,k:=(k+1)modC1取下一條指令是否 結(jié)束有后繼指令否是輸出 "IN" cmd.page_num輸出 "OUT" j.page_numj的修改標(biāo)志 位=1 j:=pk 輸出絕對地址 圖5 先進(jìn)先出(FIFO)頁面調(diào)度算法處理缺頁中斷模塊4、 程序運(yùn)行結(jié)果 源程序代碼鏈接:虛擬存儲器.cpp1.執(zhí)行程序后初始化的窗口截屏如圖6: 圖 6 初始化的窗口 2.輸入 1后的窗口截屏如圖7所示: 圖7 輸入1后的窗口3.輸入的頁號為0,輸入的單元號為70,輸入有后繼指令,結(jié)果截
8、屏如圖8所示: 圖 8 輸入已在主存中的作業(yè) 4. 輸入的頁號為4,輸入的單元號為53,輸入無后繼指令,結(jié)果截屏如圖9所示: 圖 9 輸入未在主存中的作業(yè) 5. 輸入 2后的初始窗口截屏如圖10所示: 圖10 輸入 題目2的初始化窗口6. 輸入的頁號為0,輸入的單元號為70,輸入存指令,輸入無后繼指令,結(jié)果截屏如圖11所示: 圖 11 輸入新指令 7. 輸入的頁號為4,輸入的單元號為53,輸入存指令,輸入有后繼指令,結(jié)果截屏如圖12所示:圖 12 輸入新指令 8. 輸入的頁號=5,輸入的單元號=23,輸入非存指令,輸入無后繼指令,結(jié)果截屏如圖13所示:圖 13 輸入新指令5、 設(shè)計總結(jié) 此次試
9、驗,全部程序及全部模塊均參與研究,現(xiàn)在均已熟悉,對各個模塊都詳細(xì)的說明了它們的功能等等,兩周的課程設(shè)計結(jié)束了,在這次的課程設(shè)計中不僅檢驗了我所學(xué)習(xí)的知識,并且更正了我的一個誤區(qū),讓我對所學(xué)的知識有了更深刻的認(rèn)識。 六、指導(dǎo)教師評語及成績評語:成績: 年 月 日源代碼#include<iostream.h>#include<string.h>#define C 7#define C1 4typedef structint page_num;/頁號int flag;/標(biāo)志int memery_num;/主存儲塊號int m_flag;/修改標(biāo)志char location4;
10、/在磁盤上的位置pageform;pageform aC;pageform pC1;int k=0;int i=0;int select;pageform j;int n;/是否有后繼指令int x;typedef struct int page_num;/頁號int unit_num;/單元號order;void memunit_init() p0.page_num=0;p0.flag=1;p0.memery_num=5;p0.m_flag=0;strcpy(p0.location,"011");p1.page_num=1;p1.flag=0;p1.memery_num=
11、8;p1.m_flag=0;strcpy(p1.location,"012");p2.page_num=2;p2.flag=1;p2.memery_num=9;a2.m_flag=0;strcpy(p2.location,"013");p3.page_num=3;p3.flag=1;p3.memery_num=1;p3.m_flag=0;strcpy(p3.location,"021");void page_init()a0.page_num=0;a0.flag=1;a0.memery_num=5;a0.m_flag=0;strcpy
12、(a0.location,"011");a1.page_num=1;a1.flag=1;a1.memery_num=8;a1.m_flag=0;strcpy(a1.location,"012");a2.page_num=2;a2.flag=1;a2.memery_num=9;a2.m_flag=0;strcpy(a2.location,"013");a3.page_num=3;a3.flag=1;a3.memery_num=1;a3.m_flag=0;strcpy(a3.location,"021");a4.pag
13、e_num=4;a4.flag=0;a4.m_flag=0;strcpy(a4.location,"022");a5.page_num=5;a5.flag=0;a5.m_flag=0;strcpy(a5.location,"023");a6.page_num=6;a6.flag=0;a6.m_flag=0;strcpy(a6.location,"121");void recycle()cout<<"頁號 "<<"標(biāo)志 "<<"主存塊號 "&
14、lt;<"修改標(biāo)志 "<<"磁盤位置"<<endl;for(int i=0;i<C;i+)if(ai.flag=1)cout<<ai.page_num<<" "<<ai.flag<<" "<<ai.memery_num<<""<<ai.m_flag<<" "<<ai.location<<endl; elsecout<
15、<ai.page_num<<" "<<ai.flag<<" "<<""<<ai.m_flag<<" "<<ai.location<<endl;void pageform_print() page_init();cout<<"當(dāng)前內(nèi)存頁表如下:"<<endl;recycle();void order1() page_init(); order cmd; cout<&l
16、t;"請輸入新的指令:"<<endl; cout<<"請輸入新指令的頁號:"<<endl; cin>>cmd.page_num;if(cmd.page_num>6|cmd.page_num<0)docout<<"請重新輸入正確頁號(0-6):"<<endl; cin>>cmd.page_num;while(cmd.page_num>6|cmd.page_num<0); cout<<"請輸入新指令的單元號:&
17、quot;<<endl; cin>>cmd.unit_num;cout<<"是否有后繼指令(0/1):"<<endl;cin>>n; if(acmd.page_num.flag=1)x=128*acmd.page_num.memery_num+cmd.unit_num;cout<<"絕對地址為:"<<x<<endl;elsecout<<"* "<<cmd.page_num<<endl;void order
18、2()memunit_init();char r;order cmd; cout<<"請輸入新的指令:"<<endl;cout<<"請輸入新指令的頁號:"<<endl; cin>>cmd.page_num;if(cmd.page_num>6|cmd.page_num<0)docout<<"請重新輸入正確頁號(0-6):"<<endl; cin>>cmd.page_num;while(cmd.page_num>6|cmd.p
19、age_num<0); cout<<"請輸入新指令的單元號:" cin>>cmd.unit_num;cout<<"是否存指令(y/n):"<<endl;cin>>r;cout<<"是否有后繼指令(0/1):"<<endl;cin>>n;if(acmd.page_num.flag=1)x=128*acmd.page_num.memery_num+cmd.unit_num;if(r='y') acmd.page_num.m_flag=1; else cout<<"絕對地址為:"<<x<<endl;else j.flag=pk.flag; j.m_flag=pk.m_flag; j.memery_num=pk.memery_num; j.page_num=pk.page_num; strcpy(j.location,pk.location); if(j
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度緊急物資儲藏與調(diào)配合同4篇
- 2025年度家具行業(yè)電子商務(wù)平臺運(yùn)營合同4篇
- 2025年度酒店式公寓物業(yè)服務(wù)與管理協(xié)議4篇
- 二零二五版飯店租賃合同合同終止與清算程序2篇
- 2024年設(shè)備租賃合同及租賃設(shè)備的維修義務(wù)
- 2025年度個人股份投資退出合同范本3篇
- 2025年度大米市場分析及銷售策略咨詢合同4篇
- 2025年度生物制藥生產(chǎn)線自動化技術(shù)支持合同4篇
- 2025年度船舶租賃及維護(hù)一體化服務(wù)合同2篇
- 二零二五版環(huán)保材料搬運(yùn)與回收利用合同3篇
- 2024年上海市第二十七屆初中物理競賽初賽試題及答案
- 信息技術(shù)部年終述職報告總結(jié)
- 高考滿分作文常見結(jié)構(gòu)完全解讀
- 理光投影機(jī)pj k360功能介紹
- 六年級數(shù)學(xué)上冊100道口算題(全冊完整版)
- 八年級數(shù)學(xué)下冊《第十九章 一次函數(shù)》單元檢測卷帶答案-人教版
- 帕薩特B5維修手冊及帕薩特B5全車電路圖
- 系統(tǒng)解剖學(xué)考試重點(diǎn)筆記
- 小學(xué)五年級解方程應(yīng)用題6
- 年月江西省南昌市某綜合樓工程造價指標(biāo)及
- 作物栽培學(xué)課件棉花
評論
0/150
提交評論