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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

BX121028俞佳星实验5 分区式存储管理.docx

1、BX121028俞佳星实验5 分区式存储管理电子信息学院实验报告书课程名:操作系统原理实验 题 目: 实验5 分区式存储管理 实验类别: 【设计】 班 级: BX1210 学 号: 121003531028 姓 名: 俞佳星 一、 实验内容设计程序模拟内存的动态分区法存储管理。内存空闲区使用自由链管理,采用最坏适应算法从自由链中寻找空闲区进行分配,内存回收时假定不做与相邻空闲区的合并。假定系统的内存共640K,初始状态为操作系统本身占用64K。在t1时间之后,有作业A、B、C、D分别请求8K、16K、64K、124K的内存空间;在t2时间之后,作业C完成;在t3时间之后,作业E请求50K的内存

2、空间;在t4时间之后,作业D完成。要求编程序分别输出t1、t2、t3、t4时刻内存的空闲区的状态。二、 实验目的与要求过本次实验,加深对内存管理的认识,进一步掌握内存的分配、回收算法的思想。三、 实验环境Red Hat Linux 9;用户名:root,密码:123456四、 实验步骤1. 程序中自由链队列的结点类型可描述如下: struct freelinkint len, address; /* len为分区长度;address为分区起始地址struct freelink /* next; 内存占用区用链表描述,其结点类型描述如下: struct busylinkchar name; /*

3、 作业或进程名 name=S 表示OS占用int len , address;struct busylink *next; 并设全程量:struct freelink *free_head=NULL; / 自由链队列(带头结点)队首指针 struct busylink *busy_head=NULL, / 占用区队列队(带头结点)首指针 *busy_tail=NULL; / 占用区队列队尾指针2. 设计子函数: void start(void); /* 设置系统初始状态*/ struct freelink * p; struct busylink *q; free_head=(struct f

4、reelink*)malloc(sizeof(struct freelink); free_head-next=NULL; / 创建自由链头结点busy_head=busy_tail=(struct busylink*)malloc(sizeof(struct busylink); busy_head-next=NULL; / 创建占用链头结点 p=( struct freelink *)malloc(sizeof(struct freelink); p-address=64; p-len=640-64; (OS占用了64K) p-next=NULL; free_head-next=p; q=

5、( struct busylink *)malloc(sizeof(struct busylink); q-name=S; /* S表示操作系统占用 */ q-len=64; q-address=0; q-next=NULL; busy_head-next=q; busy_tail=q; void requireMemo(char name, int require); /*模拟内存分配*/ void freeMemo(char name); /* 模拟内存回收*/ void past(int time); /* 模拟系统过了time 时间*/ void printlink(); /* 输出内

6、存空闲情况(自由链的结点) */ 3、设计主函数:main() start(); past(t1); requireMemo(A,8); requireMemo(B,16); requireMemo(C,64); requireMemo(D,124); printlink(); past(t2); freeMemo(C); printlink(); past(t3); requireMemo(E,50); printlink(); freeMemo(D ); printlink();4、主要函数设计及流程图主要函数: 初始化 worstFit() 即worstFit类的构造函数 模拟内存分配

7、void requireMemo(char name,int require) 模拟内存回收 void freeMemo(char name) 空闲分区排序 void order() 模拟系统时间 void past(int time) 输出内存空闲情况 void freePrint() 输出内存占用情况 void busyPrint()模拟内存分配函数流程图:模拟内存分配函数流程图:5、源程序package com.johnson;import java.util.LinkedList;public class sy5 public static void main(String args)

8、 /主函数 worstFit wf=new worstFit(); wf.past(5); wf.requireMemo(A, 8); wf.requireMemo(B, 16); wf.requireMemo(C, 64); wf.requireMemo(D, 124); wf.busyPrint(); wf.freePrint(); wf.past(10); wf.freeMemo(C); wf.busyPrint(); wf.freePrint(); wf.past(15); wf.requireMemo(E, 50); wf.busyPrint(); wf.freePrint(); w

9、f.past(20); wf.freeMemo(D); wf.busyPrint(); wf.freePrint(); /最坏适应算法class worstFit LinkedList freelink=null; /空闲分区链表 LinkedList busylink=null; /内存占用链表 / 系统初始化 worstFit() freelink =new LinkedList(); busylink=new LinkedList(); freeSpace fFirst=new freeSpace(640-64,64); busySpace bFirst=new busySpace(S,

10、64,0); freelink.add(fFirst); busylink.add(bFirst); System.out.println(初始化完成。); /模拟内存分配 void requireMemo(char name,int require) if(freelink.size()0) /判断是否有空闲分区 if(freelink.get(0).getLen()=require) /判断第一个空闲分区是否足够 int oLen=freelink.get(0).getLen(); /原空闲分区大小 int oAddress=freelink.get(0).getAddress(); /原

11、空闲分区地址 freelink.get(0).setLen(oLen-require); /修改原空闲分区大小 freelink.get(0).setAddress(oAddress+require); /修改原空闲分区地址 busySpace bx=new busySpace(name,require,oAddress); /新建内存占用空间 busylink.add(bx); /添加到内存占用链表 order(); /对空闲链表重新排序 /空闲链表_重新排序(从大到小_冒泡法) void order() for(int i=0;ifreelink.size();i+) for(int j=

12、0;jfreelink.size()-i;j+) if(freelink.get(i).getLen()freelink.get(j).getLen() freeSpace fsx=freelink.get(i); freelink.set(i, freelink.get(j); freelink.set(j, fsx); /模拟内存回收 void freeMemo(char name) for(int i=0;i0) for(int i=0;i0) for(int i=0;ibusylink.size();i+) System.out.println(名称:+busylink.get(i).

13、getName()+t首地址:+busylink.get(i).getAddress()+t长度:+busylink.get(i).getLen(); else System.out.println(无内存占用区!); /空闲分区class freeSpace int len; int address; public freeSpace(int len, int address) this.len = len; this.address = address; public int getLen() return len; public void setLen(int len) this.len

14、 = len; public int getAddress() return address; public void setAddress(int address) this.address = address; /使用中的分区class busySpace char name; /作业或进程名 name=S 表示OS占用 int len,address; public busySpace(char name, int len, int address) this.name = name; this.len = len; this.address = address; public char

15、 getName() return name; public void setName(char name) this.name = name; public int getLen() return len; public void setLen(int len) this.len = len; public int getAddress() return address; public void setAddress(int address) this.address = address; 五、 结果分析与实验体会在本次实验中我们自己设计程序来模拟内存的动态分区法存储管理。内存空闲区使用自由链管理,我们采用最坏适应算法从自由链中寻找空闲区进行分配。通过本次实验的实际操作,我们对内存的管理,以及最坏适应算法有了更深的了解。

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

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