Инженер 2.1 (СИ) - Нерский Эд
Шрифт:
Интервал:
Закладка:
Но, конечно, самое непонятное в произошедшем — появившаяся у Орион-128 аура. Кроме этого нет никаких отличий того что мы делали от того, что мы сделали. Хотя нет, второе отличие — постоянно работающие ядра. Общее количество ядер, на которых исполняется какой-то непонятный код в целом небольшое. В периоды, которые можно назвать спокойствием, это количество может падать до двух десятков, но иногда, от чего это зависит непонятно, количество задействованных ядер измеряется миллиардами.
Попытки воздействовать на эту активность почему-то проваливаются и, при этом, влияют на цвет ауры этого существа. Выглядит это так: я останавливаю используемое ядро CPU, даже могу удалить всю программу (посмотрев, куда указывает регистр адреса), которую выполняет это CPU. В результате такого воздействия аура краснеет, затем эти неведомые программы как-то реагируют, количество задействованных ядер увеличивается, а спустя некоторый срок времени всё стабилизируется в старое состояние.
Разбираясь с этим, я придумал каким образом можно убить эту активность: нужно написать программу, забирающую на себя огромное количество ядер, а потом по определённому сигналу, все эти ядра “набросятся” на потоки исполнения этого существа и остановят их.
Однако, поскольку наличие ауры намекает, что это существо живое, то, хоть у меня и нет никаких предположений о том, что это или кто это, но я подумал-подумал и решил постараться оставить его живым.
Что это за существо? Этакий аналог Больцмановского мозга, который самозародился в моём компьютере? С этим объяснением можно бы было согласиться (конечно с кучей допущений), если бы каждый новый CPU создавался бы сразу включённым в работу и если бы каждая создаваемая ячейка памяти имела бы случайное значение. Но при построении компьютера это всё было не так: память создавалась заполненная нулями, процессоры запускались только моей программой.
С другой стороны, для Больцмановского мозга 2 в 128 степени ячеек и даже такое количество опытов — это, вероятно, слишком мало. И главное: все странности начались тогда, когда размер моего компьютера был в миллиарды раз меньше этого значения.
Что-то произошло и вместо коллапса, случилась ускоренная достройка компьютера до конца. В какой-то момент энергии этому процессу катастрофически не хватало, а затем она откуда-то взялась. Откуда?
Получить ответ на этот вопрос крайне интересно: раньше я думал, что из Сути я смогу набрать энергии и, таким образом, спасти планету, в случае если иные способы не дадут результатов. Но теперь снова нужно искать откуда можно взять огромное количество энергии.
Может быть под Сутью есть ещё какой-то слой и энергия поступила оттуда? Но как это узнать? Здесь нужны мозги не какого-то среднего инженеришки вроде меня, а учёного с солидным математическим аппаратом. Эх.
В общем, решив оставить это загадочное существо жить в нашем компьютере до тех пор, пока оно не станет ему мешать, мы посчитали необходимым дать ему имя.
Сперва выбрали незамысловатое — Компик (или Комп, если вырастет), но потом решили, что Космик и Компик — чересчур созвучно и я стал вспоминать названия первых компьютеров. Ничего в голову не приходило, а потом я вспомнил, что в какой-то старой компьютерной игре был такой персонаж — живой компьютер, которого звали Вектрон. В общем, мы решили, что Компик будет носить имя Вектрон.
Поскольку у меня сходу накопился список доработок, нужных для будущей операционной системы, я решил заняться ими, а заодно понять: помешает ли Вектрон дорабатывать аппаратуру Орион-128 или нет. Поэтому, для начала я добавил регистр-метку в каждый процессор и запустил программу, распространяющую эту модернизацию по всему Орион-128.
Смысл этого регистра только в том, что его значение наследуется тогда, когда CPU запускает какую-то работу на другом CPU. Когда процессор прекращает работу, то значение метки устанавливается в нулевое.
Поскольку все программы, которые запускал на компьютере я, мне известны, то расставить им метки оказалось несложно, а затем, я написал программу, которая отмаркировала все процессы Вектрона. Таким образом, взглянув на метку у любого CPU, я всегда могу понять это моё или Вектрона.
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})Добавление системы разметки процессоров прошло успешно, Вектрон не проявлял к этому никакой агрессивности, и заняло около часа процессорного времени Орион-128.
После того, как все процессы были отмаркированы, я запретил возможность изменять содержимое этих меток программно.
Интересно, что Вектрон не мешает (пока не мешает) моей программе, занимающейся аллокацией памяти. Однако скорее всего это связано с низкой вероятностью коллизий — в будущем всё не только может, но и обязано поменяться. Я задумался над вопросом: как можно его заставить использовать память так, чтобы он не мешал мне, а я не мешал ему. У меня уже есть идеи, как это решить, но прежде я решил доделать более важные дела.
Итак, у меня уже имелись: возможность сохранять файлы и возможность показывать их содержимое живому существу (то есть мне, Эт, Косму). Пока Этера и Космик доделывали систему печати символов, с целью довести до ума терминал, я занялся написанием парсера для создания первого компилятора: из ассемблера в коды.
Поскольку ещё на стадии проектирования процессора я сделал команды относительного перехода управления, то все программы, что мы пишем легко перемещаемы по адресному пространству.
Ввиду аппаратных особенностей, компилятор языка ассемблер получился сравнительно несложным: ему нужно просто пройти по тексту программы сверху вниз и преобразовать этот текст в коды, а затем во втором проходе — проставить адреса меток, ссылающихся вперёд.
Сделав минимальную версию такого компилятора, я вручную создал файл с текстом этого компилятора с тем, чтобы компилировать его этим же компилятором. К тому моменту, как я к этому пришёл, Этера и Косм доделали какое-то подобие редактора файлов и наша разработка вышла на новый уровень.
— Гляди, что происходит! — однажды отвлекла меня от работы Этера, направляя моё внимание на то место, которое некогда было нашим пляжем.
Поверхность снежного кома светилась, на нём образовалась этакая канавка, которая, очевидно, была горячей. Лёд плавился и жидкость уходила в море, проходя через нечто, похожее на магическое сито. Было понятно, что этот процесс — дело рук магов, которые что-то там затеяли.
Я поводил объективом телескопа из стороны в сторону и совершенно не удивился, наткнувшись на эльфов, которые были виновниками происходящего.
— Мюллер! И кто это с ним? Всё тот же эльф.
Мюллер и второй эльф вдвоём держали какое-то плетение, медленно, но верно расплавляющее ледяной шар, разрезающее его пополам.
— Интересно, а что они хотят найти? — спросила Эт.
— Думаю, они и сами не знают. — предположил я. — Попробуй аккуратненько понаблюдать за ними астрально.
— Не выходит. У них очень мощные артефакты прикрытия. Такие применялись эльфами только во время войны.
— А Инроргн говорил, что при прямой видимости очень сложно прикрываться. Ладно, давай посмотрим хотя бы на их артефакты. — ответил я, отправляя исследовательский конструкт.
В общем, эльфы вели раскопки в леднике, оставленном нами, мы же вели наблюдение за ними. Исследуя эльфов, мы сделали несколько крайне интересных открытий:
Во-первых: и Мюллер и его сообщник теперь являются магами очень высокого уровня. Характеристическое число Мюллера — около двухсот пятидесяти, а его товарища — около двухсот двадцати.
Подробнее изучив ауру второго эльфа, я понял, что он мне знаком ещё с Земли, поэтому поразмыслив, я пришёл к тому, что его тоже как-то необходимо называть и решил звать его Холтоффом.
Во-вторых: Почему-то моё проклятие в ауре Мюллера сдохло, хотя лечащий конструкт был на месте. Это обстоятельство заставило меня задуматься: а нет ли нового вида элементаля, появившегося из моего проклятия? На эту мысль меня буквально наталкивал Драко, ставший элементалем, когда моя аура радикально перестроилась в другую структуру. Ауры Мюллера и Холтоффа тоже испытали значительные воздействия, поэтому, может быть моё проклятие находится где-то рядом с элементалями?