分区内存管理实验报告.doc

分区内存管理实验报告.doc

ID:52684688

大小:177.50 KB

页数:16页

时间:2020-03-29

分区内存管理实验报告.doc_第1页
分区内存管理实验报告.doc_第2页
分区内存管理实验报告.doc_第3页
分区内存管理实验报告.doc_第4页
分区内存管理实验报告.doc_第5页
资源描述:

《分区内存管理实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、洛阳理工学院实验报告系别计算机与信息工程系班级B100503学号B10050309姓名赵贺龙课程名称计算机操作系统实验日期2012-11-1实验名称分区内存管理成绩实验目的:通过这次实验,加深对内存管理的认识,进一步掌握内存的分配、回收算法的思想。实验条件:装有vc6.0的微机一台。实验原理:设计程序模拟内存的动态分区内存管理方法。内存空闲区使用分区(说明)表进行管理,采用最先适应算法从分区表中寻找空闲区进行分配,内存回收时不考虑与相邻空闲区的合并。假定系统的内存共640K,初始状态为操作系统本身占用40K。t1时刻,为作业A、B、

2、C分配80K、60K、100K、的内存空间;t2时刻作业B完成;t3时刻为作业D分配50K的内存空间;t4时刻作业C、A完成;t5时刻作业D完成。要求编程序分别输出t1、t2、t3、t4、t5时刻内存的空闲分区。16/16实验内容:源代码:包含头文件link.h,Windows.h和主程序内存管理.cpp头文件link.h#include"stdio.h"#include"malloc.h"//进程Pcb类型及系统PCB表(顺序表)的描述#definemaxPCB15#definemaxPart10#defineTRUE1typed

3、efstruct{charname;//进程名intaddress,len,valid;//进程所占分区起止和长度,//该PCB有效标示1有效,0无效。}PCB;typedefstruct{PCBPCBelem[maxPCB];inttotal;}PCBseql;//分区类型及分区说明表(顺序表)的描述typedefstruct{intaddress,len,valid;}Part;16/16typedefstruct{PartPartelem[maxPart];intsum;//该时刻的分区数}Partseql;voidinitP

4、cb(PCBseql*vpcbl,intiosm);//初始化进程表vpcbl;voidinitpart();//初始化分区表vpartl;voidrequest(charname,intlen);//进程name请求len大小的内存voidrelease(charname);//回收进程name所占的空间voidgetprint();//输出内存空闲分区主程序:内存管理.cpp#include"link.h"#includeintlength=640;//系统有640的空闲PCBseql*pcbl=(PCBs

5、eql*)malloc(sizeof(PCBseql));;Partseql*partl=(Partseql*)malloc(sizeof(Partseql));voidinitPcb(PCBseql*vpcbl,intadr){inti=1;PCB*pcbelem;inttel;charc;pcbelem=vpcbl->PCBelem;while(TRUE){printf("请输入第%d进程名称",i++);16/16vpcbl->total++;scanf("%c",&(pcbelem->name));printf("请输入进程

6、所需内存");scanf("%d",&tel);pcbelem->len=tel;pcbelem->address=adr+tel;pcbelem->valid=1;pcbelem++;printf("是否要继续输入进程?(Y/y)是/(N/n)否");fflush(stdin);c=getchar();fflush(stdin);if(c=='N'

7、

8、c=='n'){break;}}}voidinitpart(){charc,name;intlen;printf("请输入你的操作R.请求内存;P.输出空闲分区;S.强制进程结束;(

9、N/n).退出");fflush(stdin);c=getchar();fflush(stdin);while(c!='N'

10、

11、c!='n'){16/16if(c=='R'

12、

13、c=='r'){fflush(stdin);//做输入的时候要清空缓冲区printf("请输入请求内存进程的名称,长度");scanf("%c,%d",&name,&len);request(name,len);//进程请求内存}elseif(c=='P'

14、

15、c=='p'){printf("t*****VIEWbegin*****");getprin

16、t();printf("t*****VIEWend*****");}elseif(c=='S'

17、

18、c=='s'){printf("请输入想要回收的进程名称");scanf("%c",&name);release(name);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。