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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

动态分区存储管理.docx

1、动态分区存储管理操作系统大作业报告 题目: 动态分区存储管理 学 院 理学院 专 业 信息与计算科学 班 级 信计1303 学 号 1130113301 学生姓名 高月婷 二一五年十二月1、需求分析、总体设计需求分析:动态分区管理方式预先不将主存划分成几个区域,而把主存除操作系统占区域外的空间看作一个大的空闲区。当作业要求装入主存时,根据作业需要的主存空间的大小查询主存内各个空闲区,当从主存空间中找到一个大于或等于该作业大小的主存空闲区时,选择其中一个空闲区,按作业需求量划出一个分区装入该作业。作业执行完后,它所占的主存分区被收回,成为一个空闲区。如果该空闲区的相邻分区也是空闲区,则需要将相邻

2、空闲区合并成一个空闲区。实现动态分区的分配和回收,主要考虑的问题有三个:第一,设计记录主存使用情况的数据表格,用来记录空闲区和作业占用的区域;第二,在设计的数据表格基础上设计主存分配算法;第三,在设计的数据表格基础上设计主存回收算法。实验中主存分配算法采用“最优适应”算法。最优适应算法是按作业要求挑选一个能满足作业要求的最小空闲区,这样保证可以不去分割一个大的区域,使装入大作业时比较容易得到满足。但是最优适应算法容易出现找到的一个分区可能只比作业所要求的长度略大一点的情况,这时,空闲区分割后剩下的空闲区就很小,这种很小的空闲区往往无法使用,却影响了主存的使用。为了一定程度上解决这个问题,如果空

3、闲区的大小比作业要求的长度略大一点,不再将空闲区分成已分分区和空闲区两部分,而是将整个空闲区分配给作业。在实现最优适应算法时,可把空闲区按长度以递增方式登记在空闲区表中。 总体设计:1采用动态分区管理方案实施内存分配和回收。能够处理以下的情形 能够输入给定的内存大小,进程的个数,每个进程所需内存空间的大小; 当某进程提出申请空间的大小后,显示能否满足申请,以及为该进程分配资源后有关内存空间使用的情况; 当某进程撤消时,显示内存回收后内存空间的使用情况。能够处理以下的情形:主存回收函数实现:有上邻空闲区和下邻空闲区,它们与回收区的合并;有上邻空闲区,无下邻空闲区,回收区与上邻空闲区的合并;无上邻

4、空闲区,有下邻空闲区,回收区与下邻空闲区的合并。 2数据结构的定义及说明、算法思路和处理流程图1)数据结构的定义数据结构是指相互有关联的数据元素的集合。数据处理是指对数据集合中的各元素以各种方式进行运算,包括插入、删除、查找、更改等运算,也包括对数据元素进行分析。数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。常用的存储结构有顺序、链接、索引等存储结构。处理流程图:三、详细设计(含源程序关键代码)#includeusing namespace std;/#define MAX_LEN 1024/定义内存大

5、小,1024字节enum StatusFREE,BUSY,OK,ERROR;struct PST/partition specification table int ID;/分区号 int addr;/起始地址 int size;/分区长度 Status state;/状态;struct Node/双向链表结点 PST data; Node *back;/前驱 Node *next;/后继 Node() back=NULL; next=NULL; Node(int id,int size) data.ID=id; data.size=size; back=NULL; next=NULL; ;i

6、nt area;/输入内存空间Node *head,*last;void Init(int area) head=new Node(); last=new Node(); head-next=last; last-back=head; last-data.addr=0; last-data.ID=0; last-data.size=area; last-data.state=FREE;Status FFA(int id,int size)/head fit algorithm Node *temp=new Node(id,size); temp-data.state=BUSY; Node *c

7、ur=head-next; while(cur) if(cur-data.state=FREE&cur-data.size=size) /如果空闲块大小刚好与请求大小相等,直接分配 cur-data.ID=id; cur-data.state=BUSY; return OK; break; if(cur-data.state=FREE&cur-data.sizesize) /如果大于 temp-back=cur-back; temp-next=cur; cur-back-next=temp; temp-data.addr=cur-data.addr; cur-back=temp; cur-da

8、ta.addr=cur-data.addr+size; cur-data.size=cur-data.size-size; return OK; break; cur=cur-next; return ERROR; Status BFA(int id,int size)/best fit algorithm Node *temp=new Node(id,size); temp-data.state=BUSY; int min;/记录符合满足请求的最小空闲块大小 Node *fit;/指向采用最佳适应算法的插入位置 Node *cur=head-next; while(cur) /取得第一个可以

9、分配的位置(不一定是最佳位置) if(cur-data.state=FREE&cur-data.size=size) fit=cur; min=cur-data.size-size; break; cur=cur-next; while(cur) if(cur-data.state=FREE&cur-data.size=size) /如果相等直接分配 cur-data.state=BUSY; cur-data.ID=id; return OK; break; if(cur-data.state=FREE&cur-data.sizesize) /获取最佳位置 if(cur-data.size-s

10、izedata.size-size; fit=cur; cur=cur-next; if(fit) /若最佳,插入 temp-back=fit-back; temp-next=fit; fit-back-next=temp; temp-data.addr=fit-data.addr; fit-back=temp; fit-data.addr=fit-data.addr+size; fit-data.size=fit-data.size-size; return OK; else return ERROR; Status WFA(int id,int size)/worst fit algori

11、thm Node *temp=new Node(id,size); temp-data.state=BUSY; int max;/记录符合满足请求的最小空闲块大小 Node *fit;/指向采用最坏适应算法的插入位置 Node *cur=head-next; while(cur) /取得第一个可以分配的位置(不一定是最佳位置) if(cur-data.state=FREE&cur-data.size=size) fit=cur; max=cur-data.size-size; break; cur=cur-next; while(cur) /* if(cur-data.state=FREE&c

12、ur-data.size=size) /如果相等直接分配 cur-data.state=BUSY; cur-data.ID=id; return OK; break; */ if(cur-data.state=FREE&cur-data.sizesize) /获取最佳位置 if(cur-data.size-sizemax) max=cur-data.size-size; fit=cur; cur=cur-next; if(fit) /若最佳,插入 temp-back=fit-back; temp-next=fit; fit-back-next=temp; temp-data.addr=fit-

13、data.addr; fit-back=temp; fit-data.addr=fit-data.addr+size; fit-data.size=fit-data.size-size; return OK; else return ERROR; void Free(int id) Node *cur=head; while(cur) if(cur-data.ID=id) cur-data.state=FREE; cur-data.ID=FREE; if(cur-back-data.state=FREE)/与前面的空闲块相连 cur-back-data.size+=cur-data.size;

14、 cur-back-next=cur-next; cur-next-back=cur-back; if(cur-next-data.state=FREE)/与后面的空闲块相连 cur-data.size+=cur-next-data.size; cur-next-next-back=cur-back; cur-back-next=cur-next; break; cur=cur-next; Status Assign(int choice) int id,size; coutid; coutendlsize; if(size=0) cout输入错误!endl; return ERROR; if

15、(choice=1) if(FFA(id,size)=OK) cout分配成功!endl; else cout分配失败!endl; else if(choice=2) if(BFA(id,size)=OK) cout分配成功!endl; else cout分配失败!endl; else if(choice=3) if(WFA(id,size)=OK) cout分配成功!endl; else cout分配失败!next; while(cur) cout*endl; coutdata.ID=FREE) cout无endl; else coutdata.IDendl; cout起始地址:data.a

16、ddrendl; cout分区长度:data.sizeendl; coutdata.state=BUSY) cout已分配endl; else cout未分配next; int main() cout 动态分区分配方式的模拟 endl; cout*endl; coutarea; while(area=0) coutarea; while(1) cout*endl; cout* 1.FFA 2.BFA 3.WFA 0.EXIT *endl; cout*endl; coutch; if(ch=0) break; Init(area); int choice; while(1) cout*endl;

17、 cout* 1.分配 2.回收 3.查看 0.退出 *endl; cout*endl; coutchoice; if(choice=1) coutnum; for(;num0;num-) Assign(ch); / 分配内存 else if(choice=2) / 内存回收 int ID; coutID; Free(ID); else if(choice=3) Show();/显示主存 else if(choice=0) break; else /输入操作有误 cout输入有误,请重试!endl; continue; return 0;四、运行结果与分析开始运行内存分配可用表归还区有上临空闲区归还区下临空闲区归还区有下临空闲区 5、设计体会经过本一次的课程设计从编写程序直至最后运行,自己对于编程的理解自然是更进一步,对于一个题目的研究及思考方面都有了长足进步,我觉得最重要的是学习到了一种思考的方式,从不同的角度多个方面的来看这个问题,尝试着处理各种有可能发生的情况,从中收获良多。我觉得以后应设计开放的题目,对于学生要求要用开放思想来解决、对待这个问题。其中帮助或许更大。6、参考文献计算机操作系统第四版

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

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