1、已/未分配占用作业名相对号好未分配67810 在设备表中,用“1”表示设备好,用“0”表示设备坏;用“1表示设备已分配,用“0”表示设备末分配. 设备类表的数据结构定义如下: #define n 4 struct char type4;/*设备类名*/ int count;/*拥有设备台数*/ int remain;/*某类设备现存可用的台数/ int address;/该类设备在设备表中的起始地址/ equiptypen/设备类表定义,假定系统有 n个设备类型* 设备表的数据结构定义如下: #define m 10 Int number;/设备绝对号*/ int status;/*设备好环状
2、态,“o”表示设备坏;用“ l”表示设备好*/设备是否已分配,用“ l介表示已分配,用“o表示末分配*/ char jobname4;/*占有设备的作业名/ int inumber;/*设备相对号*/ equipmentm/*设备表定义,假定系统有m个设备/ 当作业申请某类设备时,系统先查“设备类表”,如果该设备的现存台数可以满足申请要求,则从“设各类表”中得到该类设备的设备表起始地址,然后找到“设备表”中该类设备的起始地址,依次查询该类设备的每一个登记项,找出“好的且末分配”的设备分配给该作业.分配后要修改设备类表中的现存台数,把分配给该作业的设备状态改为“已分配,且填上占用该设备的作业的作
3、业名和程序中定义的相对号,最后,把设备的绝对号与相对号的对应关系通知用户. 当作业运行完回收设备时,首先要查设备表,比较每一项,找到占用作业名与运行完作业的作业名的一栏,将这一栏的“已未分配”置为“未分配。然后将设备表中对应设备类的“现存台数”增1。 实验中,首先要建立“设备类表”和“设备表”,假设系统的模拟设备如下表:分配设备要求输入作业名、设备类名和相对号,回收设备要求输入作业名和设备类名。五实验源代码#includeincludestring.hinclude#define false 0define true 1#define n 4#define m 10struct char ty
4、pe10; /设备类名*/ /*拥有设备台数*/ int remain; /*现存的可用设备台数/ int address; /*该类设备在设备表中的起始地址*/equiptypen; /设备类表定义,假定系统有n个设备类型/ int number; /设备绝对号/ /设备好坏状态/ /*设备是否已分配*/ char jobname4; /占有设备的作业名*/ int lnumber; /*设备相对号/ equipmentm; /设备表定义,假定系统有m个设备*/ allocate(char *J,char type,int cc) int i,t,j; /查询该类设备*/ i=0; whil
5、e(in&strcmp(equiptypei.type,type)!=0) i+; if(i=n) /没有找到该类设备*/ printf(”无该类设备,设备分配失败!); return(false); if(equiptypei.remain1) /*所需设备现存可用台数不足*/ printf(”该类设备不足,分配失败! return(false); t=equiptypei.address; /* 取出该类设备在设备表中的起始地址*/while(!(equipmentt.status=1 & equipmentt.remain=0) t+; /填写作业名、相对号,状态改为已分配*/ equi
6、ptypei。remain-; equipmentt.remain=1; strcpy(equipmentt.jobname,J); equipmentt。lnumber=cc; /*设备分配函数结束/ reclaim(char J,char type) int i,t,j,k,nn; while(in&strcmp(equiptypei。type,type)! i+; if(i=n) /没有找到该类设备/ printf(无该类设备,设备回收失败! return(false); t=equiptypei.address; /取出该类设备在设备表中的起始地址/ j=equiptypei.coun
7、t; /*取出该类设备的数量/ k=0; nn=t+j; for(;tnn;t+) if(strcmp(equipmentt.jobname,J)=0equipmentt.remain=1) equipmentt.remain=0; k+; equiptypei。remain= equiptypei。remain+k; if(k=0) printf(The jop havent use this kind of equitmenttype!/n”); /设备回收函数结束*/void main( ) char J4; int i,mm,a; char type10; printf(”设备类初始化
8、:(请输入相应设备的数量,当前空闲设备数量,设备表起始地址)n ); for(i=0;i4;i+) /设备类表初始化:*/ printf(”请输入相应设备类名称:”); scanf(s”,equiptypei。type); printf(请输入相应设备的数量: scanf(”d”,&equiptypei.count); printf(”请输入当前空闲设备数量: scanf(”%d”,equiptypei。remain);请输入设备表起始地址:”); scanf(”%d,&equiptypei。address); for(i=0;i10;i+) /设备表初始化: equipmenti.numbe
9、r=i; equipmenti.status=1; equipmenti.remain=0; while(1)n0-退出,1-分配,2回收,3显示”);n选择功能项(03):d”,a); switch(a) case 0 : /a=0程序结束/ exit(0); case 1 : /*a=1分配设备/ printf(输入作业名、作业所需设备类和设备相对号n scanf(”s%sd,J,type,mm); allocate(J,type,mm); /*分配设备*/ break; case 2: /a=2回收设备/输入作业名和作业归还的设备类n scanf(”%ss”,J,type); /输入要回
10、收的作业名及对应的设备类/ reclaim(J,type); /回收设备/ case 3: /a=3 输出设备类表和设备表的内容/ printf(”输出设备类表!n”); /输出设备类表内容*/ 设备类型 设备总量 空闲好设备n for(i=0;n;i+) printf(”%9s%16d22d14dn”,equiptypei.type,equiptypei.count,equiptypei.remain,equiptypei。输出设备表:n /*输出设备表内容/ printf(”绝对号 好/坏 已/未分配 占用作业名 相对号n”);im; printf(”%3d%11d%15d%15s%9dn
11、,equipmenti.number,equipmenti.status,equipmenti.remain,equipmenti.jobname,equipmenti。lnumber);测试(运行时屏幕显示,红色字表示从键盘输入) 0一退出,l一分配,2一回收,3一显示 选择功能项(0一3):输出设备类表: 设备类型 设备总量 空闲好设备 input 2 2 printer 3 3 disk 4 4 tape 1 1 输出设备表: 绝对号 好坏 已未分配 占用作业名 相对号 0 1 0 0 1 1 0 0 2 1 0 0 3 1 0 0 4 1 0 0 5 1 0 0 6 1 0 0 7 1
12、 0 0 8 1 0 0 9 1 0 0 0一退出,l一分配,2一回收,3一显示 选择功能项(03):l输人作业名、作业所需设备类和设备相对号J1 ddd 2无该类设备,设备分配失败0一退出,l一分配,2一回收,3一显示选择功能项(03):输人作业名、作业所需设各类和设备相对号J1 input 1分配成功0退出,l一分配,2一回收,3一显示选择功能项(0-3):输入作业名、作业所需设备类和设备相对号J2 input 30一退出,l一分配,2一回收,3一显示输人作业名、作业所需设各类和设备相对号J1 input 2该类设备不足,分配失败0一退出,l一分配,2一回收,3一显示选择功能项(0-3):
13、输入作业名、作业所需设备类和设备相对号J1 Printer l选择功能项(0一3):输入作业名、作业所需设备类和设备相对号J1 Printer 2输入作业名、作业所需设备类和设备相对号J4 disk 10一退出, l一分配,2一回收,3一显示选择功能项(0一3):输出设备类表: input 2 0 printer 3 1 disk 4 3 tape 1 1输出设备表:绝对号 好坏 已未分配 占用作业名 相对号 0 1 1 J1 1 1 1 1 J2 3 2 1 1 J1 1 3 1 1 J1 2 4 1 0 0 5 1 1 J4 1 7 1 0 0 9 1 0 0输入作业名和作业归还的设备类J1 disk该作业没有使用该类设备输入作业名和作业归还的设备类J1 ddf无该类设备,设备回收失败0一退出,l一分配,2一回收,3一显示输人作业名和作业归还的设备类J1 printer回收成功输人作业名和作业归还的设备类J1 input0一退出,回一分配,2一回收,3一显示输人作业名和作业归还的设备类J4 disk0一退出,l一分配,2一回收,3一显示 input 2 1 printer 3 2 tape 1 1 0 1 0 J1 1 2 1 0 J1 1 5 1 0 J4 1 8 1 0 0 9 1 0 0 0一退出,1一分配,2一回收,3一显示
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1