Светлый фон

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

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

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

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

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

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

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

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

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

Пока я возился со всем этим, Этера и Косм написали простенький дизассемблер и перевели все программы, написанные нами в кодах в текстовый формат. Теперь мы можем вносить в них изменения.

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