资源描述
. .
实验三 固定分区存储管理
一、实验目的
通过编写固定分区存储管理的模拟程序,加深对操作系统存储管理功能中的固定分区管理方式、主存分配表等相应知识的理解。
二、实验容
1、实现固定分区存储管理方式下存储空间的分配和去配。
2、当前存分配表如下:
3、有假设个作业申请或释放存空间,请求如下:
〔1〕作业J3请求资源,申请5K大小的存空间;
〔2〕作业J4申请33K大小的存空间 ;
〔3〕作业J1执行完毕,释放空间
4、编写程序实现相应存储空间的分配和去配,假设请求成功,修改主存分配表,并输出该表,假设请求不能满足,输出“分配失败〞。〔其中不考虑空闲分区的移动〕。
三、实验步骤
实验程序如下:
#include <stdio.h>
#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(i<n)
{
if(s[i].longth>size && s[i].work==0)
{
s[i].work=w1;
printf("分区号 起始地址 长度 占用标志\n");
for(j=0;j<n;j++)
printf("%5d %5d %5d %5d\n",j+1,s[j].start,s[j].longth,s[j].work);
break;
}
i++;
}
if(i==n) printf("分配失败\n");
}
void distribute2(int n,int w2) //释放空间
{
int i;
for(i=0;i<n;i++)
if(s[i].work==w2) s[i].work=0;
printf("分区号 起始地址 长度 占用标志\n");
for(i=0;i<n;i++)
printf("%5d %5d %5d %5d\n",i+1,s[i].start,s[i].longth,s[i].work);
}
void main() //主函数
{
int i,n,w1,w2,size,k;//k=1表示为申请存,k=0表示释放存。请说明作业是申请还是释放空间,
printf("请输入分区个数:");
scanf("%d",&n);
printf("请输入分区说明表:");
for(i=0;i<n;i++)
scanf("%d%d%d",&s[i].start,&s[i].longth,&s[i].work);
printf("输入k值:");
scanf("%d",&k);
if(k==1)
{
printf("请输入要申请的作业:");
scanf("%d",&w1);
printf("请输入要申请的空间大小:");
scanf("%d",&size);
distribute1(n,w1,size);
}
if(k==0)
{
printf("请输入要完成的作业:");
scanf("%d",&w2);
distribute2(n,w2);
}
}
四、实验结果
〔1〕作业J3请求资源,申请5K大小的存空间,结果如下:
(2) 作业J4申请33K大小的存空间 ,实验结果如下:
〔3〕作业J1执行完毕,释放空间,实验结果如下:
教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。
教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。
. .word.zl.
展开阅读全文