操作系统课程设计 - 动态分区分配存储管理
操作系统课程设计
设计题目 动态分区分配存储管理
学生姓名学 号 专业班级 指导教师
吕 霆
20102675 计算机10-01班
1
第一章 课程设计概述
1.1 设计任务:
动态分区分配存储管理
1.2 设计要求
建立描述内存分配状况的数据结构; ?建立描述进程的数据结构; ?使用两种方式产生进程:(a)自动产生, (b)手工输入; ? 在屏幕上显示内存的分配状况、每个进程的执行情况; ? 建立分区的分配与回收算法,支持紧凑算法; ? 时间的流逝可用下面几种方法模拟:(a)按键盘,每按一次可认为过一个时间单位; (b) 响应WM_TIMER;
? 将一批进程的执行情况存入磁盘文件,以后可以读出并重放;
? 支持算法:首次适应算法、循环首次适应算法、最佳适应算法:最坏适应算法。
1.3 设计目的
旨在让我们更好的了解动态分区管理方面的知识.
第二章 原理及算法描述
2.1动态分区分配算法原理
首次适应算法
* 算法概述:分配内存时,从链首开始顺序查找,找到满足的空闲分区则划出空间分配,余下的空闲空间仍保留在空闲链表中
* 实现方法:分配时从数组第一个元素开始比较,若符合条件则将该元素减去对应作业的值
循环首次适应算法
* 算法概述:由首次适应算法演变,只是每次分配改为由上一次找到的空闲分区开始查找
* 实现方法:在首次适应算法的基础上增加一个值用于记录找到的空闲分区的位置
最佳适应算法
* 算法概述:每次为作业分配内存时,总是把能满足要求、又是最小的空闲分区
分配给作业
* 实现方法:我们决定每次分配先把空闲分区按从小到大的顺序排列,然后将第一个匹配分区分配给作业
最坏适应算法
* 算法概述:每次为作业分配内存时,总是挑选一个最大的空闲分区分割给作业使用
* 实现方法:算法与最佳适应算法几乎相同,仅在排序时把空闲分区表按从大到小的顺序排列,所以未作详细注释
回收分区
当进程运行完毕释放内存时,系统根据回收区的首址,从空闲区链(表)中找到相应的插入点,此时可能出现以下四种情况之一;
1)回收区与插入点的前一个空闲分区F1相邻接,此时应将回收区与插入点的前一分区合并,不必为回收区分配新表项,而只需修改其前一分区F1的大小.
2)回收分区与插入点的后一空闲分区F2相邻接,此时也可将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲区的首址,大小为两者之和.
3)回收区同时与插入点的前,后两个分区邻接,此时将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和.
4)回收区既不与F1相邻接,又不与F2邻接.这时应为回收区单独建立一新表项,填写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置.
紧凑算法
通过移动内存中的作业的位置,以把原来多个分散的小分区拼接成一个大分区的方法.
第三章 开发环境
此程序是本人利用c++语言在vs2012的开发环境中实现的
第四章 程序实现--数据结构
#include
3
int recycle;//需要回收的盘块序号 int id1;//算法选择号 int m;//内存区数 int n;//空闲区数 int q;//进程数
int r=0;//循环首次适应算法:对应的这次查找到的空闲分区序号 //打印输出函数 void vision() {
int i; int j;
if(id1==1)stream.open(\if(id1==2)stream.open(\if(id1==3)stream.open(\if(id1==4)stream.open(\if(id1==5)stream.open(\if(id1==6)stream.open(\cout<<\内存分配状态-------------\cout<<\分区号 大小/KB 始址/KB 状态\stream<<\内存分配状态-------------\stream<<\分区号 大小/KB 始址/KB 状态\for(j=0;j cout < cout<<\空闲分区链--------\cout<<\分区号 大小/KB 起址/KB\stream<<\空闲分区链--------\stream<<\分区号 大小/KB 起址/KB\for(i=0;i 4 cout < cout < cout<<\已分配\stream<<\已分配\cout<<\未分配\stream<<\未分配\ else{ } //作业信息的自动产生 void create_pro() { } //作业的手动生成 void create_zuoye(){ 5 int j; int choice2; int id3=rand(); m=id3;//内存区数量 cout<<\产生\个随机进程\cout<<\大小分别是:\for(i=0;i cout < cout<<\int i; for(i=0;i ary3[0]=42; ary3[1]=86; ary3[i]=rand()0; if(ary3[i]==0) {i--;} { } cout<<\stream<<\cout< cout<
相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




