Допустим, мы решили гарантировать доставку исправного оборудования в конце вояжа, разместив на борту корабля такое количество экземпляров устройств, при котором хотя бы одно останется исправным к концу полета.
Учитывая, что продолжительность полета может иметь несколько сотен лет, избыточность может оказаться огромной, что приведет к тому, что к концу путешествия внутренность корабля будет представлять собой свалку. И, всё-таки, проблема не в этом.
Возникнет более серьезная проблема: как определить из огромного множества устройств исправное устройство в конце вояжа?. Это тем более невыполнимо, так как не известно, КТО будет определять и какими критериями ОН должен руководствоваться?
ПРИМЕЧАНИЕ 3
Известно, что сложность процесса проверки работоспособности технического устройства зачастую выше проверяемого алгоритма, то есть проверяющее устройство может оказаться сложнее проверяемого.
Почему же в Природе не возникают эти проблемы? Чем это вызвано? Прежде всего, тем, что все экземпляры в Природе непрерывно проверяются на работоспособность.
Действительно, все мальки, сразу после появления в среде обитания начинают свою независимую жизнедеятельность. Да, конечно, часть из них будет съедена, некоторые попадут в неблагоприятные условия и погибнут, но для оставшихся не будет проблемы проверки на их жизнедеятельности. Так же обстоят дела с семенами.
Таким образом, избыточность в Природе — вовсе не избыточна. Она возникает из учета условий, в которых должны адаптироваться новые особи.
Далее мы рассмотрим, как возможно обеспечить эти условия в технических устройствах.
Особенность рассматриваемых ниже методов заключается в том, что они должны обеспечивать готовность изделия к выполнению своей задачи после завершения срока путешествия независимо от его продолжительности.
Далее обсуждаются возможные методы обеспечения надежности, но не как практические методы (это может послужить поводом для углубленных исследований), а как иллюстрация выше названного принципа «каждый за себя».
Защита сохранности «хардвэра»
Допустим, мы имеем n процессоров, каждый из которых, например, выполняет программу для получения результата вычисления выражения (2х2). Программа записана в следующем виде:
Выполнить операцию 2х2,
Если результат равен 4, то переписать
этот текст программы на то же место и
записать в контрольную ячейку К дату последней записи.
Примем, что
1. процессор прекращают работу либо, когда закончился текст, либо когда встретилась незнакомая ему операция.
2. нарушения в работе процессора происходят только в результате деструктивных воздействий. (То есть, он не имеет технологических сбоев, связанных с ошибками при конструировании и изготовлении. Всё это должно быть устранено заранее).
3. Под ненадежностью мы будем понимать возможность неисполнения заданного алгоритма.
Допустим, мы имеем n процессоров, каждый из которых циклически повторяет приведенную выше программу. Тогда, в результате «бурной» деятельности процессоров, в каждой ячейке Ki (i:=1,n) будет записана одна и та же дата.
ПРИМЕЧАНИЕ 4
Вместо даты в Ki можно записывать порядковый номер выполнения программ. Важно, чтобы это выполнялось всеми n процессорами.
Допустим, что при очередном раунде j-ый процессор остановился, так как не смог выполнить операцию, записанную в виде «Выполнить операцию 2х2». Это приведет к тому, что в ячейку Kj будет записана информация, отличная от Ki.
Примем, что по окончании раунда каждый из завершивших программу процессоров, в том числе и i—ый, сравнивает содержимое своей ячейки Ki с содержимым аналогичных ячеек других процессоров и если, например, Ki>Kj, то i—ый процессор переписывает на новое место свой текст программы, включает новый процессор, присвоив ему номер j и записывает в его ячейку Kj, содержимое собственной ячейки Ki.
Таким образом, после каждого раунда будут функционировать n компьютеров, и это может сохраняться до тех пор, пока будут резервные процессоры для замены вышедших из строя и достаточно памяти.
Если принять, что на борту есть устройства и материалы необходимые для производства процессоров, то подобная модель будет функционировать как угодно долго.
ПРИМЕЧАНИЕ 5
Эти возможности могут быть реализованы в результате развития нанотехнологии
Заметим, что рассмотренная модель нами применяется для иллюстрации использования принципа «каждый за себя» в технике. Как можно видеть, в этой модели каждый процессор работает независимо от других и это приводит к тому, что даже
ЕСЛИ В ТЕЧЕНИЕ ОДНОГО РАУНДА ОТКАЖЕТ n-1 ПРОЦЕССОРОВ, то при наличии необходимых ресурсов В СЛЕДУЮЩЕМ РАУНДЕ ЧИСЛО ИСПРАВНЫХ БУДЕТ восстановлено до n.
Остается заметить, что величина n может выбираться из условия, что за время одного раунда откажет максимум один процессор.
Не напоминает ли это механизм сохранения популяции рыб?
Защита базы данных и программного обеспечения
Мы обсудили способ обеспечения надежности процессора. В действительности предложенный способ позволяет проверить не только процессор, но и сохранность текста программы. В рассматриваемом случае мы исходим из того, что программы изначально, то есть до «загрузки» протестированы и, поэтому, нам необходимо проверять только «целостность» текста.
ПРИМЕЧАНИЕ 6
В действительности, такая проверка позволяет определить отсутствие нарушений ячеек памяти, в которой записан текст программы. Такая проверка позволяет контролировать не только текст программы, но и «целостность базы данных».
Дальше мы будем рассматривать проверку программного обеспечения аналогично проверке базы данных.
Допустим, на борту находится n компьютеров, и в каждом i-ом (i:=1, n) компьютере база данных записана в виде двух одинаковых файлов. Аi и Вi. (Аi≡Вi)
Помимо действий описанных в предыдущем разделе, каждый компьютер непрерывно выполняет следующий алгоритм:
1. Сравнить файлы Аi и Вi.. Если они не совпадают, то работу закончить. Иначе
2. Записать дату последней проверки в ячейку. Пi
3. После окончания работы всех компьютеров, сравнить Пi со значениями других компьютеров и определить разность, вычислив δi,.j= Пi — Пj для i-го и j-го компьютеров. Если для j-го компьютера, δi,.j>0, это значит, что проверка с помощью j-го процессора не обеспечивает выполнение условия (Aj≡Bj) и поэтому i-ый компьютер переписывает Аi и Вi на место Aj и Bj.
Таким образом, после каждого раунда все компьютеры будут иметь одинаковые базы данных.
Из этого следует, что база данных Аi,Вi (i:=1, n) будет сохраняться до тех пор, пока будут ресурсы, позволяющие запускать новый процессор взамен неисправного.
ПРИМЕЧАНИЕ 7
Можно предположить, что на борту находится оборудование, способное перерабатывать детали неисправного j-го компьютера под управлениемi-го. В этом случае база данных будет сохраняться до тех пор, пока не иссякнет бортовой источник энергии.
Мы обсудили возможность надежной доставки вычислительной техники вместе с программным обеспечением. Однако, возникает вопрос, достаточно ли этого?
Для того, чтобы ответить на этот вопрос следует обсудить, каким должно быть программное обеспечение?