当前位置:文档之家› 操作系统模拟设备管理

操作系统模拟设备管理

// 12.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "string"
#define false 0
#define true 1
#define n 3
#define m 10
struct
{
char type[10];
int count;
int remain;
int address;
}equiptype[n];
struct
{
int number; //绝对号
int status; //设备状态
int remain; //是否分配
char jobname[4]; //占有作业名
int lnumber; //相对号
}equipment[m];

bool allocate(char *J,char *type,int mm)
{
{
int i,t;
i=0;
while(ii++;
if(i>=n)
{
printf("无该类设备,设备分配失败");
return(false);
}
if(equiptype[i].remain<1)
{
printf("该类设备不足,分配失败");
return(false);
}
t=equiptype[i].address;
while(!(equipment[t].status==1 && equipment[t].remain==0))
t++;

equiptype[i].remain--;
equipment[t].remain=1;
strcpy(equipment[t].jobname,J);//指定该设备的占有作业
equipment[t].lnumber=mm; //设置相对号
}
}

bool reclaim (char *J,char *type)
{
{
int i,t,j,k,nn;
i=0;
while(ii++;
if(i>=n)
{
printf("无该类设备,设备回收失败");
return(false);
}
t=equiptype[i].address;
j=equiptype[i].count;
k=0;
nn=t+j;
for(;tif(strcmp(equipment[t].jobname,J)==0&&equipment[t].remain==1)
{
equipment[t].remain=0;
k++;
}
equiptype[i].remain= equiptype[i].remain+k;
if(k==0)
printf("该作业没有使用该类设备\n");
}
}

int main( )
{
char J[4];
int i,mm,a;
char type[10];

//初始化设备,三类网络input,printer,disk,设备数分别为2,3,4
strcpy(equiptype[0].type,"input");
equiptype[0].count=2;
equiptype[0].remain=2;
equiptype[0].address=0;
strcpy(equiptype[1].type,"printer");
equiptype[1].count=3;
equiptype[1].remain=3;
equiptype[1].address=2;
strcpy(equiptype[2].type,"disk");
equiptype[2].count=4;
equiptype[2].remain=4;
equiptype[2].address=5;

//初始化设别控制表
for(i=0;i<10;i++)
{
equipment[i].number=i; //绝对号
equipment[i].status=1; //设备状态 1--好 0--坏
equipment[i].remain=0; //分配状态 1--以分配 0--未分配
}

while(1)
{
printf("\n0-退出,1-分配,2-回收,3-显示");
printf("\n选择功能项(0~3):");
scanf("%d",&a);
switch(a)
{
case 0 :
exit(0);

case 1 :
printf("输入作业名、作业所需设备类和设备相对号");
scanf("%s%s%d",J,type,&mm);
allocate(J,type,mm);
break;

case 2:
printf("输入作业名和作业归还的设备类");
scanf("%s%s",J,type);
reclaim(J,type);
break;

case 3:
printf("\n输出设备类表\n");
printf(" 设备类型 设备总量 空闲好设备\n");
for(i=0;iprintf("%9s%8d%9d\n",equiptype[i].type,equiptype[i].count, equiptype[i].remain);
printf("输出设备表:\n");
printf("绝对号 好/坏 已/未分配 占用作业名 相对号\n");
for(i=0;iprintf("%3d%8d%9d%12s%8d\n",equipment[i]

.number, equipment[i].status,equipment[i].remain,equipment[i].jobname,
equipment[i].lnumber);
}
}
return 0;
}




相关主题
文本预览
相关文档 最新文档