操作系统实验报告3.docxVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
计算机操作系统实验报告 问题描述 内存连续分区存储管理?仿真 设计方案 本次实验的分配方式采用最坏适应算法。该实验基本思想虽然容易理解,但实现起来依旧是困难重重。首先要做的是确定数据的存储结构,用了两个链表分别存储了已分配的和空闲的内存,然后初始化等等。接下来是实现分配算法,写一个比较器,每次分配完内存后(将链表中第一个空闲块分配出部分空间),都必须将空闲块按从大到小的顺序重新排列。这点并不难,难点在回收内存后如何合并新产生的空闲内存块。这里存在四种情况,新产生的空闲内存块可能与它上面一块空闲块相邻,也可能与它下面一块空闲块相邻,还可能不与任何一块相邻,或者是同时与上下两块相邻。 实现程序 package pany; //package AllocationAlg; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.LinkedList; import java.util.ListIterator; class Busy { String name;//进程名 int address;//分区起始地址 int len;//分区长度 public Busy(String name, int address, int len) { super(); = name; this.address = address; this.len = len; } public Busy() { // TODO Auto-generated constructor stub } } class Free { int address;//分区起始地址 int len;//分区长度 public Free(int address, int len) { super(); this.address = address; this.len = len; } static class Partition { LinkedList<Free> freeLink;//空闲区队列 LinkedList<Busy> busyLink;//已分配区队列 Free free; Busy busy; public Partition() { super(); start(); } void start() { freeLink=new LinkedList<Free>(); busyLink=new LinkedList<Busy>(); Busy os=new Busy("OS",0,64);//系统占用区64K busyLink.add(os);//加入已分配队列 free=new Free(64,300);//初始的内存空闲区就一块,大小300K,首地址64K freeLink.add(free);//加入空闲区队列 } void requierMemo(String name,int require) {//模拟内存分配 if(require<=freeLink.get(0).len) {//可划分内存给所请求分配的大小 int address=freeLink.get(0).address;//获得该最大空闲区的首地址,从这开始分配require长度内存 freeLink.get(0).address=address+require;//更新该空闲区的首地址 freeLink.get(0).len=freeLink.get(0).len-require;//更新该空闲区的长度 busy=new Busy(name, address, require);//生成分配区间 busyLink.add(busy);//将该分区分配给请求者,加入已分配队列

文档评论(0)

烟花三月 + 关注
实名认证
文档贡献者

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

认证主体张**

1亿VIP精品文档

相关文档

相关课程推荐