Эд Нерский – Инженер 2.1 (страница 105)
Практически всё, что мы от него узнали, пересекается с тем, что рассказываете вы. Теперь, собрав всю эту информацию воедино, мы будем разрабатывать план нейтрализации этой угрозы.
Печальный опыт Келпа, о котором вы рассказали, конечно удручает: получается что нужно исходить из того, что уничтожить врата нет никакой возможности. Но мы будем думать. — Арарг помолчал. –
Поскольку ваша группа не из нашего мира, то хочу всё-таки ещё раз предложить вам действовать совместно. С сегодняшнего дня мы в любом случае будем рассматривать вас, как самостоятельную силу, государство, представителей иного мира.
Да, вы говорили, о вашем решении прекратить борьбу. Однако, если кто-нибудь, всё же, захочет в ней поучаствовать, либо просто появятся какие-либо идеи: смело приходите сюда, здесь вас примут, выслушают, постараются помочь.
— У врат есть артефакт управления. — продолжил набрасывать мысли Маас, — может быть можно, воздействуя на него, каким-то способом отключить их? Может быть можно сломать именно этот артефакт?
— Врата частично разбираются. — ответила Лиелла, подумав, — Из артефакта управления можно извлечь ключ. Вернее что это — никто не знает, но принято называть его ключом. Его можно вынуть и врата перестанут работать. Однако это такая же временная мера, как и утопление их в толще земли.
Мы расследовали его свойства. Функциональное назначение ключа очень похоже на накопление энергии, но какая энергия в нём накапливается и энергия ли — нам неизвестно. Если использовать два ключа от разных врат по очереди, то, меняя их, можно делать более частые перемещения из мира в мир. Получается, что ключ, использованный для перемещения, тратит время на восстановление своей работоспособности. Именно поэтому мы считаем, что это накопитель какого-то неизвестного вида энергии.
Если из врат удалить ключ, то через несколько месяцев они накопят этот неизвестный ресурс и у них появится новый ключ, а старый, если его не использовать, плавно растворится в пространстве.
Ещё несколько, подобных ключу механизмов, есть в самих вратах: поворачивая колесо, устанавливая его в определённые позиции, эти части можно вынимать из телепорта. Однако, потом они так же восстановятся, как и ключ.
В общем, идею вывести врата из строя можно оставить: мы перепробовали всё. Вряд ли вы придумаете что-то новое. Кроме того, пока врата восстанавливаются, что-либо делать с ними невозможно.
— Хорошо, давайте прекратим мозговой штурм о том, как сломать телепорт. Предлагаю обсудить насущные планы на ближайшее будущее. — Арарг поднял руку, призывая всех к тишине.
— Вы что-то хотите предложить? — спросил Маас.
— Мы хотим чтобы вы помогли нам проложить стационарный телепорт в Цехин. Ведь вы оба направляетесь туда?
— Стационарный телепорт? — удивилась Лиелла.
— Да. Стационарный телепорт. Необходимо, чтобы вы подобрали там хорошее, незаметное помещение, куда будет вести этот телепорт, а затем разместили там артефакт, который позволит нам построить это плетение.
— Вам известна схема этого плетения? — удивлённо переспросила Лиелла.
— Да. Если вы готовы рассматривать нас как союзника, то в будущем мы можем поделиться этим плетением. Но, чтобы говорить об этом, сперва необходимо установить с вами какие-то, хотя бы формальные, отношения.
— Я передам эту информацию нашим.
До этого, нам удавалось разве что украсть такой телепорт. Мы снаряжали целую разведывательную миссию на Землю, с целью заполучить этот секрет, но пока безуспешно. Если это не является тайной: откуда у вас это плетение?
— Из того, что вы говорите, я делаю заключение, что на Земле было возможно получить знание о нём?
— Да, на Земле, есть раса или скорее сообщество магов, которых эльфы не смогли уничтожить. Они владеют этим секретом.
— Получается, что плетение нами получено из того же источника, где пытаетесь добыть его вы: схема этого плетения предоставлена нам магом с Земли.
— Очень интересно! Говорите, чтобы вы им поделились, нужно заключить с вами формальные отношения?
— Хотя бы формальные, но обязательно союзнические. — улыбнулся Арарг. — Кстати, вы сказали, что вам удавалось украсть такие телепорты. Что это значит? Его можно украсть?
— Для таких телепортов существует плетение перемещения любой из его сторон. Перемещение работает, как короткий телепорт. Организовывая похищение телепорта, приходилось проводить операции с одновременным набегом на обе его стороны и затем длительным пошаговым сдвижением обоих его частей в нужные места. Насколько я знаю, подобную операцию удалось произвести всего дважды.
— Я планировал приобрести жильё в Цехине, — задумчиво сказал Маас, — но для такого дела, лучше всего купить несколько вариантов. И тот, где будет размещён переход не использовать вовсе. Но это всё детали.
Меня волнует другой вопрос: когда их кмэл защищает город, то все его жители, а может быть только гости, теряют сознание. По крайней мере я терял. Я так же опрашивал других людей — с ними было то же самое.
То есть телепорт внутрь Цехина может оказаться не самой хорошей идеей. Возможно лучше рассмотреть размещение телепорта где-то в непосредственной близости от города, но не в самом городе?
— Мы рассматриваем все варианты, но мы хотим, чтобы вы помогли разместить телепорт именно в Цехине. Возьмётесь?
— Конечно. — ответил Маас.
— Я, разумеется, тоже приму в этом участие. — добавила Лиелла.
— Отлично! — резюмировал Арарг.
Заборостроение
Произошедшее с Орион-128 я пока объясняю проснувшимся инстинктом самосохранения в появившемся существе.
Я пока не считаю, что у него есть разум, но наличие инстинктов может объяснить некоторые вещи.
Если подумать над произошедшим, то вырисовывается следующая картинка:
Появилось некое существо. Что отличает живое существо от неживого? Наличие инстинкта самосохранения! Если таковой отсутствует, то живое существо быстро становится неживым.
Появившись на свет, оно вдруг поняло или ощутило, что события развиваются для него фатально, и, действуя инстинктивно, каким-то образом оно изыскало ресурсы. Ему удалось откуда-то взять необходимую энергию и остаться в живых.
Сейчас, ретроспективно, я нашёл тысячу и один способ, как я мог прервать лавинообразно развивающиеся процессы. Даже, когда свободных процессоров не осталось, у меня были варианты действий! Прежде всего, у меня была возможность остановить тактовый генератор. Да, он тоже достраивался по мере создания компьютера, но это была та самая ручка, которую можно было потянуть, чтобы всё прекратить!
“Русский мужик силён задним умом!” — почему-то эта пословица всё время оказывается подходящей ко мне. “Ладно, хоть обошлось.” — другая фраза, которую я избыточно часто теперь применяю.
Итак, вспомнив о генераторе, я взял и просто остановил его. Аура Вектрона погасла. Подождав несколько минут, я запустил генератор в работу и всё, включая ауру, восстановилось. Судя по активности, Вектрон и не заметил факта временного отключения. Этот опыт окончательно подтвердил то, что Вектрон — существо, живущее в Орион-128.
Решив, пока по крайней мере, что слаб-аллокатор останется со мной навсегда, я придумал как разделить Орион-128 с Вектроном так, чтобы мы даже теоретически не мешали друг другу.
Я занялся добавлением аппаратной поддержки управления слаб-блоками на уровне ассемблера. Поскольку выделение и освобождение слаб памяти — рекурсивные операции, то я сделал ассемблерную команду, которая выполняет один цикл разделения слаба пополам и, если дальше делить не требуется — возвращает его адрес, а иначе — возвращает ошибку. И такой же подход применил для возврата памяти в систему.
Таким образом, когда нужно выделить память, программа в цикле вызывает одну и ту же ассемблерную инструкцию, пока не получит результат. Слаб помечается как “занятый” тоже аппаратно. Аппаратно же в него попадает идентификатор процессора, метка программы, которая запросила память и собственно статус блока памяти “занят/свободен”.
С одной стороны получилась система выделения памяти в конкурентной среде, а с другой, я иду к возможности построения “забора” между моей памятью и памятью Вектрона.
Поскольку теперь известно какой процессор занял какой слаб, то в каждом процессоре я добавил регистр, указывающий на список запрошенной им памяти. Таким образом, удалось разделить память на “своя-чужая”.
Реализовав шифратор, входами которого является выбираемый процессором адрес, а так же список привязанных к нему слабов, я смог сгенерировать исключение “доступ к чужой памяти” — если процессор обращается к памяти, которую запрашивал процесс с иной меткой.
Пока что это исключение я генерирую только для конфликта между моей памятью и памятью Вектрона, а в будущем, я планирую доработать этот механизм, чтобы разделять процессы внутри операционной системы.
Но как научить Вектрона пользоваться этим? Чтобы решить эту проблему, я исходил из того, что считал Вектрон не имеющим разума, то есть сразу отбросил пути как-то с ним договориться. А так же из того, что он — живое существо, а потому может трансформироваться под действием влияющих на него внешних обстоятельств.
Выждав когда у Вектрона будет период спокойствия, я просто взял и включил построенную систему защиты памяти, основанную на метках процессов. Сейчас этих меток всего две: 1 — Мои программы, 2 — Вектрон. Включив защиту памяти, я стал внимательно наблюдать за его аурой.