存儲器管理課程的設(shè)計_第1頁
存儲器管理課程的設(shè)計_第2頁
存儲器管理課程的設(shè)計_第3頁
存儲器管理課程的設(shè)計_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余21頁可下載查看

下載本文檔

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

文檔簡介

1、課程設(shè)計(計算機(jī)操作系統(tǒng))課程設(shè)計任務(wù)書課題名稱存儲器管理設(shè)計、題目的目的和要求:本課程設(shè)計的目的是使學(xué)生熟悉存儲器管理系統(tǒng)的設(shè)計方法。加深對所學(xué)各種存儲器管理方案的了解;要求采用一些常用的存儲器分配算法,設(shè)計一個存儲器管理模擬系統(tǒng)并調(diào)試運(yùn)行。模擬環(huán)境應(yīng)盡量接近真實(shí)。、設(shè)計技術(shù)要求與數(shù)據(jù):鞏固和加深對操作系統(tǒng)原理的理解,提高系統(tǒng)設(shè)計的能力;通過應(yīng)用,提高程序設(shè)計能力,本課程設(shè)計對應(yīng)用方面只作一般要求,選做不同的功能模塊,重點(diǎn)放在數(shù)據(jù)結(jié)構(gòu)設(shè)計、文檔規(guī)化和程序設(shè)計風(fēng)格 , 寫出易讀、易懂的程序。技術(shù)要求:(一) 源程序文件(1) 符號名的命名 : 這包括變量名、文件名、程序名、模塊名、過程文件名等

2、。命名不主用 A、B、A1、A2 等為文件名,而從易于識別和理解的要求出發(fā),使用一些有實(shí)際意義的標(biāo)識符,如: fork(); exit(); sleep(); wakeup()等。(2) 程序中的注釋行 : 夾在源程序中的注釋行能幫助讀者理解程序,絕不是可有可無的,注釋是源程序文件必不可少的一部分。要求在程序開頭有序言性注釋,有關(guān)的項目如下 : 程序的標(biāo)題 ( 文件名等 )目的、功能調(diào)用形式,參數(shù)含義輸入數(shù)據(jù)輸出數(shù)據(jù)調(diào)用的過程或過程文件其它類型的文件名稱 ( 數(shù)據(jù)文件、索引文件、格式文件等)作者審查調(diào)試日期(3) 空行和縮格自然的程序段用空行隔開, 分支嵌套和循環(huán)嵌套要層次分明。如 C 語言程

3、序:if (條件 )(語句組 );elseif (條件 )(語句組 );else(語句組 );(二)數(shù)據(jù)說明適當(dāng)用說明方式 :<命令語句 >/* <注釋> */如對變量所賦數(shù)據(jù)的類型加以說明,以便核對和查找。(三) 語句結(jié)構(gòu)程序的清晰性是最重要的目標(biāo),語句應(yīng)寫的簡明,直接了當(dāng),不要在語句中使用“技巧”。因為這會給調(diào)試過程帶來不必要的麻煩,復(fù)雜的表達(dá)式用括號表示運(yùn)算的優(yōu)先次序,以免造成誤解。沒有程序的簡明性和清晰性,就不能保證程序的可靠性和正確性。另外, 盡可能利用現(xiàn)成函數(shù), 減少臨時變量, 避免用浮點(diǎn)數(shù) ( 如 1.2E4) 比較。(四) 輸入和輸出輸入和輸出是與用戶的

4、使用直接相關(guān)的。 輸入、輸出的方式和格式應(yīng)盡可能方便用戶, 一個程序的輸入格式盡可能統(tǒng)一 ; 但提示要明確和具備捕獲錯誤及處理的能力。數(shù)據(jù)結(jié)構(gòu):const int pagesize=1024;const int blocknum=3;int blockblocknum;int pgblocknum;、設(shè)計工作起始日期:自二 五年 六 月 二十日起,至二 五年 六 月 二十四日止、進(jìn)度計劃與應(yīng)完成的工作:日期容選取參考書,查閱有關(guān)文獻(xiàn)資料,完成課程設(shè)計說明書容1 部分。完成6.20周一課程設(shè)計說明書容2-4 部分6.21周二上機(jī)創(chuàng)建相關(guān)數(shù)據(jù)結(jié)構(gòu) , 錄入源程序6.22周三上機(jī)調(diào)試程序并記錄調(diào)試中

5、的問題,完成課程設(shè)計說明書第5 部分。6.23周四上機(jī)系統(tǒng)測試,演示設(shè)計成果。整理課程設(shè)計說明書, 上午 11 時,由學(xué)習(xí)委員交課程設(shè)計說明書( 計算機(jī)6.24周五科學(xué)系 9#213 或直接交給指導(dǎo)教師 )、主要參考文獻(xiàn)、資料:1.湯子贏等,計算機(jī)操作系統(tǒng)(第二版),電子科技大學(xué),19962.湯子贏等,計算機(jī)操作系統(tǒng)(新第一版),電子科技大學(xué)19963. 耀霖等,操作系統(tǒng),電子科技大學(xué), 19924. 湯子瀛主編 . 計算機(jī)操作系統(tǒng) .: 電子科技大學(xué) ,2002.95. 堯?qū)W , 史美林 . 計算機(jī)操作系統(tǒng)教程 .: 清華大學(xué) ,1995,26. 乃琦等 . 操作系統(tǒng)原理及應(yīng)用 .: 經(jīng)濟(jì)科

6、學(xué) ,1996.5指導(dǎo)教師:學(xué)科部主任二年月日課程設(shè)計評語及成績評定、課程設(shè)計篇幅:圖紙數(shù)量設(shè)計說明書頁、指導(dǎo)教師的評語:指導(dǎo)教師年月日、成績評定:設(shè)計成績教學(xué)院長(主任):(簽字)二年月日目錄N-S第一章概述操作系統(tǒng)課程設(shè)計是計算機(jī)科學(xué)與技術(shù)專業(yè)的主要實(shí)踐性教學(xué)環(huán)節(jié)。在進(jìn)行了專業(yè)基礎(chǔ)課和操作系統(tǒng)課程的基礎(chǔ)上,設(shè)計或分析一個實(shí)際的操作系統(tǒng)旨在加深對計算機(jī)硬件結(jié)構(gòu)和系統(tǒng)軟件的認(rèn)識,初步掌握操作系統(tǒng)組成模塊和應(yīng)用接口的使用方法, 提高進(jìn)行工程設(shè)計和系統(tǒng)分析的能力, 為畢業(yè)設(shè)計和以后的工程實(shí)踐打下良好的基礎(chǔ)。存儲器管理的主要任務(wù)是為多道程序的運(yùn)行提供良好的環(huán)境, 方便用戶使用存儲器,提高存儲器的利用

7、率以及能從邏輯上擴(kuò)充存。存儲器管理的主要對象是存, 本設(shè)計主要針對進(jìn)程讀入存中的過程模擬存儲器管理系統(tǒng)。 涉及到程序的裝入、 存空間的分配方式以及進(jìn)程的換出與換入和頁面置換算法 (本設(shè)計的頁面置換算法為先進(jìn)先出 FIFO 算法)。第二章系統(tǒng)分析在多道程序環(huán)境下,要使程序運(yùn)行,必須先為之創(chuàng)建進(jìn)程。而創(chuàng)建進(jìn)程的第一步是將程序和數(shù)據(jù)裝入存。存儲器實(shí)現(xiàn)的功能主要是存分配等功能,本模擬系統(tǒng)所要實(shí)現(xiàn)的就是將進(jìn)程的程序和數(shù)據(jù)裝入存(物理塊)。具體需要實(shí)現(xiàn)的功能如下:1、 讀入進(jìn)程大小,進(jìn)行分頁,確定每一頁的指令地址圍;2、 讀入一個指令,確定其所在頁面,讀入存物理塊中。物理塊空閑直接讀入,物理塊已滿,指向下

8、步操作。3、 物理塊已滿,將要淘汰原來首先進(jìn)入到存中的頁面,即換出;然后將現(xiàn)在的指令地址頁面讀入物理塊中,即換入。4、能夠顯示分配的頁面的狀態(tài)信息,包括地址圍和讀入的存物理塊號(未讀入與讀入的區(qū)別顯示),頁面是否在主存中。5、顯示存分區(qū)即物理塊號的使用狀況。第三章系統(tǒng)設(shè)計本系統(tǒng)實(shí)現(xiàn)的功能比較簡單,主要包括以下幾個數(shù)據(jù)結(jié)構(gòu)方面:1、輸入進(jìn)程大小劃分頁面。 求頁面數(shù)利用進(jìn)程與每一頁面的大小計算和求余函數(shù) add() ,基本信息輸出 print()函數(shù)。頁面的初始信息包括頁號、頁面的指令地址圍、讀入物理塊號(初始均設(shè)定為-1 )、讀入存狀態(tài)。int add(int m,int n)/判斷是否在物理塊

9、的最后一位, 要不要加1if(m%n)/不能整除 , 有余數(shù),則需加1return 1;else/剛好能整除return 0;2、指令頁面讀入物理塊。該部分要包括空閑物理塊的查詢freebno ()函數(shù),裝入物理塊號load ()函數(shù),物理塊指針自加inc() 函數(shù)。指令讀入,查詢存中是否有空閑的物理塊,有則直接讀入,同時物理塊號指針自動指向下一個模塊,以便下一個指令讀入時裝入存。void load(int b)/裝入主存 b 號物理塊bno=b;status=1;blockb=0;int freebno()/查出空閑的物理塊號int i;for(i=0;i<blocknum;i+)if

10、(blocki)return i;/返回空閑的物理塊return i;/沒有空閑的物理塊, 返回的塊號溢出3. 指令讀入時物理塊全部占滿,需要調(diào)用換出 out() 函數(shù),淘汰原來進(jìn)入存的頁面,利用 FIFO 算法,然后裝入此事的指令到相應(yīng)物理塊。void out() /調(diào)出主存 status=0; bno=-1;4. 輸出頁面詳細(xì)信息。利用程序初始創(chuàng)建的 page 類函數(shù)定位到每個頁面,查詢其狀態(tài)輸出其詳細(xì)信息即print()函數(shù)的具體容。void print()cout<<"頁號 :"<<pno<<"地址圍 :"&l

11、t;<pagesize*pno+1<<""<<pagesize*(pno+1)<<"物理塊號 :"<<bno<<" 狀態(tài) :" if(status)cout<<"在主存 "<<endl;elsecout<<"在輔存 "<<endl;3、存物理塊的占用信息。int blockblocknum;/ 存放物理塊狀態(tài)的數(shù)組 ,1 為空閑 ,0 為不空閑if(blocki)cout<&l

12、t;"空閑 "<<endl;elsecout<<"占用 "int a=pgi;第四章程序設(shè)計流程圖或N-S 圖第五章源程序清單/ 存儲器管理系統(tǒng)設(shè)計#include<iostream.h>const int pagesize=1024;/ 頁面大小const int blocknum=4;/ 系統(tǒng)分配的物理塊數(shù)int blockblocknum;/ 存放物理塊狀態(tài)的數(shù)組 , 空閑時為 1, 不空閑時為 0 int pgblocknum;/ 存放物理塊中的頁號class pageint pno;/頁號int bno;/物

13、理塊號int status;/ 頁的狀態(tài) ,1 為在主存 ,0 為在輔存static int n; /表態(tài)成員 , 為實(shí)現(xiàn)頁的編號public:page()/構(gòu)造函數(shù)pno=n+;/編號bno=-1;/不在任何物理塊中status=0;/初始值int getstatus() return status; int getbno() return bno; int getpno() return pno; void print()cout<<" 頁號 :"<<pno<<" 地址圍 :"<<pagesize*pn

14、o+1<<""<<pagesize*(pno+1)<<"物理塊號 :"<<bno<<" 狀態(tài) :" if(status)cout<<" 在主存 "<<endl; elsecout<<"在輔存 "<<endl;void load(int b)/裝入主存b 號物理塊bno=b;status=1;/裝入主存頁號為1blockb=0;/數(shù)組狀態(tài)不空閑/ 調(diào)出主存,用于頁面置換void out()

15、status=0;bno=-1;/相應(yīng)頁對應(yīng)物理塊號變?yōu)槌跏贾?int page:n=0;/初始化頁號int freebno()/查出空閑的物理塊號int i;for(i=0;i<blocknum;i+)if(blocki)return i;/返回空閑的物理塊return i;/沒有空閑的物理塊, 返回的塊號溢出void inc(int &t)/if(t>=0&&t<blocknum-1)t+;else if(t=blocknum-1)t=0;else以物理塊數(shù)為模自加cout<<"出錯 !"<<endl;/

16、 判斷是否在物理塊的最后一位 , 是否加 1int add(int m,int n)if(m%n)/不能整除 , 有余數(shù),則需加1return 1;else/return 0;剛好能整除void main()int j;for(j=0;j<blocknum;j+) / 初始化 , 物理塊都置為空閑blockj=1;pgj=-1;int i,set;int process_size,pagenum,address,pageNO;page *p;int next=0;/下一個該替換的物理塊號cout<<"*存儲器管理模擬系統(tǒng)*"<<endl;cou

17、t<<"請輸入進(jìn)程的大小 ( 注意:僅為數(shù)據(jù)有效 ):"<<endl;cin>>process_size;pagenum=process_size/pagesize+add(process_size,pagesize);cout<<"進(jìn)程的頁數(shù)為 :"<<pagenum<<endl;p=new pagepagenum;/new動態(tài)分配空間cout<<"各頁面狀態(tài)如下 :"<<endl;for(i=0;i<pagenum;i+)pi.p

18、rint();while(1)cout<<"-"<<endl;cout<<"1.指令地址信息讀取2. 輸出程序所用頁面信息3. 快表信息 0. 退出 "<<endl; cout<<endl;cout<<" 請選擇相應(yīng)操作 :"<<endl;cin>>set;switch(set)case 1:cout<<"請輸入要讀入的指令地址:"<<endl;cin>>address;if(addr

19、ess<0)cout<<"您所輸入的是負(fù)數(shù),不符合要求。"<<endl;break;elseif(address>process_size)cout<<"您輸入的數(shù)據(jù)太大,不符合要求。"<<endl;break;elseif(address<pagesize)pageNO=0;/判定指令地址頁面號elsepageNO=address/pagesize+add(address,pagesize)-1;/ 因為數(shù)組從 0 開始計數(shù) , 故減 1if(ppageNO.getstatus()/ 判

20、斷是否在主存cout<<" 此模塊已在主存中 ."<<endl;ppageNO.print();elsecout<<"此模塊在輔存中 , 調(diào)入主存 ."<<endl;int fno;fno=freebno(); /獲取空閑的物理塊號if(fno>=0&&fno<blocknum) /有空閑物理塊ppageNO.load(fno);cout<<"裝入頁框表,查詢并放入空閑物理塊:"<<fno<<endl;pgfno=pageN

21、O;ppageNO.print();/ 物理塊已滿,執(zhí)行淘汰操作elsecout<<"頁框已滿 , 淘汰物理塊 :"<<next<<"中的原有頁面"<<pgnext<<endl;for(i=0;i<pagenum;i+)if(pi.getstatus()&&pi.getbno()=next)pi.out();/換出ppageNO.load(next);/裝入pgnext=pageNO;ppageNO.print();inc(next);/next自加 , 指向下一個即將換出

22、的塊break;case 2:for(i=0;i<pagenum;i+)pi.print();break;case 3:for(i=0;i<4;i+)cout<<i<<":"if(blocki)cout<<"空閑 "<<endl;elsecout<<"占用 "int a=pgi;cout<<"頁號 :"<<a<<"地址圍 :"<<pagesize*a+1<<&quo

23、t;"<<pagesize*(a+1)<<endl;break;case 0:delete p;/釋放資源return;default:cout<<"非法操作,請根據(jù)提示選擇1 、2、3 或 0 操作 "<<endl;第六章調(diào)試過程中的問題及系統(tǒng)測試情況調(diào)試過程中主要遇到的問題有以下幾個方面:1、調(diào)用 print()函數(shù)時程序應(yīng)用過程中出現(xiàn)的status狀態(tài)顯示頁面號是否讀入主存中。2、常規(guī)語法錯誤,如類定義page 的最后結(jié)束符需要“ ; ”。3、變量的定義出現(xiàn)問題, 如開始固定的頁面大小與物理塊數(shù),需要用 C+中的 const 定義常量賦值。系統(tǒng)執(zhí)行情況:1、輸入進(jìn)程:2、讀入指令地址:3、存物理塊已滿,淘汰原頁面:4、輸出信息以及快表信息(物理塊狀態(tài)):第七章結(jié)束語存儲器是計算機(jī)系統(tǒng)的重要組成部分。近年來,存儲器容量雖然一直在不斷擴(kuò)大,但仍不能滿足現(xiàn)代軟件發(fā)展的需要,因此,存儲器仍

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論