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