版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统实验报告操作系统实验报告1.实验内容 采用空闲区链,运用首次适应法管理内存。2.程序中使用的数据结构及其符号说明本程序使用双向链表对内存进行连接管理,用结构体来存储内存的相关 信息。当每次完成内存分配后,就对内存进行从小到大排列, 并且合并相邻的内存空间。当下一个作业装载入内存时,可直接从头开始寻找到合 适的地址,这样可节省查找时间。接到内存申请时,在空闲块表中找到一个不小于请求的 最小空块进行分配为作业选择分区时总是寻找其大小最接 近于作业所要求的存储区域。特点是用最小空间满足要求。符号列表如下l rt-定义一个结构,用来存储内存信 息。l memory-结构名字,同上。l star
2、taddress具体莫个内存起始地址。l size-具体莫个内存的大小。l state具体莫个内存的状态,若为-1则表示分配了,为0为空闲。l * next-为结构指针,指向当前内存空间的下一个。l * last-为结构指针,指向当前内存空间的前一个。l *head-结构的头指针。l *p,*q,*g都是内存结构体的指针。l alloc () 一对内存空间进行分配的函数。接受一个INT型值。并返回内存空间的相关信息,如状态等。l setfree释放内存空间的函数。l sort-对内存大小进行排序的函数。调用后内存将从小到大排列。l print-打印内存的相关信息函数。l type-判断是不是有
3、任务执行,输入为 n时结束任务。3.程序流程图 4.程序代码如下 include include typedef struct rt / 链式结构 int startaddress; int size; int state; struct rt * next; struct rt * last; memory; memory *headNULL; int allocint applyarea 分酉己 内存 applyarea 为作业大小 memory *p,*q,*g; int s; phead; forpp-next;pNULL;pp-next/ 寻找满足的 内存区 ifp-state0 p
4、-size-applyarea; return p-startaddress-applyarea; else ifp-state0 sp-startaddress; gp; qp-next; pp-last; p-nextq; q-lastp; freeg; return s; return -1; return 0; int setfree回收内存 int start; int size; memory *p,*q; printf请输入回收内存地址n “ scanf “dpfin tf请输入回收内存大小 n "; scanf “d 二phead; /leftforpp-next;p
5、NULL;pp-next / 在左边与空闲区相连 ifp-state0 p-sizesize; return 0; phead; / right forpp-next;pNULL;pp-next 在右边与空I用区相连 ifp-state0return 0; phead; / after whilep-nextNULL/ 没有与空闲区 相连,将内存放到链表的后面 pp-next; qmemory *mallocsizeofmemory; q-startaddressstart; q-state0; q-lastp; q-nextNULL; p-nextq; return 0; int sort/
6、 排 序链表 memory * pNULL,*qNULL; int t; int s; phead; forpp-next;pNULL;pp-next forqp-next;qNULL;qq-next ifq-sizesize tp-size; p-sizeq-size; q-sizet; sp-startaddress; p-startaddressq-startaddress; q-startaddresss; return 0; int print/ 打 印 空闲区信 息 memory *p; phead;printf |,| n " ;printf开始地址大小 状态二 pri
7、ntf "|n 'forpp-next;pNULL;pp- next printf “ 3d 3d 3d n ",-startaddress,p-size,p-state;printf "|n.1 return 0; int main memory *p,*q; int i; int applyarea,start; char type; int address0;headmemory *mallocsizeofmemory; head-startaddress-1;head-size-1; head-nextNULL; head-lastNULL; qh
8、ead; fori1;istartaddressaddress; p-state0; p-sizei*20; addressi*20; p-next NULL; p-lastNULL; q-nextp; p-lastq; qp; print f n 现在 有任务 执行么 y or n 二 typegetchar; whiletype y printf第幺次空闲内存如下n "sort; print; printf输入作业大小二 scanf乍业大小 startallocapplyarea;/ 分配内存sort; print; printf分配后,内存状态如下n二print;ifstart
9、-1 printf没有多余内存空间,请等待 n " ; else printf作 业起始地址是n二start; printf作'业大小是n二applyarea;setfree;回收内存 sort; print; getchar; printf n 现在有任务 执行么 y or n 二typegetchar; return 0; 5.程序名 g.exe”内存管理内存管理01.cpp ”程序初始状态 现在有任务执行么 y or n y 第一次空闲内存如下|开始地址 大小 状态 |0200|20400|60600|120800|2001000|3001200|输入作业大小 若输入2
10、0,程序输由如下|开始地址大小状态| 20 40 0 | | 60 60 0|120800|3001200| |分配后,内存状态如下|开始地址 大小 状态 | 20 40 0|60600|120800|2001000|3001200| |作业起始地址是0作业大小是20请输入回收内存地址 若输入0,输入回收内存大小20 ,即回收开始分配的内存空间,程序输由如下 |开始地址 大小 状态 | 0 60 0|60600|120800|2001000|3001200|现在有任务执行么y or n 现在针对一连串输入,譬如针对分配60大小的内存空间,然后收回,程序全部输由如下 现在有任务执行么 y or
11、n y第 一次空闲内存如下|开始地址大小状 态 |0200|20400|60600|120800|2001000|3001200| | 输入作业大小 60|开始地址 大小 状态|120 0 0 |0200|20400|120800|2001000|3001200| |分配后,内存状态如下|开始地址 大小 状态|120 0 0 |0200|20400|120800|2001000|3001200| |作业起始地址是60作业大小是60请输入回收内存地址 60请输入回收内存大小60|开始地址 大小 状态|0 20 0 |120800|2001000|3001200|现在有任务执行么y or n 6.收获和体会及对该题解的改进意见这次实验中,有太多的指针,我总是因为指针错误指向,苦苦思索而不得其解,跟舍友的 一些交流,启发了我,使我后来再做没有这么吃力 .还有,在设 计中,我还借鉴了舍友的一些思路 ,让我明白和合作的重要性 花了两个礼拜才做完,虽然
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度班组承包合同履行期限与合同解除3篇
- 2025年度池塘生态渔业项目租赁合同3篇
- 二零二五版幼儿园连锁经营承包管理服务合同3篇
- 二零二五年股权融资合同聚焦新能源领域3篇
- 二零二五年度大渡口环保吸污车租赁与市场推广服务协议3篇
- 2025年数据中心物业承包经营合同模板3篇
- 2024版商用建筑项目合作合同精简版版B版
- 个性化2024劳务派遣服务协议版B版
- 二零二五版旅游项目投资担保合同3篇
- 2025年房屋租赁续租协议2篇
- GB/T 4008-2024锰硅合金
- 2024急性脑梗死溶栓规范诊治指南(附缺血性脑卒中急诊急救专家共识总结归纳表格)
- 个人替公司代付协议
- FZ∕T 73037-2019 针织运动袜行业标准
- 废旧纤维回收和再利用策略
- 生产计划应急预案
- 再生资源回收体系建设实施方案
- 人才座谈会主持词经典版(四篇)
- 防暴反恐设施配置
- 危重病人入院流程课件
- 康养酒店可行性方案
评论
0/150
提交评论