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