一、实验目的
通过编写固定分区存储管理的模拟程序,加深对操作系统存储管理功能中的固定分区管理方式、主存分配表等相应知识的理解。 二、实验内容
1、实现固定分区存储管理方式下存储空间的分配和去配。 2、已知当前内存分配表如下: 分区号起始地址长度占用标志1 0K 10K 02 10K 18K 3 28K 16K 4 44K 6K 5 50K 21K 6 71K 30K J1J2000 3、有若个作业申请或释放内存空间,请求如下: (1)作业J3请求资源,申请5K大小的内存空间; (2)作业J4申请33K大小的内存空间 ; (3)作业J1执行完毕,释放空间
4、编写程序实现相应存储空间的分配和去配,若请求成功,修改主存分配表,并输出该表,若请求不能满足,输出“分配失败”。(其中不考虑空闲分区的移动)。 三、实验步骤 实验程序如下:
#include typedef struct subarea //分区结构体 { int start; int longth; int work; }subarea; subarea s[N]; void distribute1(int n,int w1,int size) //申请空间 { int i=0,j; while(i s[i].work=w1; printf(\"分区号 起始地址 长度 占用标志\\n\"); for(j=0;j break; } i++; } if(i==n) printf(\"分配失败\\n\"); } void distribute2(int n,int w2) //释放空间 { int i; for(i=0;i printf(\"分区号 起始地址 长度 占用标志\\n\"); for(i=0;i void main() //主函数 { int i,n,w1,w2,size,k;//k=1表示为申请内存,k=0表示释放内存。请说明作业是申请还是释放空间, printf(\"请输入分区个数:\"); scanf(\"%d\ printf(\"请输入分区说明表:\"); for(i=0;i printf(\"请输入要申请的作业:\"); scanf(\"%d\ printf(\"请输入要申请的空间大小:\"); scanf(\"%d\ distribute1(n,w1,size); } if(k==0) { printf(\"请输入要完成的作业:\"); scanf(\"%d\ distribute2(n,w2); } } 四、实验结果 (1)作业J3请求资源,申请5K大小的内存空间,结果如下: (2)作业J4申请33K大小的内存空间 ,实验结果如下: (3)作业J1执行完毕,释放空间,实验结果如下: 因篇幅问题不能全部显示,请点此查看更多更全内容