Выбрать главу

Меня волнует другой вопрос: когда их кмэл защищает город, то все его жители, а может быть только гости, теряют сознание. По крайней мере я терял. Я так же опрашивал других людей — с ними было то же самое.

То есть телепорт внутрь Цехина может оказаться не самой хорошей идеей. Возможно лучше рассмотреть размещение телепорта где-то в непосредственной близости от города, но не в самом городе?

— Мы рассматриваем все варианты, но мы хотим, чтобы вы помогли разместить телепорт именно в Цехине. Возьмётесь?

— Конечно. — ответил Маас.

— Я, разумеется, тоже приму в этом участие. — добавила Лиелла.

— Отлично! — резюмировал Арарг.

Заборостроение

Произошедшее с Орион-128 я пока объясняю проснувшимся инстинктом самосохранения в появившемся существе.

Я пока не считаю, что у него есть разум, но наличие инстинктов может объяснить некоторые вещи.

Если подумать над произошедшим, то вырисовывается следующая картинка:

Появилось некое существо. Что отличает живое существо от неживого? Наличие инстинкта самосохранения! Если таковой отсутствует, то живое существо быстро становится неживым.

Появившись на свет, оно вдруг поняло или ощутило, что события развиваются для него фатально, и, действуя инстинктивно, каким-то образом оно изыскало ресурсы. Ему удалось откуда-то взять необходимую энергию и остаться в живых.

Сейчас, ретроспективно, я нашёл тысячу и один способ, как я мог прервать лавинообразно развивающиеся процессы. Даже, когда свободных процессоров не осталось, у меня были варианты действий! Прежде всего, у меня была возможность остановить тактовый генератор. Да, он тоже достраивался по мере создания компьютера, но это была та самая ручка, которую можно было потянуть, чтобы всё прекратить!

“Русский мужик силён задним умом!” — почему-то эта пословица всё время оказывается подходящей ко мне. “Ладно, хоть обошлось.” — другая фраза, которую я избыточно часто теперь применяю.

Итак, вспомнив о генераторе, я взял и просто остановил его. Аура Вектрона погасла. Подождав несколько минут, я запустил генератор в работу и всё, включая ауру, восстановилось. Судя по активности, Вектрон и не заметил факта временного отключения. Этот опыт окончательно подтвердил то, что Вектрон — существо, живущее в Орион-128.

Решив, пока по крайней мере, что слаб-аллокатор останется со мной навсегда, я придумал как разделить Орион-128 с Вектроном так, чтобы мы даже теоретически не мешали друг другу.

Я занялся добавлением аппаратной поддержки управления слаб-блоками на уровне ассемблера. Поскольку выделение и освобождение слаб памяти — рекурсивные операции, то я сделал ассемблерную команду, которая выполняет один цикл разделения слаба пополам и, если дальше делить не требуется — возвращает его адрес, а иначе — возвращает ошибку. И такой же подход применил для возврата памяти в систему.

Таким образом, когда нужно выделить память, программа в цикле вызывает одну и ту же ассемблерную инструкцию, пока не получит результат. Слаб помечается как “занятый” тоже аппаратно. Аппаратно же в него попадает идентификатор процессора, метка программы, которая запросила память и собственно статус блока памяти “занят/свободен”.

С одной стороны получилась система выделения памяти в конкурентной среде, а с другой, я иду к возможности построения “забора” между моей памятью и памятью Вектрона.

Поскольку теперь известно какой процессор занял какой слаб, то в каждом процессоре я добавил регистр, указывающий на список запрошенной им памяти. Таким образом, удалось разделить память на “своя-чужая”.

Реализовав шифратор, входами которого является выбираемый процессором адрес, а так же список привязанных к нему слабов, я смог сгенерировать исключение “доступ к чужой памяти” — если процессор обращается к памяти, которую запрашивал процесс с иной меткой.

Пока что это исключение я генерирую только для конфликта между моей памятью и памятью Вектрона, а в будущем, я планирую доработать этот механизм, чтобы разделять процессы внутри операционной системы.

Но как научить Вектрона пользоваться этим? Чтобы решить эту проблему, я исходил из того, что считал Вектрон не имеющим разума, то есть сразу отбросил пути как-то с ним договориться. А так же из того, что он — живое существо, а потому может трансформироваться под действием влияющих на него внешних обстоятельств.