操作系统实验_动态分区存储管理方式的主存分配回收.docVIP

操作系统实验_动态分区存储管理方式的主存分配回收.doc

  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文档。上传文档
查看更多
操作系统实验_动态分区存储管理方式的主存分配回收.doc

?操作系统实验_动态分区存储管理方式的主存分配回收 //////////////////////////////////////////////////////////// // 功能: //?? 《计算机操作系统》实验 //?? 首次适应性算法 //?? 摸拟 动态分区 存储管理方式的主存 分配 和 回收 // 时间: //?? 2005-11-14 //////////////////////////////////////////////////////////// ? #include iostream.h #include iomanip.h #define ERR_NOFREEAREA 1 #define ERR_NOADEQUACYAREA 2 #define ERR_ALLOCATED 4 #define ERR_NOJOBS 1 #define ERR_NOSUCHJOB 2 #define ERR_RECLAIMED 4 typedef struct tagUsedNode { ?long address; ?long length; ?int flag;?//作业名 ?struct tagUsedNode *next; } USED_AREA , *USED_TABLE; typedef struct tagFreeNode { ?long address; ?long length; ?struct tagFreeNode *next; } FREE_AREA , *FREE_TABLE; //空闲区、作业区链表 USED_TABLE usedTable = NULL; FREE_TABLE freeTable = NULL; //给作业分配空间 //jobname: 作业名 //jobsize: 作业所需空间大小 int Allocate( int jobname , long jobsize ) { ?//如果没有空闲区 ?if( freeTable == NULL ) ??return ERR_NOFREEAREA; ?FREE_TABLE p = freeTable; ?FREE_TABLE q = p; ?//找首次适应空闲区 ?while( p != NULL p-length jobsize ) ?{ ??q = p; ??p = p-next; ?} ?//如果找不到有足够空间的分区 ?if( p == NULL ) ??return ERR_NOADEQUACYAREA; ?USED_TABLE x = new USED_AREA; ?x-address = p-address; ?x-length = jobsize; ?x-flag = jobname; ?x-next = NULL; ?//如果该分区大于作业需求,空间大小减去作业大小 ?if( p-length jobsize ) ?{ ??p-length -= jobsize; ??p-address += jobsize; ?} ?//如果该分区等于作业大小,删除该分区 ?else ?{ ??if( p == freeTable ) ???freeTable = NULL; ??else ???q-next = p-next; ??delete p; ?} ?//作业加入“作业表”中 ?USED_TABLE r = usedTable; ?USED_TABLE t = r; ?while( r != NULL r-address x-address ) ?{ ??t = r; ??r = r-next; ?} ? ?if( usedTable == NULL ) ??usedTable = x; ?else ?{ ??x-next = r; ??t-next = x; ?} ?return ERR_ALLOCATED; } //回收作业空间 //jobname: 作业名 int Reclaim( int jobname ) { ?if( usedTable == NULL ) ??return ERR_NOJOBS; ?USED_TABLE p = usedTable; ?USED_TABLE q = p; ?while( p != NULL p-flag != jobname ) ?{ ??q = p; ??p = p-next; ?} ?//如果没有该作业 ?if( p == NULL ) ??return ERR_NOSUCHJOB; ?//回收后的空间加入到空闲区 ?FREE_TABLE r = freeTable; ?FREE_TABLE t = r; ?FREE_TABLE x; ?whil

文档评论(0)

天马行空 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档