- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验三分页管理的主存分配和回收
实验三 分页管理的主存分配和回收
班级: 学号: 姓名:
1.实验内容
主存的分配和去配
2.实验目的
加深对分页管理概念的理解
深入了解分页管理如何进行分配和去配
3.实验设计
3.1 数据结构设计
分页存储管理中,系统要建立一张主存物理块表来记录页框的状态,其中包含的信息有内存总量、已用空间、剩余空间、进程总数、已使用内存块数、当前内存是否有进程。用0表示内存块空闲,1表示内存块在使用。
#define N 100 // 共有100个内存块
int process[N][N+1]; // 存放每个进程的页表
int block[N]; // 内存块状态标志数组,0:空闲,1:使用
int blockCount; // 记录当前内存剩余空间
int processCount; // 记录当前进程数
进行主存分配时,先查看内存块的使用情况,看空闲块数是否满足用户进程的需要。
if(processCount0)
{cout内存详细使用情况如下:\n;
for(int i=0;iN;i++)
{if(process[i][0]0)
{cout进程号:i\n占用内存块:process[i][0];
for(int j=1,count=0;j=process[i][0];j++)
{printf(%2d ,process[i][j],count++);
if(count==15)
{putchar(\n);
printf( );
count = 0;
}
}
putchar(\n);
}
}
}
else
cout当前内存无进程!\n;
空闲块数满足用户需求时,可以创建新的进程,注意进程号不能过大。要将标志0改为1,表示占用。
bool createProcess()
{int pid, pages, k = 0;
loop:cout请输入进程号(小于N)和所需页面数:;
scanf(%d%d, pid, pages);
if(pid99)
{cout错误!进程号过大!\n;
goto loop;
}
if(pagesblockCount)
return false;
blockCount -= pages;
process[pid][0] = pages;
for(int i=1; i=pages; i++)
{while (block[k]==1 k100)
k++;
process[pid][i] = k;
block[k] = 1;
k++;
}
processCount++;
return true;
}
进行主存去配时,首先查看当前是否存在正在进行的进程,若有,则输入要结束的进程号,将占有标志改为0。
bool endProcess()
{int pid, pages;
if(processCount 1)
{ cout当前内存没有进程!\n\n;
return false;
}
printf(当前内存中的进程有%d 个,进程号为:, processCount);
for(int i=0;iN;i++)
if (process[i][0] 0)
printf(%2d , i);
putchar(\n);
cout请输入您要结束的进程号(小于N):;
cinpid;
pages = process[pid][0];
if(pages==0)
{cout对不起!该进程不存在!\n;
return false;
}
for(int j=1;jpages;j++)
{block[process[pid][j]] = 0;
process[pid][j] = -1;
}
process[pid][0] = 0;
processCount--;
blockCount += pages;
return true;
}
3.2 求解方法
进行主存分配时,先查空闲块数是否满足用户进程的要求,若不能,则令进程等待;若能,则查位示图,找出为“0”的位,置占用标志,从空闲块数中减去本次占用块数。进行主存去配时,根据页表可知要释放的块号和块数,计算出其在位示图的位置,将对应位置的标志置0,表示该块已空闲。还要将释放的块数累加到当前空前块总数中。
程序结构如下
4.实验结果
(1)主菜单界面
(2)选择1,创建进程
(3)选择3,查看内存
(4)选择2,结束进程
(5)选择0,退出
5.
您可能关注的文档
- 大学物理下答案第六章.doc
- 家庭功能评定(FAD).doc
- 寒假作业1定稿.docx
- 对当今美术教育发展状况的认识.doc
- 大坝安全监测巡视检查规程.doc
- 对人教版六下“数学思考”的思考.doc
- 大工机械加工工艺及工装毕业设计.doc
- 大智门火车站.doc
- 大学生创业创新项目策划书.doc
- 大师教你调音.doc
- 苏教版数学五年级上册2.5 认识公顷-课件.pptx
- 人教版数学八年级上册14.2.2完全平方公式(二)-课件.ppt
- 人教版英语五年级上册Unit2 第三课时-课件.ppt
- 部编版三年级语文上册元旦快乐 新年寄语课件.ppt
- 外研版(一起)二上Module 8《Unit 1 She goes swimming》ppt课件4.ppt
- 人教版英语三年级上册Unit2 Colours第三课时-课件.ppt
- 外研三年级起点三年级上册《Module 5Unit 1 How many》PPT课件 (2).ppt
- 外研版英语三年级年级上册Module 8 Unit 1 This is Sam’s book-课件.ppt
- 人教版英语三年级上册recycle 1第三课时[1]-课件.ppt
- 四年级英语上册 Module 8 Unit 1 We are going to visit Hainan课件3 外研版(三起).ppt
文档评论(0)