文档详情

实验三固定分区存储管理汇.doc

发布:2017-04-25约字共5页下载文档
文本预览下载声明
课程名称:操作系统 实验三 固定分区存储管理 时间:2010年5月10日星期二,第3-4节 地点:理工楼 学号105072008117 姓名lrtwilly 班级:一班 一、实验目的 通过编写固定分区存储管理的模拟程序,加深对操作系统存储管理功能中的固定分区管理方式、主存分配表等相应知识的理解。 二、实验内容 1、实现固定分区存储管理方式下存储空间的分配和去配。 2、已知当前内存分配表如下: 3、有若个作业申请或释放内存空间,请求如下: (1)作业J3请求资源,申请5K大小的内存空间; (2)作业J4申请33K大小的内存空间 ; (3)作业J1执行完毕,释放空间 4、编写程序实现相应存储空间的分配和去配,若请求成功,修改主存分配表,并输出该表,若请求不能满足,输出“分配失败”。(其中不考虑空闲分区的移动)。 三、实验环境 软件环境:VC ++ 硬件环境:微机 四、实验步骤 2.建立结构??存储进程情况。 3.编写算法对进程请求资源进行判断。 4、编写代码调试运行 ,运用数据对算法进行检测。 五、实验代码和结果 #includestdio.h #define max 10000 typedef struct zone { int Znumber[6]; int address[6]; int size[6]; int flag[6]; }zone; int fenqu(zone Z,int work,int s) { int k=-1,min=max; for(int i=0;i6;i++) { if(Z.size [i]=s) { if(Z.size [i]-smin) { k=i; min=Z.size [i]-s; } } } if(k==-1) { printf(分区失败\n); return 0; } else { Z.flag[k]=work; return 1; } } void shifang(zone Z,int work) { for(int i=0;i6;i++) { if(Z.flag[i] ==work) Z.flag[i] =0; } } void main() { zone z; int s;//作业长度 int w;//作业名称 char J; printf(请输入内存分配表\n); printf(分区号,起始地址,长度,占用标志\n); for(int i=0;i6;i++) { scanf(%d,%d,%d,%d,z.Znumber [i],z.address [i],z.size [i],z.flag [i]); getchar(); } printf(请输入作业申请\n); scanf(%c%d,%d,J,w,s); getchar(); fenqu(z,w,s); if(fenqu(z,w,s)) { printf(分区号 起始地址 长度 占用标志\n); for(int i=0;i6;i++) { printf(%d %d %d ,z.Znumber [i],z.address [i],z.size [i]); if(z.flag[i] !=0) { printf(J%d\n,z.flag [i]); } else { printf(%d\n,z.flag [i]); } } } printf(请输入作业申请\n); scanf(%c%d,%d,J,w,s); getchar(); if(fenqu(z,w,s)) { printf(分区号 起始地址 长度 占用标志\n); for(i=0;i6;i++) { printf(%d %d %d ,z.Znumber [i],z.address [i],z.size [i]); if(z.flag[i] !=0) { printf(J%d\n,z.flag [i]); } else { printf(%d\n,z.flag [i]); } } } printf(请输入释放作业申请\n); scanf(%c%d,J,w); shifang(z,w); printf(分区号 起始地址 长度 占用标志\n); for(i=0;i6;i++) { printf(%d %d %d
显示全部
相似文档