下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 操作系统实验—动态分区分配算法

操作系统实验—动态分区分配算法.doc

操作系统实验—动态分区分配算法

卓雯雅小雅
2019-04-05 0人阅读 举报 0 0 暂无简介

简介:本文档为《操作系统实验—动态分区分配算法doc》,可适用于IT/计算机领域

操作系统实验报告实验动态分区分配算法报告日期:姓名:学号:班级:任课教师:实验动态分区分配算法一、实验内容编写一个内存动态分区分配模拟程序模拟内存的分配和回收的完整过程。二、实验目的一个好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器而且要能合理地分配和使用这些存储空间。当用户提出申请存储器空间时存储管理必须根据申请者的要求按一定的策略分析主存空间的使用情况找出足够的空闲区域分配给申请者。当作业撤离或主动归还主存资源时则存储管理要收回作业占用的主存空间或归还部分主存空间。主存的分配和回收的实现与主存储器的管理方式有关的通过本实验帮助学生理解在可变分区管理方式下应怎样实现主存空间的分配和回收。三、实验原理模拟在可变分区管理方式下采用最先适应算法实现主存分配和回收。()可变分区方式是按作业需要的主存空间大小来分割分区的。当要装入一个作业时根据作业需要的主存量查看是否有足够的空闲空间若有则按需要量分割一个分区分配给该作业若无则作业不能装入。随着作业的装入、撤离主存空间被分成许多个分区有的分区被作业占用而有的分区是空闲的。例如:kkkkkk操作系统作业作业空闲区作业空闲区 为了说明哪些区是空闲的可以用来装入新作业必须要有一张空闲区说明表格式如下: 起址长度状态第一栏KK未分配第二栏KK未分配           其中起址指出一个空闲区的主存起始地址。长度指出从起始地址开始的一个连续空闲的长度。状态有两种状态一种是“未分配”状态指出对应的由起址指出的某个长度的区域是空闲区。()当有一个新作业要求装入主存时必须查空闲区说明表从中找出一个足够大的空闲区。有时找到的空闲区可能大于作业需要量这时应把原来的空闲区变成两部分:一部分分给作业占用另一部分又成为一个较小的空闲区。为了尽量减少由于分割造成的空闲区而尽量保存高地址部分有较大的连续空闲区域以利于大型作业的装入。为此在空闲区说明表中把每个空闲区按其地址顺序登记即每个后继的空闲区其起始地址总是比前者大。()采用最先适应算法(顺序分配算法)分配主存空间。按照作业的需要量查空闲区说明表顺序查看登记栏找到第一个能满足要求的空闲区。当空闲区大于需要量时一部分用来装入作业另一部分仍为空闲区登记在空闲区说明表中。由于本实验是模拟主存的分配所以把主存区分配给作业后并不实际启动装入程序装入作业而用输出“分配情况”来代替。()当一个作业执行结束撤离时作业所占的区域应该归还归还的区域如果与其它空闲区相邻则应合成一个较大的空闲区登记在空闲区说明表中。()请按最先适应算法设计主存分配和回收的程序。假设初始时主存中没有作业现按下面序列进行内存的申请与释放:作业申请K作业申请K作业释放K作业申请K作业申请K作业申请K作业申请K作业释放K。请你为它们进行主存分配和回收把空闲区说明表的初值以及每次分配或回收后的变化显示出来或打印出来。四、实验报告画出算法流程图。源代码#defineCRTSECURENOWARNINGS#include<stdioh>#include<stringh>#include<stdlibh>#include<mathh>#defineNintn空闲分区的个数intn作业区的个数structkongxian{intstart 起址intend  结束intlength 长度}kongxianNstructzuoye{intstart 起址intend 结束intlength 长度}zuoyeNintcmp(constvoid*a,constvoid*b){return(*(structkongxian*)a)start(*(structkongxian*)b)start}intcmp(constvoid*a,constvoid*b){return(*(structzuoye*)a)start(*(structzuoye*)b)start}voidinit(){n= 初始时只有一个空闲区n= 初始没有作业kongxianstart=kongxianend=kongxianlength=}voidprint()打印空闲分区{intifor(i=i<ni)printf("空闲分区ID:d起止:d结束:d长度:dn",i,kongxianistart,kongxianiend,kongxianilength)}voidprint()打印作业分区{intifor(i=i<ni)printf("作业分区ID:d起止:d结束:d长度:dn",i,zuoyeistart,zuoyeiend,zuoyeilength)}intmain(){inti,j,t,len,flag,idintfront,middle,behindintt,tinit()print()printf("输入装入新作业输入回收作业输入结束n")while(scanf("d",t)!=EOF){if(t==) 装入新作业{printf("请输入作业的占用空间的长度")scanf("d",len)flag=for(i=i<ni){if(kongxianilength>=len) 首次适应算法{flag=break}}if(!flag){printf("内存分配失败n")}else{将该作业加入作业区里zuoyenstart=kongxianistartzuoyenend=zuoyenstartlenzuoyenlength=lenn 作业数加if(kongxianilength==len)该分区全部用于分配删除该空闲分区{for(j=ij<nj){kongxianjstart=kongxianjstartkongxianjend=kongxianjendkongxianjlength=kongxianjlength}n}else该空闲分区部分用于分配剩余的留在空闲分区中{kongxianistart=lenkongxianilength=len}}}elseif(t==){printf("输入要回收的作业ID")scanf("d",id)front=middle=behind=for(i=i<ni){if(kongxianistart>zuoyeidend)breakif(kongxianiend==zuoyeidstart) 待回收的作业上面有空闲分区{front=t=i}if(kongxianistart==zuoyeidend) 待回收的作业下面有空闲分区{behind=t=i}}if(!front!behind) 待回收的作业上下均没有空闲分区{kongxiannstart=zuoyeidstartkongxiannend=zuoyeidendkongxiannlength=zuoyeidlengthn 空闲分区增加一个qsort(kongxian,n,sizeof(structkongxian),cmp)插入空闲分区后排序for(j=idj<nj) 在作业分区中删除该作业{zuoyejstart=zuoyejstartzuoyejend=zuoyejendzuoyejlength=zuoyejlength}n}if(frontbehind) 待回收的作业上下均有空闲分区middle=if(front!middle) 合并待回收的作业和上面的空闲分区{kongxiantend=zuoyeidlengthkongxiantlength=zuoyeidlengthfor(j=idj<nj) 在作业分区中删除该作业{zuoyejstart=zuoyejstartzuoyejend=zuoyejendzuoyejlength=zuoyejlength}n}if(middle) 合并待回收的作业和上下的空闲分区{kongxiantend=kongxiantendkongxiantlength=(zuoyeidlengthkongxiantlength)删除空闲分区tfor(j=tj<nj){kongxianjstart=kongxianjstartkongxianjend=kongxianjendkongxianjlength=kongxianjlength}nfor(j=idj<nj) 在作业分区中删除该作业{zuoyejstart=zuoyejstartzuoyejend=zuoyejendzuoyejlength=zuoyejlength}n}if(behind!middle)合并待回收的作业和下面的分区{kongxiantstart=zuoyeidlengthkongxiantlength=zuoyeidlengthfor(j=idj<nj) 在作业分区中删除该作业{zuoyejstart=zuoyejstartzuoyejend=zuoyejendzuoyejlength=zuoyejlength}n}}else{printf("操作结束n")break}print()print()}return}程序运行时的初值和运行结果。初始:装入实验要求作业一:装入作业二:作业释放k:作业三申请k作业申请k:作业申请k:作业申请k:作业释放k:如果在要申请一个K的作业空间能否满足?可以满足!五、实验小结通过本次实验我对操作系统中首次适应的内存分配方法有了深刻的理解对理论学习有了很好的促进作用本次的实验难度比实验一难一些也对考验了我的编程能力重要的还是要理解算法。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/18

操作系统实验—动态分区分配算法

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利