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