操作系统课程设计-模拟设计页式存储管理的分配与回收(2)
/*程序结束时,释放申请的动态内存*/ void Destroy(void) { list<reqtabitem>::iterator pos=reqtable.begin(); for(pos=reqtable.begin();pos!=reqtable.end();pos++) { if((*pos).state==true) delete [](*pos).pgtabadr; } reqtable.clear(); }
/* 打印出进程请求表*/ void PrintReqtable(void) { cout<<endl; cout<<"|--------------------------------------------------------------------|"<<endl; cout<<"| 进程请求表
|"<<endl; cout<<"|--------------------------------------------------------------------|"<<endl; cout<<"|"<<setw(8)<<"进程号" <<setw(16)<<"请求页面数" <<setw(16)<<"页表起始地址" <<setw(16)<<"页表长度" <<setw(16)<<"状态 |"<<endl; cout<<"|---------------------------------------------------------------------|"<<endl; list<reqtabitem>::iterator pos=reqtable.begin(); for(pos=reqtable.begin();pos!=reqtable.end();pos++) { cout<<"|"<<setw(8)<<(*pos).pid <<setw(16)<<(*pos).reqpagenum <<setw(16)<<(*pos).pgtabadr <<setw(16)<<((*pos).reqpagenum) * pagesize; if((*pos).state) cout<<setw(4)<<"已分配 |"<<endl; else cout<<setw(4)<<"未分配 |"<<endl; if((*pos).pid!=reqtable.back().pid)
cout<<"|--------------------------------------------------------------------|"<<endl; else
cout<<"|--------------------------------------------------------------------|"<<endl; } }
/*打印页表*/
void PrintPageTable(void) { unsigned pid; int i; bool flag=false; cout<<"请输入进程号:"; cin>>pid; list<reqtabitem>::iterator pos=reqtable.begin(); for(pos=reqtable.begin();pos!=reqtable.end();pos++) { if((*pos).pid==pid&&(*pos).state==true) { flag=true; cout<<"|---------------------------|"<<endl; cout<<"| 此进程的页表 |"<<endl; cout<<"|---------------------------|"<<endl; cout<<"|"<<setw(16)<<"页号" <<setw(6)<<"块号 |"<<endl; cout<<"|---------------------------|"<<endl;
int reqpagenum=(*pos).reqpagenum; for(i=0;i<reqpagenum;i++) { cout<<"|"<<setw(16)<<(*pos).pgtabadr[i].pagenum <<setw(6)<<(*pos).pgtabadr[i].blocknum<<" |"<<endl; if(i!=reqpagenum-1) cout<<"|---------------------------|"<<endl; else cout<<"|---------------------------|"<<endl; } } } if(flag==false) cout<<"系统中不存在该进程或者该进程还没有被分配内存!\n"; } cout<<endl;
void PrintMem(void) { cout<<"内存总块数为"<<pagenum<<",已经使 "<<pagenum-Get_Mempagenum()<<"块!"<<endl; 用 cout<<"现在还有"<<Get_Mempagenum()<<"块内存区域空闲!"<<endl; } cout<<endl;
void PrintBlockSize(void) { } cout<<"cout<<endl; 物理块大小为:"<<pagesize<<"KB"<<endl;
/*void Kill(void) 结束指定进程*/ { bool flag; int i; reqtabitem temp; list<reqtabitem>::iterator pos=reqtable.begin(); int pid; do{ cout<<"请输入进程号:"; flag=false; cin>>pid; for(pos=reqtable.begin();pos!=reqtable.end();pos++) { if((*pos).pid==pid) { flag=true; temp=*pos; break; } } if(flag==false) cout<<"系统中不存在该进程!"<<endl; cout<<endl; }while(flag==false); for(i=0;i<int(temp.reqpagenum);i++)
了
mempage[temp.pgtabadr[i].blocknum]=0; reqtable.remove(temp);
//重新为没有分配到内存的进程分配内存
for(pos=reqtable.begin();pos!=reqtable.end();pos++) {
if((*pos).state==false) { int reqpnum; reqpnum=(*pos).reqpagenum; if(reqpnum<=Get_Mempagenum()) { (*pos).state=true; pagetable temp = new pgtabitem[reqpnum]; if(temp==NULL) { cout<<"内存分配失败!"<<endl; cout<<endl; exit(0); } (*pos).pgtabadr=temp; for(i=0;i<int(reqpnum);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; } } }
/*初始化系统*/ void InitSys(void) { cout.setf(ios::left);//左对齐 Init_Mempage(); Init_Reqtable(); Init_DistMem(); }
/*输出主菜单*/
void MainMenu(void) { cout<<"页式存储管理的分配与回收"<<endl; cout<<"1.手动创建进程"<<endl; cout<<"2.显示进程页表"<<endl; cout<<"3.显示请求表"<<endl; cout<<"4.撤销进程"<<endl; cout<<"5.显示内存使用情况"<<endl; cout<<"6.显示物理块大小"<<endl; cout<<"7.退出系统"<<endl; cout<<"请输入您的选择(0--7):"; }
/*选择函数*/
void MainChoice() { int choice; do{ MainMenu(); cin>>choice; switch(choice) { case 1: Dist_Mem(); break; case 2: PrintPageTable(); break; case 3: PrintReqtable(); break; case 4: Kill(); break; case 5: PrintMem(); break; case …… 此处隐藏:1811字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [求职职场]加法运算定律的运用练习题
- [求职职场]大型石油化工工业过程节能新技术
- [求职职场]2015-2020年中国箱纸板行业分析与投资
- [求职职场]NADEX-IWC5A点焊机故障代码
- [求职职场]英语阅读 非常有用
- [求职职场]鲁卫疾控发〔2012〕2号(联合,印发山东
- [求职职场]2014年莆田公务员行测技巧:数字推理的
- [求职职场]基于最近发展区理论的高中数学课堂有效
- [求职职场]与贸易有关的知识产权协议
- [求职职场]【王风范】微演说·职场演说三
- [求职职场]新时代国珍健康大课堂
- [求职职场]群论期末考试复习题
- [求职职场]施工现场消防安全专项施工方案(范本)-
- [求职职场]初中物理光学知识点归纳完美版
- [求职职场]毕业设计总结与体会范文
- [求职职场]江南大学2018年上半年展示设计第1阶段
- [求职职场]景尚乡民兵参战支前保障方案
- [求职职场]【优质】2019年工会职工之家建设工作总
- [求职职场]数据库技术与应用—SQL Server 2008(第
- [求职职场]汽车变速箱构造与工作原理
- 首钢工业区工业遗产资源保护与再利用研
- 第4课 《大学》节选
- 2016程序文件——检验检测结果发布程序
- 2011年高考试题文言文阅读全解释__2011
- 化学是一门基础的自然科学
- 海外做市商制度的借鉴意义
- 外国建筑史复习资料(
- 七年级下思想品德期末综合测试(二)
- 思政课部2013年上学期教学工作总结
- 电大国际公法任务3 0004
- 《圆的认识》教学设计
- 中国轨道交通牵引变流器行业市场发展调
- 中泰证券#定期报告:坚守时代硬科技和
- 浅论企业财务管理与企业经营投资风险的
- 大功率半导体激光器光纤耦合技术调研报
- 中国传统家具的现状与发展探讨
- Broadcom数字电视芯片助海尔扩展高清电
- 新HSK4词汇练习 超全(五)
- 2013届高考数学单元考点复习12
- 雨霖铃精品课件




