实验三分页管理的主存分配和回收.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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.

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档