fork download
  1. SIMULATE
  2. * --- МОДЕЛЬ МУЛЬТИПЛЕКСОРНОГО КАНАЛА И 6 МИНИ-ЭВМ ---
  3.  
  4. * --- ФУНКЦИИ ---
  5. EXP_FUNC FUNCTION RN1,C24
  6. 0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
  7. .7,1.2/.75,1.38/.8,1.6/.84,1.83/.88,2.12/.9,2.3
  8. .92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
  9. .99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
  10.  
  11. * --- ПАРАМЕТРЫ СИСТЕМЫ ---
  12. SAVEVALUE K,50
  13. SAVEVALUE SS1,20
  14. SAVEVALUE SS2,5
  15. SAVEVALUE SS3,130
  16. SAVEVALUE SS4,3
  17. SAVEVALUE REFUSED,0
  18. SAVEVALUE AVAR_TIME,0
  19. SAVEVALUE TOTAL_COST,0
  20.  
  21. * --- НАКОПИТЕЛИ ДЛЯ МИНИ-ЭВМ ---
  22. S_EVM1 STORAGE 5
  23. S_EVM2 STORAGE 5
  24. S_EVM3 STORAGE 5
  25. S_EVM4 STORAGE 5
  26. S_EVM5 STORAGE 5
  27. S_EVM6 STORAGE 5
  28.  
  29. * --- ОЧЕРЕДИ К МИНИ-ЭВМ ---
  30. QUEUE Q_EV1
  31. QUEUE Q_EV2
  32. QUEUE Q_EV3
  33. QUEUE Q_EV4
  34. QUEUE Q_EV5
  35. QUEUE Q_EV6
  36.  
  37. * --- ПОСТУПЛЕНИЕ СООБЩЕНИЙ ---
  38. GEN GENERATE 30,10
  39. ASSIGN 1,0
  40. ASSIGN 2,0
  41.  
  42. QUEUE Q_CHAN
  43. SEIZE CHAN
  44. DEPART Q_CHAN
  45. ADVANCE 25,5
  46. RELEASE CHAN
  47.  
  48. * --- ВЫБОР ЭВМ С НАИМЕНЬШЕЙ ОЧЕРЕДЬЮ ---
  49. ASSIGN 3,Q$Q_EV1 ; Длина очереди ЭВМ1
  50. ASSIGN 4,Q$Q_EV2 ; Длина очереди ЭВМ2
  51. ASSIGN 5,Q$Q_EV3 ; Длина очереди ЭВМ3
  52. ASSIGN 6,Q$Q_EV4 ; Длина очереди ЭВМ4
  53. ASSIGN 7,Q$Q_EV5 ; Длина очереди ЭВМ5
  54. ASSIGN 8,Q$Q_EV6 ; Длина очереди ЭВМ6
  55.  
  56. ASSIGN 2,1
  57. ASSIGN 9,P3
  58.  
  59. TEST LE P4,P9,CHK2
  60. ASSIGN 2,2
  61. ASSIGN 9,P4
  62. CHK2 TEST LE P5,P9,CHK3
  63. ASSIGN 2,3
  64. ASSIGN 9,P5
  65. CHK3 TEST LE P6,P9,CHK4
  66. ASSIGN 2,4
  67. ASSIGN 9,P6
  68. CHK4 TEST LE P7,P9,CHK5
  69. ASSIGN 2,5
  70. ASSIGN 9,P7
  71. CHK5 TEST LE P8,P9,TRY_ENTER
  72. ASSIGN 2,6
  73. ASSIGN 9,P8
  74.  
  75. * --- ПРОВЕРКА СВОБОДНОГО МЕСТА ---
  76. TRY_ENTER TEST E P2,1,TRY1
  77. TEST E P2,2,TRY2
  78. TEST E P2,3,TRY3
  79. TEST E P2,4,TRY4
  80. TEST E P2,5,TRY5
  81. TRANSFER ,TRY6
  82.  
  83. TRY1 GATE SNF S_EVM1,REFUSAL
  84. ENTER S_EVM1
  85. TRANSFER ,TO_EVM
  86. TRY2 GATE SNF S_EVM2,REFUSAL
  87. ENTER S_EVM2
  88. TRANSFER ,TO_EVM
  89. TRY3 GATE SNF S_EVM3,REFUSAL
  90. ENTER S_EVM3
  91. TRANSFER ,TO_EVM
  92. TRY4 GATE SNF S_EVM4,REFUSAL
  93. ENTER S_EVM4
  94. TRANSFER ,TO_EVM
  95. TRY5 GATE SNF S_EVM5,REFUSAL
  96. ENTER S_EVM5
  97. TRANSFER ,TO_EVM
  98. TRY6 GATE SNF S_EVM6,REFUSAL
  99. ENTER S_EVM6
  100.  
  101. * --- ОБРАБОТКА НА ЭВМ ---
  102. TO_EVM TEST E P2,1,QUE1
  103. TEST E P2,2,QUE2
  104. TEST E P2,3,QUE3
  105. TEST E P2,4,QUE4
  106. TEST E P2,5,QUE5
  107. TRANSFER ,QUE6
  108.  
  109. QUE1 QUEUE Q_EV1
  110. TRANSFER ,SEIZE_EVM
  111. QUE2 QUEUE Q_EV2
  112. TRANSFER ,SEIZE_EVM
  113. QUE3 QUEUE Q_EV3
  114. TRANSFER ,SEIZE_EVM
  115. QUE4 QUEUE Q_EV4
  116. TRANSFER ,SEIZE_EVM
  117. QUE5 QUEUE Q_EV5
  118. TRANSFER ,SEIZE_EVM
  119. QUE6 QUEUE Q_EV6
  120.  
  121. SEIZE_EVM SEIZE EVM
  122. TEST E P2,1,DEP1
  123. TEST E P2,2,DEP2
  124. TEST E P2,3,DEP3
  125. TEST E P2,4,DEP4
  126. TEST E P2,5,DEP5
  127. DEPART Q_EV6
  128. TRANSFER ,CHECK_AVAR
  129.  
  130. DEP1 DEPART Q_EV1
  131. TRANSFER ,CHECK_AVAR
  132. DEP2 DEPART Q_EV2
  133. TRANSFER ,CHECK_AVAR
  134. DEP3 DEPART Q_EV3
  135. TRANSFER ,CHECK_AVAR
  136. DEP4 DEPART Q_EV4
  137. TRANSFER ,CHECK_AVAR
  138. DEP5 DEPART Q_EV5
  139.  
  140. CHECK_AVAR ASSIGN 10,Q$Q_EV1 ; Сумма длин очередей
  141. ASSIGN 10+,Q$Q_EV2
  142. ASSIGN 10+,Q$Q_EV3
  143. ASSIGN 10+,Q$Q_EV4
  144. ASSIGN 10+,Q$Q_EV5
  145. ASSIGN 10+,Q$Q_EV6
  146.  
  147. TEST GE P10,18,AVAR
  148. ASSIGN 1,188
  149. TRANSFER ,PROC
  150. AVAR ASSIGN 1,188
  151. ASSIGN 1-,X$K
  152. SAVEVALUE AVAR_TIME+,1
  153.  
  154. PROC ADVANCE P1
  155. RELEASE EVM
  156.  
  157. * Освобождение места
  158. TEST E P2,1,OUT1
  159. TEST E P2,2,OUT2
  160. TEST E P2,3,OUT3
  161. TEST E P2,4,OUT4
  162. TEST E P2,5,OUT5
  163. LEAVE S_EVM6
  164. TERMINATE 1
  165.  
  166. OUT1 LEAVE S_EVM1
  167. TERMINATE 1
  168. OUT2 LEAVE S_EVM2
  169. TERMINATE 1
  170. OUT3 LEAVE S_EVM3
  171. TERMINATE 1
  172. OUT4 LEAVE S_EVM4
  173. TERMINATE 1
  174. OUT5 LEAVE S_EVM5
  175. TERMINATE 1
  176.  
  177. * --- ОТКАЗ В ОБСЛУЖИВАНИИ ---
  178. REFUSAL SAVEVALUE REFUSED+,1
  179. TERMINATE
  180.  
  181. * --- УПРАВЛЕНИЕ ВРЕМЕНЕМ ---
  182. TIMER GENERATE 1000000
  183. TERMINATE 1
  184.  
  185. * --- РАСЧЕТ ЗАТРАТ ---
  186. CALC GENERATE ,,,1
  187. ASSIGN 20,X$REFUSED
  188. ASSIGN 21,X$SS3
  189. ASSIGN 22,0
  190. LOOP1 TEST E P20,0,END1
  191. ASSIGN 22+,P21
  192. ASSIGN 20-,1
  193. TRANSFER ,LOOP1
  194. END1 SAVEVALUE TOTAL_COST+,P22
  195. TEST E X$AVAR_TIME,0,NOAVAR
  196. ASSIGN 23,X$SS4
  197. ASSIGN 24,X$AVAR_TIME
  198. ASSIGN 25,X$K
  199. ASSIGN 26,0
  200. LOOP2 TEST E P24,0,END2
  201. ASSIGN 26+,P23
  202. ASSIGN 24-,1
  203. TRANSFER ,LOOP2
  204. END2 ASSIGN 27,P26
  205. LOOP3 TEST E P25,0,END3
  206. ASSIGN 27+,P26
  207. ASSIGN 25-,1
  208. TRANSFER ,LOOP3
  209. END3 SAVEVALUE TOTAL_COST+,P27
  210. NOAVAR TERMINATE
  211.  
  212. * --- ЗАПУСК ---
  213. START 1000
  214. END
Success #stdin #stdout #stderr 0.01s 5320KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Error: near line 1: near "SIMULATE": syntax error