《主存储器空间的分配和回收》.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二 主存储器空间的分配和回收 实验题目 模拟在分页式管理方式下采用位示图来表示主存分配情况,实现主存空间的分配和回收。 [提示]: (1)、 分页式存储器把主存分成大小相等的若干块,作业的信息也按块的大小分页,作业装入主存时可把作业的信息按页分散存放在主存的空闲块中,为了说明主存中哪些块已经被占用,哪些块是尚未分配的空闲块,可用一张位示图来指出。位示图可由若干存储单元来构成,其中每一位与一个物理块对应,用0/1表示对应块为空闲/已占用。 (2)、假设某系统的主存被分成大小相等的64块,则位示图可用8个字节来构成,另用一单元记录当前空闲块数。如果已有第0,1,4,5,6,9,11,13,24,31,共10个主存块被占用了,那么位示图情况如下: 字 位 节 数 号 0 1 2 3 4 5 6 7 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 0 2 0 0 0 0 0 0 0 0 3 1 0 0 0 0 0 0 1 4 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 (3)、当要装入一个作业时,根据作业对主存的需要量,先查当前空闲块数是否能满足作业要求,若不能满足则输出分配不成功。若能满足,则查位示图,找出为“0”的一些位,置上占用标志“1”,从“当前空闲块数”中减去本次占用块数。 按找到的计算出对应的块号,其计算公式为: 块号= j?8+i 其中,j表示找到的是第n个字节,I表示对应的是第n位。 根据分配给作业的块号,为作业建立一张页表,页表格式: 页 号 块 号 0 1 2 ? ? (4) 、当一个作业执行结束,归还主存时,根据该作业的页表可以知道应归还的块号,由块号可计算出在位示图中的对应位置,把对应位的占用标志清成“0”,表示对应的块已成为空闲块。归还的块数加入到当前空闲块数中。由块号计算在位示图中的位置的公式如下: 字节号 j=[块号/8] ([ ]表示取整) 位数 i={块号/8} ({ }表示取余) (5) 设计实现主存分配和回收的程序。假定位示图的初始状态如(2)所述,现有一信息量为5页的作业要装入,运行你所设计的分配程序,为作业分配主存且建立页表(格式如(3)所述)。然后假定有另一作业执行结束,它占用的块号为第4,5,6和31块,运行你所设计的回收程序,收回作业归还的主存块。 要求能显示和打印分配或回收前后的位示图和当前空闲块数,对完成一次分配后还要显示或打印为作业建立的页表。 程序中使用的数据结构及符号说明 1、数据结构: 本程序中使用的是:一维数组和二维数组 2、函数说明: void menu():显示菜单选项 huawei():调用menu()函数显示菜单,并且根据允许输入调用相应函数,执行操作。 void Initvalue():根据输入开辟相应的块号空间,并且按照题目要求初始化已占用块号 void kongxiankuai():将空闲块号保存在kuai[]数组中,并记录数组中元素个数 void printkongxiankuaishu():打印空闲块号 void caozuo():根据作业所需块数修改位示图 void yebiao():打印页表 void weishitu():打印位示图 void guihuan():按照需要释放内存 流程图 huawei()Main函数 huawei() Main函数 Initvalue()weishitu()yebiao()kongxiankuai()caozuo()kongxiankuai()guihuan()printkongxiankuaishu()exit(0) Initvalue() weishitu() yebiao() kongxiankuai() caozuo() kongxiankuai() guihuan() printkongxiankuaishu() exit(0) 打印一份源程序并附上注释 Cpp文件: #includestdio.h #includestring.h #includemalloc.h #includestdlib.h #includelin1402.h int main() { huawei(); return 0; } 头文件: int **table; int m,n; int b=0; int *kuai; int changdu[10]; int k; int v=0; int kuaihao[10][64]; /*根据输入开辟相应的块号空间,并且按照题目

文档评论(0)

kanghao1 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档