操作系統(tǒng)的存儲(chǔ)管理方式--資料_第1頁(yè)
操作系統(tǒng)的存儲(chǔ)管理方式--資料_第2頁(yè)
操作系統(tǒng)的存儲(chǔ)管理方式--資料_第3頁(yè)
操作系統(tǒng)的存儲(chǔ)管理方式--資料_第4頁(yè)
操作系統(tǒng)的存儲(chǔ)管理方式--資料_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余5頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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è)試 WINDOWS2000/XP 系統(tǒng)內(nèi)存、實(shí)驗(yàn)環(huán)境:1. PC 機(jī)一臺(tái)(VC C VB 等編程環(huán)境)三、實(shí)驗(yàn)內(nèi)容和要求:1.了解 WINDOWS 用戶進(jìn)程地址空間分布、系統(tǒng)地址空間分布、WINDOWS 中用戶空間內(nèi)存分配方式(以頁(yè)為單位的虛擬內(nèi)存分配方法)、WINDOWS 的內(nèi)存保護(hù)機(jī)制。四、實(shí)驗(yàn)步驟:#in clude#in clude#in clude#i nclude using n amespace std; const int MM_SIZE=100; / 內(nèi)存塊數(shù)

2、const int ROW=10; /繪制內(nèi)存行數(shù) const int COL=1O; /繪制內(nèi)存列數(shù) const int NEME_LEN=10; / 名字長(zhǎng)度 const intWAITTIME=2000; / 等待時(shí)間 int UsedNum=0; /當(dāng)前已占用的內(nèi)存塊數(shù) int FreeNum=MM_SIZE; /當(dāng)前空閑的內(nèi)存塊數(shù) int ProCnt=O; /當(dāng)前用戶進(jìn)程數(shù) int NowID=1; /當(dāng)前分配的進(jìn)程編號(hào) int MMMM_SIZE; /Mai nMem ony/0 -內(nèi)存塊未被使用/-1 -內(nèi)存塊在初始化時(shí)已被系統(tǒng)占用 /k -內(nèi)存塊已被分配給 pID=k 的用戶

3、進(jìn)程 /* 進(jìn)程 Obj*/class PROCESS public:PROCESS。:next(0)/構(gòu)造函數(shù)重載,用于構(gòu)造隊(duì)列隊(duì)頭 PROCESS(char* Name,intpN):PageNum(pN),next(O) pName=new charNEME LEN;strcpy(pName,Name);PageTable=new intMM_SIZE;for(i nt i=0;iMM_SIZE;i+)PageTablei=-1; plD=NowlD+;PROCESS()delete pName;delete PageTable;PROCESS* next; /指向下一個(gè)進(jìn)程char*

4、GetpName(void)co nst return pName; / 獲取進(jìn)程名int GetpID(void)co nst return pID; / 獲取進(jìn)程編號(hào)int GetPageNum(void)const return PageNum; / 獲取進(jìn)程所需頁(yè)數(shù) void UnionTable(int i,int j); /關(guān)聯(lián)頁(yè)號(hào) i與塊號(hào) j(創(chuàng)建頁(yè)表) void PrintPageTable(void); / 打印頁(yè)表protected:char* pName; / 進(jìn)程名int pID; /進(jìn)程編號(hào)int PageNum; /進(jìn)程所需頁(yè)數(shù)int* PageTable; /

5、頁(yè)表;PROCESS* ProLinkHead=new PROCESS; / 申請(qǐng)進(jìn)程隊(duì)列隊(duì)頭空間 void PROCESS:U nio nTable(i nt i,i nt j)PageTablei=j;return;void PROCESS:Pri ntPageTable(void)cout PAGETABLE (頁(yè)表)endl;cout頁(yè)號(hào) ID 塊號(hào) ID#endl;for(i nt i=0;iMM_SIZE;i+)if(PageTablei!=-1)printf(” %-2d %-2dn,i,PageTablei);coute ndl;return;void In itial_MM(

6、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_MM();Men u();return 0;/*初始化內(nèi)存狀態(tài)*/void In itial_MM(void)memset(MM,0,si

7、zeof(i nt)*MM_SIZE); /缺省所有內(nèi)存塊空閑(0)int USE=rand()%4+2; /初始內(nèi)存占用系數(shù)int UsedMM=MM_SIZE/USE; / 初始內(nèi)存占用數(shù)(占用率=USEMM/MM_SIZE)for(int i=0;iUsedMM;i+) / 隨機(jī)分配 UsedMM 個(gè)內(nèi)存塊給系統(tǒng)(-1)int id;doid=ra nd()%MM_SIZE;while(MMid=-1); / 檢查編號(hào)為 id 的內(nèi)存塊是否已分配給系統(tǒng)MMid=-1;UsedNum+=UsedMM;FreeNum-=UsedMM;return;/*菜單*/void Menu (void)

8、int select;while(true)system(cls);coute ndl;coute ndl;cout 1.檢查內(nèi)存的狀態(tài)endl;coute ndl;cout 2.檢查進(jìn)程的狀態(tài)endl;coute ndl;cout 3.創(chuàng)建新進(jìn)程endl;coute ndl;cout 4.刪除進(jìn)程endl;coute ndl;cout 5.退出endl;coute ndl;cout select;if(select=5)break;switch(select)case 1:CheckMM();break;case 2:CheckPro();break;case 3:CreatePro();b

9、reak;case 4:DelPro();break;default:cout出現(xiàn)錯(cuò)誤,請(qǐng)重新輸入!endl;Sleep(WAITTIME/2);break;return;/*查看內(nèi)存狀態(tài)*/void CheckMM(void)system(cls);coute ndl;cout主內(nèi)存(塊號(hào))ID#=ROW*iR+jCendl;cout 0C 1C 2C 3C 4C 5C 6C 7C 8C 9Ce ndl;for(i nt i=0;iROW;i+)printf(%dR ,i);for(i nt j=0;jCOL;j+)prin tf(%2d ”,MMROW*i+j);coute ndl;cou

10、t -1 :系統(tǒng)使用的內(nèi)存endl;cout 0 :釋放內(nèi)存endl;cout n : PROCESS.n 使用內(nèi)存endl;coute ndl;cout返回菜單?(Y/N) Key;if(Key=Y | Key=y) break;cout請(qǐng)輸入Y.endl;cout你現(xiàn)在只能返回菜單 e ndl;return;/*創(chuàng)建新用戶進(jìn)程*/void CreatePro(void)system(cls);coute ndl;cout創(chuàng)建新的進(jìn)程endl;/*輸入新進(jìn)程參數(shù)*/char nameNEME LEN; / 新進(jìn)程名字int pN; /新進(jìn)程所需占用的頁(yè)數(shù)cout新進(jìn)程名字:;cinn ame

11、;cout pN;if(pNFreeNum) /檢查空閑塊數(shù)是否足夠分配給新進(jìn)程coute ndl;cout內(nèi)存不足!無(wú)法創(chuàng)建該進(jìn)程,請(qǐng)清理內(nèi)存再重試endl;cout自動(dòng)返回菜單n ext=ProL in kHead-n ext;ProL in kHead-n ext=tmp;/*為進(jìn)程分配內(nèi)存*/int j=0;for(i nt i=0;ipN;i+) /枚舉進(jìn)程頁(yè)號(hào),為其分配內(nèi)存塊for(;jGetpID();tmp- Union Table(i,j);break;coute ndl;cout創(chuàng)建進(jìn)程name成功!endl;cout自動(dòng)返回菜單endl;Sleep(WAITTIME);r

12、eturn;/*打印當(dāng)前用戶進(jìn)程列表*/void Prin tProList(void)coute ndl;cout進(jìn)程狀態(tài)endl;coutPID PAGENUM 名稱n ext)p=p-n ext;printf(” %-10s %2d %4dn,p-GetpName(),p-GetplD(),p-GetPageNum();return;/*查看進(jìn)程狀態(tài)*/void CheckPro(void)system(cls);Prin tProList();if(ProC nt=O)cout當(dāng)前不存在任何用戶進(jìn)程e ndl;cout自動(dòng)返回菜單endl;Sleep(WAITTIME);return;

13、cout輸入 PID 查看指定進(jìn)程的詳細(xì)信息: pid;bool flag=false; /標(biāo)記是否找到編號(hào)為pid 的進(jìn)程PROCESS* p=ProL in kHead- next;while(p)if(p-GetpID()!=pid)p=p-n ext;elseflag=true;break;if(!flag)cout輸入錯(cuò)誤!不存在的進(jìn)程!endl;elsesystem(cls);coute ndl;cout PROCESS_GetpName()_GetplD()e ndl;cout PAGENUM(頁(yè)數(shù)):GetPageNum()endl;coutPrintPageTable();

14、打印 pid 進(jìn)程的頁(yè)表coutBack to Me nu? (Y/N) Key;if(Key=Y | Key=y)break;cout請(qǐng)輸入Yendl;cout你現(xiàn)在只能返回菜單 e ndl;return;/*刪除用戶進(jìn)程*/void DelPro(void)system(cls);PrintProList(); /先打印用戶進(jìn)程列表int select;cout (1)刪除指定進(jìn)程.endl;cout (2)刪除所有進(jìn)程.endl; cout select)if(select=1 | select=2)break;cout錯(cuò)誤!endl;coute ndl;if(select=1) /刪除

15、指定用戶進(jìn)程int pid;cout pid;bool flag=false; /標(biāo)記是否找到編號(hào)為 pid 的進(jìn)程PROCESS* p 仁 ProLi nkHead;PROCESS* p2=ProLi nkHead- next;while(p2)if(p2-GetplD()!=pid)p1=p1- n ext;p2=p2-n ext;elseflag=true;p1- n ext=p2-n ext;delete p2; /釋放 pid 進(jìn)程對(duì)象占用的空間break;if(flag)ProC nt-;for(int i=O;iMM_SIZE;i+)/釋放被 pid 進(jìn)程占用的內(nèi)存塊if(MMi=pid)MMi=O;UsedNum-;FreeNum+;cout刪除成功!endl;elsecout刪除失?。【幪?hào)為 PID 的進(jìn)程不存在! next;while(p)PROCESS* tmp=p;p=p-n ext;delete tmp;ProL in kHead-n ext=0;for(i nt i=O;i0)MMi=0;UsedNum-;FreeNum+;cout所有進(jìn)程刪除成功!e ndl;cout自動(dòng)返回菜單endl;Sleep(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論