




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、石家莊經(jīng)濟學(xué)院華信學(xué)院操作系統(tǒng)課程設(shè)計報告(學(xué) 院)系: 華信學(xué)院 專 業(yè): 計算機科學(xué)與技術(shù) 姓 名: 班 級: 09級3班 學(xué) 號: 40941708032 指導(dǎo)教師: 孟永剛 2012年 6 月 22 日操作系統(tǒng)課程設(shè)計報告姓名宋攀學(xué)號409417080324日期2012年6月11-21號實驗室機房2、3指導(dǎo)教師孟永剛設(shè)備編號設(shè)計題目虛擬存儲器一、設(shè)計內(nèi)容模擬分頁式虛擬存儲管理中硬件的地址轉(zhuǎn)換和缺頁中斷,以及選擇頁面調(diào)度算法處理缺頁中斷。二、設(shè)計目的在計算機系統(tǒng)中,為了提高主存利用率,往往把輔助存儲器(如磁盤)作為主存儲器的擴充,使多道運行的作業(yè)的全部邏輯地址空間總和可以超出主存的絕對地
2、址空間。用這種辦法擴充的主存儲器稱為虛擬存儲器。通過本實習(xí)幫助同學(xué)們理解在分頁式存儲管理中怎樣實現(xiàn)虛擬存儲器。三、設(shè)計過程、 同組人員:陳秀 張德蛟1. 數(shù)據(jù)結(jié)構(gòu)設(shè)計本設(shè)計所用的數(shù)據(jù)結(jié)構(gòu)包括:結(jié)構(gòu)體和數(shù)組,詳細描述如下:指令結(jié)構(gòu)體如下typedef struct int page_num;/頁號int unit_num;/單元號order;頁表結(jié)構(gòu)體如下typedef structint page_num;/頁號int flag;/標志int memery_num;/主存儲塊號int m_flag;/修改標志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)先進先出(FIFO)頁面調(diào)度算法處理缺頁中斷模塊 2) 對各模塊進行詳細說明: (1)主存初始化模塊函數(shù):memunit_init()入口參數(shù):無出口參數(shù):無功能描述:調(diào)入4個頁面對4個空閑主存進行頁面初始化,調(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ù)取出的指令的頁號查找頁表,如果該頁的標志位=1就輸出該頁的絕對地址,否則發(fā)生缺頁中斷打印 * 頁號。流程圖如圖4所示:是否是否取一條指令取指令中的訪問的頁號查頁表形成絕對地址輸出絕對地址輸出“”頁號表示發(fā)生缺頁中斷取下一條指令開始該頁標志1 有后繼指令結(jié)束 圖 4地址轉(zhuǎn)換和產(chǎn)生缺頁中斷模塊(5)先進先出(FIFO)頁面調(diào)度算法處理缺頁中斷模塊函數(shù):order2()入口參數(shù):無出口函數(shù):無 功能描述:根據(jù)取出的指令的頁號查找頁表,在該頁的標志位=1的前提下,如果是存命令, 就置該頁的修改標志位=1并且計算和輸出該頁的絕對地址,如果不是存
6、命令,就只計算和輸 出該頁的絕對地址;在該頁的標志位=0的前提下,則模擬FIFO算法,k初始化為0,則執(zhí)行把pk的各個表項分別賦值給j的各個表項,判斷j頁的修改標志是否為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 查頁表 是 否頁表標志位=1是存指令 形成絕對地
7、址 否是置cmd.page_num頁修改標志=1修改頁表及pk并輸出更新后的頁表,k:=(k+1)modC1取下一條指令是否 結(jié)束有后繼指令否是輸出 "IN" cmd.page_num輸出 "OUT" j.page_numj的修改標志 位=1 j:=pk 輸出絕對地址 圖5 先進先出(FIFO)頁面調(diào)度算法處理缺頁中斷模塊4、 程序運行結(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)在均已熟悉,對各個模塊都詳細的說明了它們的功能等等,兩周的課程設(shè)計結(jié)束了,在這次的課程設(shè)計中不僅檢驗了我所學(xué)習(xí)的知識,并且更正了我的一個誤區(qū),讓我對所學(xué)的知識有了更深刻的認識。 六、指導(dǎo)教師評語及成績評語:成績: 年 月 日源代碼#include<iostream.h>#include<string.h>#define C 7#define C1 4typedef structint page_num;/頁號int flag;/標志int memery_num;/主存儲塊號int m_flag;/修改標志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<<"頁號 "<<"標志 "<<"主存塊號 "&
14、lt;<"修改標志 "<<"磁盤位置"<<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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 4《不做“小馬虎”》(教學(xué)設(shè)計) 2023-2024學(xué)年統(tǒng)編版道德與法治一年級下冊
- 河北對外經(jīng)貿(mào)職業(yè)學(xué)院《生物合成藥物學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州東華職業(yè)學(xué)院《織物產(chǎn)品結(jié)構(gòu)與工藝(二)》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州工程技術(shù)學(xué)院《國外文學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 河源廣東河源紫金縣專門學(xué)校駐校教官招聘7人筆試歷年參考題庫附帶答案詳解
- 新疆農(nóng)業(yè)大學(xué)《工作分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 梅河口康美職業(yè)技術(shù)學(xué)院《緬甸語閱讀》2023-2024學(xué)年第二學(xué)期期末試卷
- 凍土共振柱試驗機項目效益評估報告
- Unit 5 In the Park Lesson 2(教學(xué)設(shè)計)-2024-2025學(xué)年人教新起點版英語二年級上冊
- 重慶城市科技學(xué)院《建筑結(jié)構(gòu)與平法識圖》2023-2024學(xué)年第二學(xué)期期末試卷
- 心理評估與診斷簡介課件
- 移動式壓力容器充裝復(fù)審換證考試重點題庫(180題)
- 小班安全《湯姆走丟了》PPT課件教案反思微視頻
- 作物栽培學(xué)課件棉花
- 最新小學(xué)二年級口算及豎式計算練習(xí)題
- 生產(chǎn)與運作管理-陳榮秋
- 金雞冠的公雞繪本課件
- 日影朝向及長短
- 沙盤游戲治療(課堂PPT)
- (完整版)學(xué)生的自我評價的表格
- 樸素貝葉斯分類器完整
評論
0/150
提交評論