ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:84.79KB ,
资源ID:22972408      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22972408.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统课程设计动态分区分配存储管理Word文档下载推荐.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统课程设计动态分区分配存储管理Word文档下载推荐.docx

1、最坏适应算法每次为作业分配内存时,总是挑选一个最大的空闲分区分割给作业使用算法与最佳适应算法几乎相同,仅在排序时把空闲分区表按从大到小的顺序排列,所以未作详细注释回收分区 当进程运行完毕释放内存时,系统根据回收区的首址,从空闲区链(表)中找到相应的插入点,此时可能出现以下四种情况之一; 1)回收区与插入点的前一个空闲分区F1相邻接,此时应将回收区与插入点的前一分区合并,不必为回收区分配新表项,而只需修改其前一分区F1的大小. 2)回收分区与插入点的后一空闲分区F2相邻接,此时也可将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲区的首址,大小为两者之和. 3)回收区同时与插入点的前,后

2、两个分区邻接,此时将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和. 4)回收区既不与F1相邻接,又不与F2邻接.这时应为回收区单独建立一新表项,填写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置.紧凑算法 通过移动内存中的作业的位置,以把原来多个分散的小分区拼接成一个大分区的方法. 第三章 开发环境 此程序是本人利用c+语言在vs2012的开发环境中实现的 第四章 程序实现-数据结构#include stringfstreamusing namespace std;ofstream stream;/输出流对象int ary1204;/内存分配状态int a

3、ry2203;/空闲分区状态int ary310;/进程分配状态int recycle;/需要回收的盘块序号 int id1;/算法选择号int m;/内存区数int n;/空闲区数int q;/进程数int r=0;/循环首次适应算法:对应的这次查找到的空闲分区序号/打印输出函数void vision() int i; int j; if(id1=1)stream.open(first_fit.txt, ios:app); if(id1=2)stream.open(nextfirst_fit.txt if(id1=3)stream.open(best_fit.txt,ios: if(id1=

4、4)stream.open(worst_fit.txt if(id1=5)stream.open(compact.txt if(id1=6)stream.open(huishou.txt cout-内存分配状态-endl;分区号 大小/KB 始址/KB 状态 stream for(j=0;jm;j+) cout ary1j0 ; streamary1j1ary1j2 if(ary1j3=2) cout已分配 stream else未分配 cout -空闲分区链-分区号 大小/KB 起址/KB for(i=0;in;i+) coutary2i0ary2i1ary2i2;- stream.clos

5、e();/作业信息的自动产生void create_pro()q; ary3i=rand()%100; if(ary3i=0) i-; ary30=42; ary31=86;产生q个随机进程大小分别是:i+)ary3ichoice2; q=choice2;输入想创建的作业请求大小 for(int i=0; cinj; ary3i=j;你创建了choice2个进程 /内存信息的自动产生void create_apply() for (i=0; ary1i0=i+1; ary1i1=rand()%100; if(i=0) ary1i2=0; else ary1i2=ary1i-12+ary1i-1

6、1; ary1i3=rand()%3; /cout if(ary1i1=0) int k=0;/空闲区数量 if(ary1i3!=2) ary2k0=ary1i0; ary2k1=ary1i1; ary2k2=ary1i2; k+; n=k;/空闲块数量/内存信息的手动生成int create_fenqu() int k,x,y,o=0; int a=0;输入想创建的内存分区块数 :k;输入k=ary3i)/进程占用空间小于等于其中一个空闲区的大小 cout与ary2j1相匹配 stream.open( streamary2j0+1;k-) ary1k-10=ary1k-20+1; ary1k

7、-11=ary1k-21; ary1k-12=ary1k-22; ary1k-13=ary1k-23; ary1l0=l+1; ary1l1=d-ary3i; ary1l2=ary1l-11+ary1l-12; ary1l3=0; k=0; for(id2=0;id2id2+) if(ary1id23! ary2k0=ary1id20; ary2k1=ary1id21; ary2k2=ary1id22; k+; n=k; break; else不匹配 vision();/首次循环适应算法void next_fit()int i;int j;int k;int s;int d;int id2;f

8、or(i=0;i+)/对每一个进程队列中的进程分配资源 for(j=r; if(ary3is-) ary1s0=ary1s-10+1; ary1s1=ary1s-11; ary1s2=ary1s-12; ary1s3=ary1s-13; /改变第k+1块内容:对应的数组是ary1k ary1k0=ary1k-10+1; ary1k1=d-ary1k-11; ary1k2=ary1k-11+ary1k-12; /- /-改变空闲表分配情况-/思路:先把空闲列表检索一遍,选出最佳答案,进行分配void best_fit()/最佳算法-按顺序检索,把与进程要求内存大小最接近的快分配给进程 int s

9、; int j=-9999;/用来保存最接近的答案 int e;/用来存放进行比较时的中间结果 int id2; e=9999; j=-9999; for(s=0;s=ary3i)&(eary2s1)/满足分配要求 e=ary2s1; j=s; if(j0)所有空闲盘块不匹配 stream.close(); else最佳相匹配 if(ary2j1=ary3i) for(l=k;ll-) ary1l-10=ary1l-20+1; ary1l-11=ary1l-21; ary1l-12=ary1l-22; ary1l-13=ary1l-23; ary1k0=k+1; ary1k3=0; k=0; ary2k0+;/最坏适应算法void worst_fit() int j=-99

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1