版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、操作系統(tǒng) 實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:操作系統(tǒng)的存儲(chǔ)管理方式班級(jí):姓名:學(xué)號(hào):類型:實(shí)驗(yàn)地點(diǎn):日期:一、實(shí)驗(yàn)?zāi)康模?.動(dòng)態(tài)測(cè)試WIND0WS2000/XP系統(tǒng)內(nèi)存二、實(shí)驗(yàn)環(huán)境:1. PC機(jī)一臺(tái)(VCCVB等編程環(huán)境)三、實(shí)驗(yàn)內(nèi)容和要求:1 .了解WINDOWS用戶進(jìn)程地址空間分布、系統(tǒng)地址空間分布、WINDOWS中用戶空間內(nèi)存分配方式(以頁為單位的虛擬內(nèi)存分配方法)、WINDOWS的內(nèi)存保護(hù)機(jī)制。四、實(shí)驗(yàn)步驟:#in clude #in clude#in clude Sin clude using n ames pace std; const int MM_SIZE=1OO; / 內(nèi)存塊數(shù) const
2、int ROW= 10; 繪制內(nèi)存行數(shù) const int COL= 10; 繪制內(nèi)存列數(shù) const int NEME_LEN=10; / 名字長(zhǎng)度 const int WAITTIME=2000; / 等待時(shí)間int UsedNum=0; 當(dāng)前已占用的內(nèi)存塊數(shù)int FreeNum=MM_SIZE; 當(dāng)前空閑的內(nèi)存塊數(shù)int ProCnt=0; 當(dāng) 前用戶進(jìn)程數(shù) int NowID=l; /當(dāng)前分配的進(jìn)程編號(hào) int MMMM_SIZE; /Mai n Mem ony /0 - /-l - /k - /*進(jìn)程 class P ROCESS( public: PROCESS o : next
3、 (0) 構(gòu)造函數(shù)重載,用于構(gòu)造隊(duì)列隊(duì)頭 P ROCESS (char* Name, i nt p N) : PageNum ( pN), next (0) pN ame=new charNEME LEN;strc py( pN ame, Name);P ageTable=new in tMM_SIZE; for(i nt i=O;iMM_SIZE;i+) 內(nèi)存塊未被使用 內(nèi)存塊在初始化時(shí)已被系統(tǒng)占用 內(nèi)存塊已被分配給P1D二k的用戶進(jìn)程 0b j*/ ageTablei=l; plD=NowlD+;)PROCESS。 (delete pN ame;delete P ageTable;PROC
4、ESS* next; 指向下一個(gè)進(jìn)程char* Get pN ame (void) co nst return p Name; / 獲取進(jìn)程名int Get plD(void)co nst return pID; / 獲取進(jìn)程編號(hào)int GetPageNum(void)const return PageNum; / 獲取進(jìn)程所需頁數(shù) void UnionTable(int i, int j); 關(guān)聯(lián)頁號(hào) i 與塊號(hào) j(創(chuàng)建頁表,void PrintPageTable(void) ; / 打印頁表 p rotected:char* p Name; / 進(jìn)程名int pID; 進(jìn)程編號(hào)int P
5、ageNum; 進(jìn)程所需頁數(shù) int* P ageTable; / 頁表;PROCESS* ProLinkHead=new PROCESS; / 申請(qǐng)進(jìn)程隊(duì)列隊(duì)頭空間 void P ROCESS: :U nio nTable(i nt i, i nt j) (P ageTablei=j; return;)void P ROCESS: Print? ageTable(void) (cout PAGETABLE (頁表)“endl;cout頁號(hào) ID 塊號(hào) ID#endl;for(i nt i=O;iMM_SIZE;i+)if(P ageTablei!=-1)printf(n %-2d %-2dn
6、”,i, PageTablei);coute ndl;return;)void In itial_MM(void) ; / 初始化void Menu (void) ; / 菜單void CheckMM(void) ; / 查看內(nèi)存狀態(tài)void PrintProList (void); 打印當(dāng)前用戶進(jìn)程列表void CheckPro (void) ; / 查看進(jìn)程狀態(tài)void CreatePro(void) ; / 創(chuàng)建新用戶進(jìn)程 void DelPro(void) : / 刪除用戶進(jìn)程 /*主函數(shù)*/ int main( void) ( sran d(time(0);In itial_W();
7、Men u();return 0;)/*初始化內(nèi)存狀態(tài)*/ void In itial_W(void) (memset (MM, 0, sizeof (i nt) *MM_SIZE) ; /缺省所有內(nèi)存塊空閑(0)int USE二rand()M+2; 初始內(nèi)存占用系數(shù)int UsedMM=MM_SIZE/USE; / 初始內(nèi)存 占用數(shù)(占用率=USEMM/MM_SIZE)for(int i=0;i=-l); /檢查編號(hào)為id的內(nèi)存塊是否已分配給系統(tǒng)MMid=-l;UsedNum+=UsedMM;FreeNum-=UsedMM;return;)/*菜單*/void Menu (void)(int
8、 select;while(true)(system(,zcls,z);coute ndl;coute ndl;cout,, 1.檢查內(nèi)存的狀態(tài)endl;coute ndl;coutz,2.檢查進(jìn)程的狀態(tài)endl;coute ndl;cout 3.倉建新進(jìn)程(endl;coute ndl;cout,, 4.冊(cè)Ij 除進(jìn)程endl;coute ndl;cout 5.退出 select;if(select=5)break;switch(select)(case l:CheckMM();break;case 2:Check Pro();break;case 3:Create Pro();break;
9、 case 4:De IPro ();break; default: cout出現(xiàn)錯(cuò)誤,請(qǐng)重新輸入! endl;Slee p(WAITTIME/2); break;)return;)/*查看內(nèi)存狀態(tài)*/void CheckNM(void) system(cls); coute ndl;cout主內(nèi)存(塊號(hào))ID#二6ROW(*iR+jCendl;cout OC IC 2C 3C 4C 5C 6C 7C 8C 9Ce ndl;for(i nt i=O;iROW;i+) (prin tf (%dR ”, i);for(i nt j=0;jCOL;j+)prin tfC%2d , MMROW*i+j
10、);coute ndl;)cout T :系統(tǒng)使用的內(nèi)存endl;cout,z 0 :釋放內(nèi)存endl;cout,z n : PROCESS.n 使用 內(nèi)存“endl;coute ndl;cout Key;if (Key二二YKey二二,y,) break;cout”請(qǐng)輸入,Y,”endl;cout你現(xiàn)在只能返回菜單e ndl;)return;)/*創(chuàng)建新用戶進(jìn)程*/void Create Pro(void) ( system(cls); coute ndl;cout(創(chuàng)建新的進(jìn)程 endl;/*輸入新進(jìn)程參數(shù)*/char name NEME LEN ; / 新進(jìn)程名字int pN; 新進(jìn)程所
11、需占用的頁數(shù)coutn ame;coutpN;if(pNFreeNum) 檢查空閑塊數(shù)是否足夠分配給新進(jìn)程 (coute ndl;couty內(nèi)存不足!無法創(chuàng)建該進(jìn)程,請(qǐng)清理內(nèi)存再重試endl;cout自動(dòng)返回菜單n ext =ProLin kHead-n ext;ProL in kHead-n ext=t mp; /*為進(jìn)程分配內(nèi)存水/ int j=0;for(i nt i=0;i pN;i+)枚舉進(jìn)程頁號(hào),為其分配內(nèi)存塊 (for(; jGet plD();tmp-Union Table(i,j); break;) ) coute ndl;cout創(chuàng)建進(jìn)程name成功!endl;cout自動(dòng)
12、返回菜單endl;Slee p(WAITTIME);return;)/*打印當(dāng)前用戶進(jìn)程列表*/void Print? roList(void) (coute ndl;cout進(jìn)程狀態(tài)n ext) ( p=p-n ext;printf( %10s %2d %4dn”, p-Get pN ame(), p-Get plD(), p-Get PageNum(); return;/*查看進(jìn)程狀態(tài)*/void Check Pro(void) ( system(cls); Print? roList ();if (ProCn t=0)cout 當(dāng)前不存在任何用戶進(jìn)程,ze ndl;cout自動(dòng)返回菜單e
13、ndl;Slee p(WAITTIME);return; coutpid;bool flag二false; 標(biāo)記是否找至編號(hào)為 pid的進(jìn)程 P ROCESS* p=ProLin kHead- next;while( p) ( if (p-Get plD() !二pid) p=p-n ext;else flag=true; break;) ) if(!flag) cout輸入錯(cuò)誤!不存在的進(jìn)程!Get pN ame ()_Get plD() e ndl; cout,z PAGENUM (頁數(shù)):“GetPageum() PrintPageTableO; 打 印 pid 進(jìn)程的頁表 coutBa
14、ck to Me nu? (Y/N),e ndl; while(true)(char Key;cin Key;if(Key=Y II Key=, y )break;cout”請(qǐng)輸入Y endl;cout你現(xiàn)在只能返回菜單e ndl; return; /*刪除用戶進(jìn)程*/void Del Pro(void) ( systemCcls,z);PrintProList (); 先打印用戶進(jìn)程歹U表 int select;cout冊(cè)lj除指定進(jìn)程.endl;cout(2)冊(cè)lj除所有進(jìn)程. select)(if(select=l select=2) break;cout錯(cuò)誤! endl;coute n
15、dl;if(select=l) 刪除指定用戶進(jìn)程(int p id;coutpid;bool flag二false; 標(biāo)記是否找至lj編號(hào)為pid的進(jìn)程 P ROCESS* p 仁 P roLi nkHead;P ROCESS* p 2=ProLi nkHead-) next;while( p2)(if (p 2-Get plD() !=pid)(pl=pl-n ext;p2=p2-n ext;else flag=true;pl-n ext =p2-n ext;delete p2; 釋放pid進(jìn)程對(duì)象占用的空間break; if(flag)(ProCn t;for(int i=O;iMM_SI
16、ZE;i+) 釋放被 pid 進(jìn)程占用的內(nèi)存塊 if (MMi=pid)UsedNum;FreeNum+;cout刪除成功! z,endl;)elsecout刪除失?。【幪?hào)為PID的進(jìn)程不存在! next;while( p)(P ROCESS* tmp=p;p=p-n ext;delete tmp;)ProL in kHead-n ext=0;for(i nt i=O;iMM_SIZE;i+) 釋放所有被用戶進(jìn)程占用的內(nèi)存塊(MMi=O;UsedNum;FreeNum+;coutV所有進(jìn)程刪除成功! e ndl;cout自動(dòng)返回菜單endl;Slee p(WAITTIME);return;分別輸入下列序號(hào)得到以下結(jié)果:士?jī)?nèi)存H總號(hào)MDRMiR*其HH9c IC 2C 3
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧解決方案:智能城市管理
- 消防應(yīng)急避險(xiǎn)
- 3.2.3離子反應(yīng) 課件 高一上學(xué)期化學(xué)蘇教版(2019)必修第一冊(cè)
- 糖尿病個(gè)人教育與護(hù)理
- 傳統(tǒng)毛筆課件教學(xué)課件
- 日常生活食品安全
- 生產(chǎn)安全事故案例培訓(xùn)教材
- 布谷鳥節(jié)奏游戲教案反思
- 弧度制說課稿
- 海水的運(yùn)動(dòng)說課稿
- 《上海車展報(bào)告》課件
- 數(shù)學(xué)象棋:將數(shù)學(xué)應(yīng)用于象棋策略和思考
- 大學(xué)生生涯規(guī)劃與職業(yè)發(fā)展智慧樹知到期末考試答案2024年
- 消毒供應(yīng)室護(hù)理查房
- 年產(chǎn)十二萬噸天然橙汁食品工廠設(shè)計(jì)樣本
- 消防安全與建筑設(shè)計(jì)的結(jié)合
- 幼兒細(xì)菌科普知識(shí)
- 保潔綠化養(yǎng)護(hù)管理專項(xiàng)方案
- 提高門診患者滿意度的品管圈課件
- 膀胱疼痛綜合癥間質(zhì)性膀胱炎上海第二醫(yī)科大學(xué)課件
- 國(guó)家開放大學(xué)《人文英語2》綜合練習(xí)參考答案
評(píng)論
0/150
提交評(píng)論