— Николь, это вы, — услышала она из темноты голос Ричарда Уэйкфилда. — А я был уверен, что вы спите. У меня есть для вас кое-какие новости.
— Привет, Ричард, — поздоровалась Николь, когда тот с фонариком в руках вынырнул из темноты.
— Я не мог уснуть, — пояснил он, — слишком много всякой пакости в голове. И решил поразмыслить над вашим делом. — Он улыбнулся. — Все оказалось куда проще, чем я предполагал. Не заглянете ли ко мне, поговорим?
Николь смутилась. Она уже обдумывала, что будет говорить Брауну и Хейльману о Такагиси.
— Или вы забыли, — напомнил Ричард, — всю эту историю с программным обеспечением „Рохира“ и ручными командами?
— Значит, вы работали над этим ? — переспросила она. Прямо здесь?
— Конечно. Пришлось только попросить О'Тула передать сюда все данные. Пойдемте, я покажу.
Николь решила, что встреча с доктором Брауном может и подождать. Она шла рядом с Ричардом. По пути тот стукнул в стенку одной из хижин.
— Эй, Табори, угадай-ка, кого я нашел? — воскликнул он. — Нашу прекрасную докторшу и в самых густых потемках. Ты не хочешь к нам присоединиться? — И обратился к Николь. — Ему я кое-что уже объяснил, а в вашем домике было темно, и я решил, что вы уже спите.
Через минуту в двери появился Янош, приветствовавший Николь улыбкой.
— Отлично, Уэйкфилд, — ответил он, — только не затягивай, я и так засыпаю.
Когда они оказались в его хижине, британский инженер с явным удовольствием поведал, что случилось с роботом-хирургом при внезапном развороте „Ньютона“.
— Вы были правы, Николь, — проговорил он, — в „Рохир“ были введены ручные команды. Они действительно отключили защитные алгоритмы, и ни один из них не сработал во время маневра Рамы.
Улыбаясь, Уэйкфилд продолжил, убедившись, что Николь следит за его объяснением.
— По-видимому, когда Янош упал и ударил рукой по клавиатуре, он отдал три команды. Так по крайней мере решил „Рохир“, он принял последовательность из трех ручных команд. Естественно, получилась бессмыслица, но „Рохир“ не знал этого.
— Быть может, вы теперь представите, какие кошмары терзают душу того, кто создает программное обеспечение. Всех вариантов никто не может предвидеть. И программисты предусмотрели защиту от одной случайной команды — ну если кто-то неумышленно прикоснется к пульту во время операции, — но не от нескольких . Все ручные команды система считает экстренными. И, поскольку они обладают высоким приоритетом в программном обеспечении „Рохира“, принимаются к исполнению немедленно. Однако программа знает, что одиночная ручная команда может оказаться „плохой“, и способна отвергнуть ее и обратиться к следующему приоритету, в том числе и к защите от ошибок.
— Извините, — сказала Николь. — Я не поняла. Как это может программа отвергнуть одну плохую команду, а несколько пропустить? Я считала, что процессор оперирует с рядами.
Обернувшись к своему портативному компьютеру, Ричард по заметкам вывел на монитор ряды и колонки цифр.
— Вот операции, которые „Рохир“ выполнял после этих ручных команд.
— Они повторяются, — заметил Янош, — через семь операций.
— Правильно, — ответил Ричард. — Три раза „Рохир“ пытался исполнить первую ручную команду и каждый раз неудачно, потом он перешел к следующей команде, как это и предусмотрено программой…
— Но почему, — осведомился Табори, — он вернулся потом к первой команде?
— Потому что программисты не предусмотрели возможности поступления многократной ошибочной команды. Закончив обработку каждой команды, программа всякий раз спрашивает у себя — нет ли на буфере другой ручной команды. Если ее нет , программа отвергает первую команду и происходит прерывание. Если она есть , программа запоминает отвергнутую команду и считывает следующую. И если последовательно не прошли уже две команды, программа решает , что сломан процессор, и переключается на дублирующий и вновь пытается обработать те же ручные команды. Понимаете. Пусть одна…
Несколько секунд Николь слушала, как Ричард и Янош разговаривают о дублировании подсистем, буферных командах и очередности считывания. Ее знания в области защиты от неисправностей и дублирования были минимальны, поэтому участвовать в разговоре она не могла.
— Минуточку, — наконец вмешалась она. — Я опять сбилась. Помните, я все-таки не инженер. Может ли кто-нибудь изложить мне суть дела на обычном английском языке?
Уэйкфилд пустился в извинения.
— Простите, Николь, — проговорил он, — вы знаете как устроены программы с прерыванием? — Она кивнула. — А очередность приоритетов в такой системе вам знакома? Хорошо. Тогда объяснение будет несложным. Сигналы на прерывание от видеосистемы и акселерометра обладали меньшим приоритетом, чем ручные команды, непроизвольно созданные Яношем при падении. Программа зациклилась по контуру обработки ручных команд и не смогла услышать сигналы датчиков. Поэтому скальпель продолжал резать.
Николь почему-то ощутила разочарование. Объяснение оказалось достаточно простым, и ей вовсе не хотелось бы узнать, что виноват Янош или любой другой член экипажа. Но уж слишком простым было это объяснение. Оно не стоило потраченного ею времени и сил.
Сев на кушетку Ричарда, Николь проговорила:
— Вот и вся моя тайна?
Янош опустился возле нее.
— Николь, приободритесь, — сказал он. — Новость неплохая. Во всяком случае, мы не напутали в исходных данных, и все нашло достаточно логичное объяснение.
— Просто великолепное, — саркастически отозвалась Николь. — Но генерал Борзов тем не менее мертв. А теперь еще и Реджи Уилсон. — Николь припомнила возбужденное состояние американского журналиста в последние дни и свой разговор с Франческой. — Кстати, — не задумываясь, спросила она, — никто из вас не слышал, жаловался ли генерал Борзов на головную боль или на какие-нибудь другие неудобства? В особенности в день банкета?
Уэйкфилд покачал головой.
— Нет, — ответил Янош. — А почему вы спрашиваете?
— Дело в том, что я запросила у портативного диагноста возможный диагноз, основываясь на его биометрических показаниях, в том случае, если у него не было аппендицита. Наиболее вероятная причина — отравление. Вероятность — 62 %. Я подумала, что возможна аллергическая реакция на какой-нибудь медикамент.