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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

模板实验2存储器的分配与回收Word文件下载.docx

1、2011 年12月1 日 第3、4节2011 年12月5 日 第7、8节实验地点软件实验室7-216软件实验室7-219软件实验室7-215批改意见成绩教师签字: 实验内容:1. 模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并不实际启动装入作业。(124)2. 采用最先适应法、最佳适应法、最坏适应法分配主存空间。3. 当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。4. 当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲区,

2、登在空闲区表中。5. 运行所设计的程序,输出有关数据结构表项的变化和内存的当前状态。实验要求:1 详细描述实验设计思想、程序结构及各模块设计思路;2 详细描述程序所用数据结构及算法;3 明确给出测试用例和实验结果;4 为增加程序可读性,在程序中进行适当注释说明;5 认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;6 实验报告撰写要求结构清晰、描述准确逻辑性强;7 实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。【实验过程记录(源程序、测试用例、测试结果及心得体会等)】源程序:using System;using System.Collections.Generic;usi

3、ng System.Linq;using System.Text;using System.Collections;namespace shen_2 class suit /分配主存空间的类 public void zxSuit(ArrayList kzfq, int needSize) /最先适应法 int i = 0; for (; i 0)/与空闲分区大小相等 Console.WriteLine(存放在第0:00块n, i + 1); kzfqi = -(int)kzfqi; break; if (needSize Math.Abs(int)kzfqi) & 0)/小于空闲分区大小 kz

4、fq.Insert(i + 1, (int)kzfqi - needSize); kzfqi = -needSize; if (i = kzfq.Count)没有足够大的空闲分区来存储!n); public void zSuit(ArrayList kzfq, int needSize, bool way) /最适应法 /布尔变量way为true时表示最优适应法,为false时表示最差适应法 int i = -1, balance; /int存储块号 balance表示选择分区与目标大小的差额 if (way) balance = int.MaxValue; /int.MaxValue表示in

5、t类型中最大数 else balance = int.MinValue; /int.MinValue表示int类型中最小数 for (int j = 0; j 0) int tempBal = (int)kzfqj - needSize; if (tempBal = 0) if (tempBal balance) balance = tempBal; i = j; if (i = -1) if (balance = 0) class recover /回收主存的类 public recover(ArrayList fqlb) this.fqlb = fqlb; public void find

6、Occupied() Console.Write(目前第 for (int i = 0; fqlb.Count; if (int)fqlbi 0 & afterSize = 0) /回收分区为最后一块且前一块空闲 fqlbsite - 1 = fontSize + (-recSize); fqlb.RemoveAt(site); if (fontSize 0) /回收分区为第一块且后一块被空闲 fqlbsite = -recSize + afterSize; fqlb.RemoveAt(site + 1); afterSize 0) /回收分区为第一块且后一块被占用 0) /回收分区为中间块且

7、前一块占用,后一块空闲 0) /回收分区为中间块且前一块空闲,后一块占用 0) /回收分区为中间块且前后两均空闲 fqlbsite - 1 = fontSize + -recSize + afterSize; /fqlb.RemoveAt(site); /fqlb.RemoveAt(site + 1); 0) /回收分区为中间块且前后两均占用 ArrayList fqlb; class Program static void Main(string args) ArrayList fqlb = new ArrayList(); /模拟内存分区的集合类 suit mySuit = new sui

8、t(); recover myRec = new recover(fqlb); foreach (int size in new int10 10, 30, 35, 20, 15, 40, 80, 20, 20, -25 ) /并测试添加的10个空闲分区 fqlb.Add(size); /用符号位表示分区是不占用:正数表示未使用,负数表示已占用设置的10个空闲分区大小为:第0:00号分区:状态:空闲,分区大小:1n, i + 1, fqlbi);-n输入工作个数: int c = Int32.Parse(Console.ReadLine(); for (int n = 0; n c; n+)00号分区:, n+1);输入工作所需内存: int a = Int32.Parse(Console.ReadLine();输入分配内存空间适应方法:1.最优适应算法,2.最差适应算法,3.最先适应算法(输入1或2或3): int b = Int32.Parse(Console.ReadLine(); switch (b) case 1: mySuit.zSuit(fqlb, a, true); case 2: mySuit.zSuit(fqlb, a, false); case 3: mySuit.zxSuit(fqlb, a); break

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

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