实验七 设备管理Word格式文档下载.docx

上传人:b****5 文档编号:18155562 上传时间:2022-12-13 格式:DOCX 页数:27 大小:21.16KB
下载 相关 举报
实验七 设备管理Word格式文档下载.docx_第1页
第1页 / 共27页
实验七 设备管理Word格式文档下载.docx_第2页
第2页 / 共27页
实验七 设备管理Word格式文档下载.docx_第3页
第3页 / 共27页
实验七 设备管理Word格式文档下载.docx_第4页
第4页 / 共27页
实验七 设备管理Word格式文档下载.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

实验七 设备管理Word格式文档下载.docx

《实验七 设备管理Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验七 设备管理Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。

实验七 设备管理Word格式文档下载.docx

17.BLOCK*BLOCK,*rear;

/*阻塞队列指针*//*阻塞队列尾指针*/

18.};

19.structSDT/*系统设备表*/

20.{

21.charname[100];

/*系统设备名称*/

22.DCTDCT;

/*绑定的相应设备*/

23.}SDT[100];

24.structCOCT/*控制器控制表*/

25.{

26.charname[100];

/*控制器名称*/

27.intstage;

/*控制器状态:

28.intchct;

/*连接相应通道的通道号*/

29.BLOCK*BLOCK,*rear;

/*阻塞队列*//*阻塞队列尾指针*/

30.}COCT[100];

31.structCHCT/*通道控制表*/

32.{

33.charname[100];

/*通道名称*/

34.intstage;

/*通道的状态:

35.BLOCK*BLOCK,*rear;

36.}CHCT[2];

37.

38.intSDT_N=4;

39.intCOCT_N=3;

40.voidinit()/*初始化*/

41.{

42./*

43.初始化SDT和DCT系统原有4个设备:

KMTP

44.*/

45.strcpy(SDT[0].name,"

K"

);

46.strcpy(SDT[0].DCT.name,SDT[0].name);

47.SDT[0].DCT.type='

I'

;

48.SDT[0].DCT.stage=0;

49.SDT[0].DCT.coct=0;

50.SDT[0].DCT.BLOCK=SDT[0].DCT.rear=NULL;

51.

52.strcpy(SDT[1].name,"

M"

53.strcpy(SDT[1].DCT.name,SDT[1].name);

54.SDT[1].DCT.type='

O'

55.SDT[1].DCT.stage=0;

56.SDT[1].DCT.coct=0;

57.SDT[1].DCT.BLOCK=SDT[1].DCT.rear=NULL;

58.

59.strcpy(SDT[2].name,"

T"

60.strcpy(SDT[2].DCT.name,SDT[2].name);

61.SDT[2].DCT.type='

62.SDT[2].DCT.stage=0;

63.SDT[2].DCT.coct=1;

64.SDT[2].DCT.BLOCK=SDT[2].DCT.rear=NULL;

65.

66.strcpy(SDT[3].name,"

P"

67.strcpy(SDT[3].DCT.name,SDT[3].name);

68.SDT[3].DCT.type='

69.SDT[3].DCT.stage=0;

70.SDT[3].DCT.coct=2;

71.SDT[3].DCT.BLOCK=SDT[3].DCT.rear=NULL;

72./*

73.初始化COCT系统原有3个控制器:

CO1CO2CO3

74.*/

75.strcpy(COCT[0].name,"

CO1"

76.strcpy(COCT[1].name,"

CO2"

77.strcpy(COCT[2].name,"

CO3"

78.COCT[0].stage=0;

79.COCT[1].stage=0;

80.COCT[2].stage=0;

81.COCT[0].chct=0;

82.COCT[1].chct=1;

83.COCT[2].chct=1;

84.COCT[0].BLOCK=COCT[0].rear=NULL;

85.COCT[1].BLOCK=COCT[1].rear=NULL;

86.COCT[2].BLOCK=COCT[2].rear=NULL;

87./*

88.初始化CHCT系统原有2个通道:

CH1CH2

89.*/

90.strcpy(CHCT[0].name,"

CH1"

91.strcpy(CHCT[1].name,"

CH2"

92.CHCT[0].stage=0;

93.CHCT[1].stage=0;

94.CHCT[0].BLOCK=CHCT[0].rear=NULL;

95.CHCT[1].BLOCK=CHCT[1].rear=NULL;

96.}

97./*设备维护*/

98.booljudgeSDT(char*name)

99.{

100.inti;

101.for(i=0;

i<

SDT_N;

i++)

102.{

103.if(strcmp(SDT[i].name,name)==0)/*有重名设备,新建失败,返回0*/

104.returnfalse;

105.}

106.if(i==SDT_N)

107.returntrue;

108.}

109.voidadd(char*name,chartype)/*新建设备*/

110.{

111.inti;

112.strcpy(SDT[SDT_N].name,name);

113.strcpy(SDT[SDT_N].DCT.name,name);

114.SDT[SDT_N].DCT.stage=0;

/*状态置0*/

115.SDT[SDT_N].DCT.type=type;

116.intchoose;

117.cout<

<

"

1、选用已有控制器2、新建控制器\n>

118.cin>

>

choose;

119.if(choose==1)/*选用已有控制器*/

120.{

121.cout<

现有控制器为:

122.for(i=0;

COCT_N;

123.cout<

COCT[i].name<

\t"

124.charname[100];

125.cout<

endl<

输入所选控制器的名称:

126.cin>

name;

127.for(i=0;

128.if(strcmp(COCT[i].name,name)==0)

129.break;

130.SDT[SDT_N].DCT.coct=i;

131.}

132.if(choose==2)/*新建控制器*/

133.{

134.charname[100];

135.cout<

136.for(i=0;

137.cout<

138.cout<

请输入新建控制器的名称:

139.cin>

140.strcpy(COCT[COCT_N].name,name);

141.for(i=0;

142.{

143.if(strcmp(COCT[i].name,name)==0)

144.break;

145.}

146.SDT[SDT_N].DCT.coct=i;

147.cout<

现有通道为:

148.for(i=0;

2;

149.cout<

CHCT[i].name<

150.cout<

请输入所选通道的名称:

151.cin>

152.for(i=0;

153.{

154.if(strcmp(CHCT[i].name,name)==0)

155.break;

156.}

157.COCT[SDT[SDT_N].DCT.coct].chct=i;

158.COCT_N++;

159.}

160.SDT_N++;

161.}

162.voidmoveDCT(DCT*a,DCT*b)

163.{

164.strcpy(a->

name,b->

name);

165.a->

BLOCK=b->

BLOCK;

166.a->

rear=b->

rear;

167.a->

coct=b->

coct;

168.a->

stage=b->

stage;

169.a->

type=b->

type;

170.}

171.

172.

173.voiddel(char*name)/*删除设备name*/

174.{

175.inti,j,k;

176.for(i=0;

177.{

178.if(strcmp(SDT[i].name,name)==0)

179.break;

180.}

181.BLOCK*p,*b;

182.p=b=COCT[SDT[i].DCT.coct].BLOCK;

183.while(b)

184.{

185.if(strcmp(b->

from,name)==0)

186.{

187.if(b==COCT[SDT[i].DCT.coct].BLOCK)

188.p=COCT[SDT[i].DCT.coct].BLOCK=b->

next;

189.else

190.{

191.p->

next=b->

192.deleteb;

193.}

194.b=p;

195.}

196.p=b;

197.if(b!

=NULL)

198.b=b->

199.}

200.p=b=CHCT[COCT[SDT[i].DCT.coct].chct].BLOCK;

201.while(b)

202.{

203.if(strcmp(b->

204.{

205.if(b==CHCT[COCT[SDT[i].DCT.coct].chct].BLOCK)

206.p=CHCT[COCT[SDT[i].DCT.coct].chct].BLOCK=b->

207.else

208.{

209.p->

210.deleteb;

211.}

212.b=p;

213.}

214.p=b;

215.if(b!

216.b=b->

217.}

218.if(CHCT[COCT[SDT[i].DCT.coct].chct].BLOCK==NULL)

219.{

220.if(COCT[SDT[i].DCT.coct].BLOCK!

221.{

222.if(SDT[i].DCT.BLOCK==NULL)

223.SDT[i].DCT.stage=0;

224.CHCT[COCT[SDT[i].DCT.coct].chct].BLOCK=COCT[SDT[i].DCT.coct].BLOCK;

225.COCT[SDT[i].DCT.coct].BLOCK=COCT[SDT[i].DCT.coct].BLOCK->

226.}

227.else

228.{

229.if(SDT[i].DCT.BLOCK!

230.{

231.CHCT[COCT[SDT[i].DCT.coct].chct].BLOCK=SDT[i].DCT.BLOCK;

232.SDT[i].DCT.BLOCK=SDT[i].DCT.BLOCK->

233.}

234.else

235.{

236.

237.CHCT[COCT[SDT[i].DCT.coct].chct].stage=0;

238.COCT[SDT[i].DCT.coct].stage=0;

239.SDT[i].DCT.stage=0;

240.for(j=0;

j<

j++)

241.{

242.if(COCT[SDT[i].DCT.coct].chct==COCT[j].chct&

&

j!

=i)

243.{

244.if(COCT[j].BLOCK!

245.{

246.CHCT[COCT[SDT[i].DCT.coct].chct].BLOCK=COCT[j].BLOCK;

247.COCT[j].BLOCK=COCT[j].BLOCK->

248.CHCT[COCT[SDT[i].DCT.coct].chct].stage=1;

249.break;

250.}

251.}

252.}

253.

254.}

255.}

256.}

257.for(j=0;

258.{

259.if(SDT[i].DCT.coct==SDT[j].DCT.coct&

260.break;

261.}

262.if(j==SDT_N)

263.{

264.

265.for(k=SDT[i].DCT.coct;

k<

COCT_N-1;

k++)

266.{

267.strcpy(COCT[k].name,COCT[k+1].name);

268.COCT[k].stage=COCT[k+1].stage;

269.COCT[k].chct=COCT[k+1].chct;

270.COCT[k].BLOCK=COCT[k+1].BLOCK;

271.COCT[k].rear=COCT[k+1].rear;

272.}

273.for(k=0;

274.{

275.if(SDT[k].DCT.coct>

SDT[i].DCT.coct)

276.SDT[k].DCT.coct--;

277.}

278.for(k=i;

SDT_N-1;

279.{

280.strcpy(SDT[k].name,SDT[k+1].name);

281.moveDCT(&

SDT[k].DCT,&

SDT[k+1].DCT);

282.}

283.SDT_N--;

284.COCT_N--;

285.}

286.else

287.{

288.for(k=i;

289.{

290.strcpy(SDT[k].name,SDT[k+1].name);

291.moveDCT(&

292.}

293.SDT_N--;

294.}

295.

296.

297.}

298.

299./*

300.设备分配

301.*/

302.intapply(char*p,char*name)/*申请设备,进程p申请设备name*/

303.{

304.inti,j;

305./*

306.从前往后查

307.*/

308.BLOCK*block;

309.block=newBLOCK;

310.strcpy(block->

name,p);

311.strcpy(block->

from,name);

312.block->

next=NULL;

313.for(i=0;

314.{

315.if(strcmp(SDT[i].name,name)==0)

316.break;

317.}

318.if(SDT[i].DCT.stage==0)/*如果DCT的状态是0则置1并继续往下查*/

319.{

320.SDT[i].DCT.stage=1;

321.if(COCT[SDT[i].DCT.coct].stage==0)/*如果COCT的状态是0则置1并继续往下查*/

322.{

323.COCT[SDT[i].DCT.coct].stage=1;

324.if(CHCT[COCT[SDT[i].DCT.coct].chct].stage==0)/*如果CHCT的状态是0则置1*/

325.{

326.CHCT[COCT[SDT[i].DCT.coct].chct].stage=1;

327.if(CHCT[COCT[SDT[i].DCT.coct].chct].BLOCK==NULL)

328.CHCT[COCT[SDT[i].DCT.coct].chct].rear=CHCT[COCT[SDT[i].DCT.coct].chct].BLOCK=block;

329./*代表进程p申请设备name过来的*/

330.return1;

/*申请成功*/

331.}

332.else/*如果CHCT的状态是1则需将该进程阻塞到CHCT的阻塞队列上*/

333.{

334.

335.CHCT[COCT[SDT[i].DCT.coct].chct].rear->

next=block;

336.CHCT[COCT[SDT[i].DCT.coct].chct].rear=block;

337.return2;

/*阻塞到了CHCT上*/

338.}

339.}

340.else/*如果COCT的状态是1,则需将该进程阻塞到COCT的阻塞队列上*/

341.{

342.if(COCT[SDT[i].DCT.coct].BLOCK==NULL)

343.COCT[SDT[i].DCT.coct].rear=COCT[SDT[i].DCT.coct].BLOCK=block;

344.else

345.{

346.COCT[SDT[i].DCT.coct].rear->

347.COCT[SDT[i].DCT.coct].rear=block;

348.}

349.return3;

/*阻塞到了COCT上*/

350.}

351.}

352.else/*如果DCT的状态是1,则需将该进程阻塞到DCT的阻塞队列上*/

353.{

354.if(SDT[i].DCT.BLOCK==NULL)

355.SDT[i].DCT.rear=SDT[i].DCT.BLOCK=block;

356.else

357.{

358.SDT[i].DCT.rear->

359.SDT[i].DCT.rear=block;

360.}

361.return4;

/*阻塞到了DCT上*/

362.}

363.}

364.

365.boolrecycle(char*t,char*name)/*t回收设备name*/

366.{

367./*

368.从后往前查

369.*/

370.inti,j,k;

371.for(i=0;

372.{

373.if(strcmp(SDT[i].name,name)==0)

374.break;

375.}

376.BLOCK

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1