Светлый фон

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

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

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

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

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

В результате, к десятому дню от запуска программы репликации, когда компьютер построил уже около семидесяти слоёв CPU, я доделал наконец функции управления памятью и реализовал простейшую базу данных: ключ-значение. Ключ — это имя файла или каталога, а значение — это его содержимое. Если в записи хранится каталог, то содержимое это такая же база данных.

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

В ходе всех этих работ, а так же наших с ним занятий, у Косма наконец получилось использовать два сознания и он начал помогать нам с Этерой более активно.

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