您的当前位置:首页正文

C语言 固定分区存储管理实验

2024-02-19 来源:易榕旅网
实验三 固定分区存储管理

一、实验目的

通过编写固定分区存储管理的模拟程序,加深对操作系统存储管理功能中的固定分区管理方式、主存分配表等相应知识的理解。 二、实验内容

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 #define N 50

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(iif(s[i].longth>size && s[i].work==0) {

s[i].work=w1;

printf(\"分区号 起始地址 长度 占用标志\\n\"); for(j=0;jprintf(\"%5d %5d %5d %5d\\n\work);

break; } i++; }

if(i==n) printf(\"分配失败\\n\"); }

void distribute2(int n,int w2) //释放空间 { int i;

for(i=0;iif(s[i].work==w2) s[i].work=0;

printf(\"分区号 起始地址 长度 占用标志\\n\"); for(i=0;iprintf(\"%5d %5d %5d %5d\\n\,s[i].work); }

void main() //主函数 {

int i,n,w1,w2,size,k;//k=1表示为申请内存,k=0表示释放内存。请说明作业是申请还是释放空间, printf(\"请输入分区个数:\");

scanf(\"%d\

printf(\"请输入分区说明表:\"); for(i=0;iscanf(\"%d%d%d\ printf(\"输入k值:\"); scanf(\"%d\ if(k==1) {

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执行完毕,释放空间,实验结果如下:

因篇幅问题不能全部显示,请点此查看更多更全内容