ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:21.16KB ,
资源ID:18155562      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18155562.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验七 设备管理Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、17. BLOCK *BLOCK,*rear; /*阻塞队列指针*/ /*阻塞队列尾指针*/ 18.;19.struct SDT /*系统设备表*/ 20. 21. char name100; /*系统设备名称*/ 22. DCT DCT; /*绑定的相应设备*/ 23.SDT100;24.struct COCT /*控制器控制表*/ 25. 26. char name100; /*控制器名称*/ 27. int stage; /*控制器状态:28. int chct; /*连接相应通道的通道号*/ 29. BLOCK *BLOCK,*rear; /*阻塞队列*/ /*阻塞队列尾指针*/ 30

2、.COCT100;31.struct CHCT /*通道控制表*/ 32. 33. char name100; /*通道名称*/ 34. int stage; /*通道的状态:35. BLOCK *BLOCK,*rear;36.CHCT2;37. 38.int SDT_N=4;39.int COCT_N=3;40.void init() /*初始化*/ 41. 42./* 43.初始化SDT和DCT 系统原有4个设备:K M T P 44. */ 45. strcpy(SDT0.name,K);46. strcpy(SDT0.DCT.name,SDT0.name);47. SDT0.DCT.t

3、ype = I;48. SDT0.DCT.stage = 0;49. SDT0.DCT.coct = 0;50. SDT0.DCT.BLOCK = SDT0.DCT.rear = NULL;51. 52. strcpy(SDT1.name,M53. strcpy(SDT1.DCT.name,SDT1.name);54. SDT1.DCT.type = O55. SDT1.DCT.stage = 0;56. SDT1.DCT.coct = 0;57. SDT1.DCT.BLOCK = SDT1.DCT.rear = NULL;58. 59. strcpy(SDT2.name,T60. strcp

4、y(SDT2.DCT.name,SDT2.name);61. SDT2.DCT.type = 62. SDT2.DCT.stage = 0;63. SDT2.DCT.coct = 1;64. SDT2.DCT.BLOCK = SDT2.DCT.rear = NULL;65. 66. strcpy(SDT3.name,P67. strcpy(SDT3.DCT.name,SDT3.name);68. SDT3.DCT.type = 69. SDT3.DCT.stage = 0;70. SDT3.DCT.coct = 2;71. SDT3.DCT.BLOCK = SDT3.DCT.rear = NU

5、LL;72. /* 73. 初始化COCT 系统原有3个控制器:CO1 CO2 CO3 74. */ 75. strcpy(COCT0.name,CO176. strcpy(COCT1.name,CO277. strcpy(COCT2.name,CO378. COCT0.stage = 0;79. COCT1.stage = 0;80. COCT2.stage = 0;81. COCT0.chct = 0;82. COCT1.chct = 1;83. COCT2.chct = 1;84. COCT0.BLOCK = COCT0.rear = NULL;85. COCT1.BLOCK = COC

6、T1.rear = NULL;86. COCT2.BLOCK = COCT2.rear = NULL;87. /* 88. 初始化CHCT 系统原有2个通道:CH1 CH2 89. */ 90. strcpy(CHCT0.name,CH191. strcpy(CHCT1.name,CH292. CHCT0.stage = 0;93. CHCT1.stage = 0;94. CHCT0.BLOCK = CHCT0.rear = NULL;95. CHCT1.BLOCK = CHCT1.rear = NULL;96. 97./*设备维护*/ 98.bool judgeSDT(char *name)

7、 99. 100. int i;101. for(i = 0 ; i SDT_N ; i +) 102. 103. if(strcmp(SDTi.name,name) = 0) /*有重名设备,新建失败,返回0*/ 104. return false;105. 106. if(i = SDT_N) 107. return true;108. 109.void add(char *name,char type) /*新建设备*/ 110. 111. int i;112. strcpy(SDTSDT_N.name,name);113. strcpy(SDTSDT_N.DCT.name,name);

8、114. SDTSDT_N.DCT.stage = 0; /*状态置0*/ 115. SDTSDT_N.DCT.type = type;116. int choose;117. cout118. cinchoose;119. if(choose = 1) /*选用已有控制器*/ 120. 121. cout现有控制器为:122. for(i = 0 ; COCT_N ;123. coutCOCTi.namet124. char name100;125. coutendlname;127. for(i = 0 ;128. if(strcmp(COCTi.name,name) = 0) 129.

9、break;130. SDTSDT_N.DCT.coct = i;131. 132. if(choose=2) /*新建控制器*/ 133. 134. char name100;135. cout136. for(i = 0 ;137. cout138. cout140. strcpy(COCTCOCT_N.name,name);141. for(i = 0 ;142. 143. if(strcmp(COCTi.name,name) = 0) 144. break;145. 146. SDTSDT_N.DCT.coct = i;147. cout现有通道为:148. for(i = 0 ; 2

10、 ;149. coutCHCTi.name150. cout152. for(i = 0 ;153. 154. if(strcmp(CHCTi.name,name) = 0) 155. break;156. 157. COCTSDTSDT_N.DCT.coct.chct = i;158. COCT_N+;159. 160. SDT_N+;161. 162.void moveDCT(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-c

11、oct;168. a-stage = b-stage;169. a-type = b-type;170. 171. 172. 173.void del(char *name) /*删除设备name*/ 174. 175. int i,j,k;176. for(i = 0 ;177. 178. if(strcmp(SDTi.name,name) = 0) 179. break;180. 181. BLOCK *p,*b;182. p = b = COCTSDTi.DCT.coct.BLOCK;183. while(b) 184. 185. if(strcmp(b-from,name) = 0)

12、186. 187. if(b = COCTSDTi.DCT.coct.BLOCK) 188. p = COCTSDTi.DCT.coct.BLOCK = b-next;189. else 190. 191. p-next = b-192. delete b;193. 194. b = p;195. 196. p = b;197. if(b != NULL) 198. b = b-199. 200. p = b = CHCTCOCTSDTi.DCT.coct.chct.BLOCK;201. while(b) 202. 203. if(strcmp(b-204. 205. if(b = CHCTC

13、OCTSDTi.DCT.coct.chct.BLOCK) 206. p = CHCTCOCTSDTi.DCT.coct.chct.BLOCK = b-207. else 208. 209. p-210. delete b;211. 212. b = p;213. 214. p = b;215. if(b !216. b = b-217. 218. if(CHCTCOCTSDTi.DCT.coct.chct.BLOCK = NULL) 219. 220. if(COCTSDTi.DCT.coct.BLOCK !221. 222. if(SDTi.DCT.BLOCK = NULL) 223. SD

14、Ti.DCT.stage = 0;224. CHCTCOCTSDTi.DCT.coct.chct.BLOCK = COCTSDTi.DCT.coct.BLOCK;225. COCTSDTi.DCT.coct.BLOCK = COCTSDTi.DCT.coct.BLOCK-226. 227. else 228. 229. if(SDTi.DCT.BLOCK !230. 231. CHCTCOCTSDTi.DCT.coct.chct.BLOCK = SDTi.DCT.BLOCK;232. SDTi.DCT.BLOCK = SDTi.DCT.BLOCK-233. 234. else 235. 236

15、. 237. CHCTCOCTSDTi.DCT.coct.chct.stage = 0;238. COCTSDTi.DCT.coct.stage = 0;239. SDTi.DCT.stage = 0;240. for(j = 0 ; j 248. CHCTCOCTSDTi.DCT.coct.chct.stage = 1;249. break;250. 251. 252. 253. 254. 255. 256. 257. for(j = 0 ;258. 259. if(SDTi.DCT.coct = SDTj.DCT.coct &260. break;261. 262. if(j = SDT_

16、N) 263. 264. 265. for(k = SDTi.DCT.coct ; k SDTi.DCT.coct) 276. SDTk.DCT.coct-;277. 278. for(k = i ; SDT_N-1 ;279. 280. strcpy(SDTk.name,SDTk+1.name);281. moveDCT(&SDTk.DCT,&SDTk+1.DCT);282. 283. SDT_N-;284. COCT_N-;285. 286. else 287. 288. for(k = i ;289. 290. strcpy(SDTk.name,SDTk+1.name);291. mov

17、eDCT(&292. 293. SDT_N-;294. 295. 296. 297. 298. 299./* 300.设备分配 301.*/ 302.int apply(char *p,char *name) /*申请设备, 进程p申请设备name*/ 303. 304. int i,j;305. /* 306. 从前往后查 307. */ 308. BLOCK *block;309. block = new BLOCK;310. strcpy(block-name,p);311. strcpy(block-from,name);312. block-next = NULL;313. for(

18、i = 0 ;314. 315. if(strcmp(SDTi.name,name) = 0) 316. break;317. 318. if(SDTi.DCT.stage = 0) /*如果DCT的状态是0 则置1并继续往下查*/ 319. 320. SDTi.DCT.stage = 1;321. if(COCTSDTi.DCT.coct.stage = 0) /*如果COCT的状态是0 则置1并继续往下查*/ 322. 323. COCTSDTi.DCT.coct.stage = 1;324. if(CHCTCOCTSDTi.DCT.coct.chct.stage = 0) /*如果CHC

19、T的状态是0 则置1*/ 325. 326. CHCTCOCTSDTi.DCT.coct.chct.stage = 1;327. if(CHCTCOCTSDTi.DCT.coct.chct.BLOCK = NULL) 328. CHCTCOCTSDTi.DCT.coct.chct.rear = CHCTCOCTSDTi.DCT.coct.chct.BLOCK= block;329. /*代表进程p申请设备name过来的*/ 330. return 1; /*申请成功*/ 331. 332. else /*如果CHCT的状态是1则需将该进程阻塞到CHCT的阻塞队列上*/ 333. 334. 33

20、5. CHCTCOCTSDTi.DCT.coct.chct.rear-next = block;336. CHCTCOCTSDTi.DCT.coct.chct.rear = block;337. return 2; /*阻塞到了CHCT上*/ 338. 339. 340. else /*如果COCT的状态是1,则需将该进程阻塞到COCT的阻塞队列上*/ 341. 342. if(COCTSDTi.DCT.coct.BLOCK = NULL) 343. COCTSDTi.DCT.coct.rear = COCTSDTi.DCT.coct.BLOCK = block;344. else 345.

21、346. COCTSDTi.DCT.coct.rear-347. COCTSDTi.DCT.coct.rear = block;348. 349. return 3; /*阻塞到了COCT上*/ 350. 351. 352. else /*如果DCT的状态是1,则需将该进程阻塞到DCT的阻塞队列上*/ 353. 354. if(SDTi.DCT.BLOCK = NULL) 355. SDTi.DCT.rear = SDTi.DCT.BLOCK = block;356. else 357. 358. SDTi.DCT.rear-359. SDTi.DCT.rear = block;360. 361. return 4; /*阻塞到了DCT上*/ 362. 363. 364. 365.bool recycle(char *t,char *name) /*t回收设备name*/ 366. 367./* 368.从后往前查 369. */ 370. int i,j,k;371. for(i = 0 ;372. 373. if(strcmp(SDTi.name,name) = 0) 374. break;375. 376. BLOCK

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

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