分区内存管理实验报告(共16页).doc
《分区内存管理实验报告(共16页).doc》由会员分享,可在线阅读,更多相关《分区内存管理实验报告(共16页).doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上洛阳理工学院实验报告系别计算机与信息工程系班级B学号B姓名赵贺龙课程名称计算机操作系统实验日期2012-11-1实验名称分区内存管理成绩实验目的:通过这次实验,加深对内存管理的认识,进一步掌握内存的分配、回收算法的思想。实验条件:装有vc6.0的微机一台。实验原理:设计程序模拟内存的动态分区内存管理方法。内存空闲区使用分区(说明)表进行管理,采用最先适应算法从分区表中寻找空闲区进行分配,内存回收时不考虑与相邻空闲区的合并。假定系统的内存共640K,初始状态为操作系统本身占用40K。t1时刻,为作业A、B、C分配80K、60K、100K、的内存空间;t2时刻作业B完成;
2、t3时刻为作业D分配50K的内存空间;t4时刻作业C、A完成;t5时刻作业D完成。要求编程序分别输出t1、t2、t3、t4、t5时刻内存的空闲分区。实验内容:源代码:包含 头文件link.h,Windows.h和主程序 内存管理.cpp头文件link.h#include stdio.h#include malloc.h/进程Pcb类型及系统PCB表(顺序表)的描述#define maxPCB 15#define maxPart 10#define TRUE 1typedef struct char name; /进程名 int address,len,valid;/进程所占分区起止和长度, /
3、该PCB有效标示 1有效,0无效。PCB;typedef struct PCB PCBelemmaxPCB; int total;PCBseql;/分区类型及分区说明表(顺序表)的描述typedef structint address,len,valid;Part;typedef structPart PartelemmaxPart;int sum; /该时刻的分区数Partseql;void initPcb(PCBseql* vpcbl,int iosm); /初始化进程表vpcbl;void initpart(); /初始化分区表vpartl;void request(char name,
4、int len); /进程name请求len大小的内存void release(char name); /回收进程name所占的空间void getprint();/输出内存空闲分区主程序:内存管理.cpp#include link.h#includeint length = 640 ;/系统有640 的空闲PCBseql *pcbl = (PCBseql*)malloc(sizeof(PCBseql); ;Partseql *partl = (Partseql*)malloc(sizeof(Partseql);void initPcb(PCBseql* vpcbl,int adr)int i
5、=1;PCB *pcbelem;int tel;char c;pcbelem=vpcbl-PCBelem;while(TRUE)printf(请输入第%d进程名称,i+);vpcbl-total+;scanf(%c,&(pcbelem-name);printf(请输入进程所需内存);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
6、);if(c=N|c=n)break; void initpart()char c,name;int len; printf(请输入你的操作 R.请求内存;P.输出空闲分区; S. 强制进程结束;(N/n).退出n); fflush(stdin); c= getchar(); fflush(stdin); while(c!=N|c!=n) if(c=R|c=r) fflush(stdin); /做输入的时候要清空缓冲区 printf(请输入请求内存进程的名称,长度); scanf(%c,%d,&name,&len); request(name,len); /进程请求内存 else if(c=P
7、|c=p) printf(t*VIEW begin*n); getprint(); printf(t*VIEW end *n); else if(c=S|c=s) printf(请输入想要回收的进程名称n); scanf(%c,&name); release(name); printf(请输入你的操作 R.请求内存;P.输出空闲分区; S. 强制进程结束 n); fflush(stdin); c= getchar(); fflush(stdin); void init4IOS(int tem)Part *newPart = &partl-Partelem0;tem = tem0?(temadd
8、ress = 0;newPart-len = tem ;newPart-valid = 1;partl-sum+;printf(-已为操作系统分配了%d kb内存n,tem);newPart = &partl-Partelem1;newPart-address = tem ;length=tem = length -tem;tem = temlen = tem ;newPart-valid = 0;partl-sum+;printf(-为操作系统分配后剩余的内存%d kb内存n,tem);int getTagByPcb(char name)/有提提/*int i=0;char tem ; PC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分区 内存 管理 实验 报告 16
限制150内