資源簡介
模擬設計頁式存儲管理的分配與回收
段式頁式管理

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?“page.h“
#include?“Random.h“
using?namespace?std;
list?reqtable;
RandomNumber?random;
//隨機數產生器
unsigned?pagenum=random.Random(80)+21;
//內存頁面數?21-100
unsigned?pagesize=random.Random(16)+5;
//頁面大小 5-20?
unsigned?pnum=random.Random(4)+5;
//進程的個數?5-8
int?*?mempage=new?int[pagenum];
//用整數數組模擬內存頁面數
/*初始化內存使用表*/
void?Init_Mempage(void)
{
int?i=0;
for(i=0;i mempage[i]=0;
}
/*獲取內存的使用情況*/
unsigned?Get_Mempagenum(void)
{
unsigned?sum=0;
for(int?i=0;i if(mempage[i]==0)
sum++;
return?sum;
}//Get_Mempagenum
/*初始化默認的請求表*/
void?Init_Reqtable(void)
{
int?i;
for(i=1;i<=pnum;i++)
{
reqtabitem?preq;
preq.pid=i;
preq.reqpagenum=random.Random(4)+2;
//進程的大小?2-5
preq.state=false;
preq.pgtabadr=NULL;
reqtable.push_back(preq);
}
}?
/*為默認的進程分配內存*/
void?Init_DistMem(void)
{
int?reqpnum; //進程請求頁面數
int?i;
list::iterator?pos=reqtable.begin();
for(;pos!=reqtable.end();pos++)
{
reqpnum=(*pos).reqpagenum;
if(reqpnum>Get_Mempagenum())
cout<<“沒有足夠的內存!“< else
{
(*pos).state=true;
pagetable?temp?=?new?pgtabitem[reqpnum];
if(temp==NULL)
{
cout<<“Memory?allocation?Error!“< exit(0);
}//if?memory?allocation?failure
(*pos).pgtabadr=temp;
for(i=0;i {
temp[i].pagenum=i; //頁表的頁號
int?randnum=random.Random(pagenum)+1;
//隨機產生一個塊號
while(mempage[randnum]==1)
randnum=random.Random(pagenum)+1;
temp[i].blocknum=randnum;
//頁表的塊號
mempage[randnum]=1;
}//init?pagetable?for?this?process
}
}
}//
/*手動創建進程并分配內存*/
void?Dist_Mem(void)
{
int?i;
reqtabitem?preq; //新創建進程記錄
unsigned?pid; //進程號
unsigned?reqpnum; //請求頁面數
bool?flag=false;
do{
cout<<“請輸入進程號:“;
flag=false;
cin>>pid;
for(list::iterator?pos=reqtable.begin();pos!=reqtable.end();pos++)
{
if((*pos).pid==pid)
{
flag=true;
cout<<“該進程號已經存在請重新輸入“< break;
}
}
}while(flag==true);
preq.pid=pid;
cout<<“請輸入需要的頁面數:“;
cin>>reqpnum;
preq.reqpagenum=reqpnum;
preq.state=false;
preq.pgtabadr=NULL;
reqpnum=preq.reqpagenum;
if(reqpnum>Get_Mempagenum())
cout<<“沒有足夠的內存進程創建失敗!“< else
{
preq.state=true;
pagetable?temp?=?new?pgtabitem[reqpnum];
if(temp==NULL)
{
cout<<“Memory?allocation?Error!“< exit(0);
}//if?memory?allocation?failure
preq.pgtabadr=temp;
for(i=0;i {
temp[i].pagenum=i; //頁表的頁號
int?randnum=random.Random(pagenum)+1;
//隨機產生一個塊號
while(mempage[randnum]==1)
randnum=random.Random(pagenum)+1;
temp[i].blocknum=randnum;
//頁表的塊號
mempage[randnum]=1;
}//init?pagetable?for?this?process
}
reqtable.push_back(preq);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.......???????238??2006-06-18?18:00??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\os.plg
????.......???????357??2006-02-16?14:36??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Random.cpp
????.......??????4421??2006-06-14?16:06??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\os.dsp
????.......???????527??2006-06-14?16:06??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\os.dsw
????.......???????595??2006-06-16?20:15??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\page.h
????.......???????311??2006-06-16?20:16??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Random.h
?????文件???????8551??2010-01-27?19:42??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\main.cpp
????.......?????48640??2006-06-18?18:11??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\os.opt
?????文件???????7150??2010-01-27?19:42??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Debug\BuildLog.htm
?????文件????????406??2010-01-26?17:11??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Debug\os.exe.em
?????文件?????330752??2010-01-27?19:42??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Debug\vc90.idb
?????文件?????225280??2010-01-27?19:42??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Debug\vc90.pdb
?????文件???????7269??2010-01-26?17:11??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Debug\Random.obj
?????文件????????472??2010-01-26?17:11??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Debug\os.exe.em
?????文件?????650240??2010-01-27?19:42??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Debug\os.exe
?????文件????3337216??2010-01-27?19:42??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Debug\os.pdb
?????文件????????381??2010-01-27?19:42??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Debug\os.exe.intermediate.manifest
?????文件?????????67??2010-01-27?19:42??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Debug\mt.dep
?????文件?????559423??2010-01-27?19:42??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Debug\main.obj
?????文件????1561084??2010-01-27?19:42??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Debug\os.ilk
?????文件???????5633??2010-01-26?17:11??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\os.vcproj
?????文件????????874??2010-01-27?17:19??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\os.sln
????..A..H.?????10240??2010-01-27?19:51??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\os.suo
?????文件???????1423??2010-01-27?19:51??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\os.vcproj.20100105-2154.Administrator.user
?????文件????2731008??2010-01-27?19:51??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\os.ncb
?????目錄??????????0??2006-06-18?19:52??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收\Debug
?????目錄??????????0??2006-06-18?19:52??計算機0826肖瑤(操作系統)\模擬頁式存儲管理的分配與回收
?????目錄??????????0??2010-01-26?16:53??計算機0826肖瑤(操作系統)
-----------?---------??----------?-----??----
??????????????9492558????????????????????28
............此處省略1個文件信息
- 上一篇:DO-WHILE循環語句的翻譯程序設計LL1法、輸出四元式
- 下一篇:QT5學習資料
評論
共有 條評論