ПРИЛОЖЕНИЕ X III
О Б Р А Щ ЕН И Е К П РО Ц ЕДУРЕ
Процедура ^„ен. о. д (л, сЗ, с4, с5, /р, /в, d) включает в себя: л — переменную типа integer; d, tp, /в — переменные типа real; сЗ, с4, с5 — массивы.
Обращение к процедуре может быть записано без формальных параметров, если принять обозначения, аналогичные принятым при описании процедуры 5Ѵо.д-
Возможно многократное обращение к процедуре.
В программе, использующей процедуру ^нен.о.д. необходимо также описать
fe 12, іТ, |
і2 — переменные типа |
integer; / [1 : 2 n ] — массив. |
О П И СА Н И Е ПРО ЦЕДУРЫ |
|
При |
первом обращении к |
процедуре полагаем /рв = 2 (/рв — постоянная, |
значение которой попеременно равно 1 и 2), поэтому проверяем, выполняется ли
условие |
d = |
1. Если да, то |
задаем начальные значения соответствующим вели |
чинам: |
£ : = Т |
:=0; £12 : =1 |
и т. д., выполняем первое обращение к процедуре !РХ |
и переходим к нахождению 2п случайных интервалов времени / [і]. Если условие d — 1 не выполняется, то сразу осуществляем переход на переключатель R 1 І£12], который направляет на поиск элемента, имеющего min / [/] либо в основной цепочке блоков (/ := 1, . . ., я), либо в резервной (£ := л -J- I, . . ., 2я). Номер этого эле мента запоминаем £з := /, а вместо t [£з] находим время восстановления. К значе нию Т (котороепервоначально равно нулю) добавляем Imin. Для остальных эле ментов рассматриваемой цепочки после этого получаем
/ [і] := (abs (t [i]) — t min)Xsign (/ [t]).
Далее, пока данная цепочка восстанавливается, подключаем резервную (или основную) цепочку и для нее выполняем те же операции. К значению Т добавляем / min этой цепочки. Выясняем, превышает ли / min этой цепочки найденное время восстановления первой цепочки / [р]. Если да, то за время работы второй цепочки успела восстановиться первая (исправные элементы ее не работали, а отказавшие восстановились). Для нее определяем время работы и снова среди ее элементов оты скиваем элемент, имеющий / min. Если указанное условие не выполняется, то это значит, что обе цепочки восстанавливаются и система отказала. Тогда / [р] опреде ляется с помощью выражения
/ [р] := (abs (/ |
[р]) — / min) X sign (/ [p]). |
|
Выясняем, модуль какой из величин, определяющих случайные времена восста |
новления отказавших элементов в двух цепочках, |
меньше. Эта величина |
и будет |
временем восстановления системы |
/ min. Вместо |
нее определяем время |
работы |
цепочки, а вместо второй величины будет теперь стоять их разность. Для постоян
ной £12 должно быть задано |
такое |
значение, чтобы при следующем обращении |
к процедуре переключатель Д1 |
[£12] |
направил на поиск элемента с минимальным |
временем восстановления в нужной цепочке (в той, время восстановления которой явилось временем восстановления системы). Таким образом, будут найдены значе
ния tp := Т и Ів := |
t min. Первое из них выдается при первом выходе из процедуры |
(при этом Т := |
/в := |
0, а /рв задаем равным 2), а второе (так как /рв = 2 ) — при |
следующем выходе из процедуры. |
При /рв = |
2 мы |
сразу выходим из процедуры со следующими значениями: |
/в := / min; tp |
:= |
0; |
/рв := 1. |
Таким образом, |
/рв будет обеспечивать чередование на выходе величин /р и /в. |
Продолжать же реализацию системы будем лишь при следующем обращении к про цедуре (при d Ф 1). Для этого все величины подготовлены заранее.