Если Вы видели это в более старой системе, возможности, что она выполняла xscreensaver. Вы видите его стандартный набор; существует тот лабиринта, который похож на то, что Вы описываете.
Обратите внимание, что людям было свойственно установить их собственные экранные заставки декоративному обращению. Таким образом, это, возможно, было чем-то добавленным локально, возможно, даже что-то кодированное локально. Однако вероятно, что они использовали бы подобные алгоритмы.
Потребовалось немного времени, но я думал, что удержу отвечать, пока у меня не было ответов на все 3 из моих дополнительных вопросов.
Прежде чем я запущу, хотя, я упомяну, что правильный термин когда дело доходит до "дефрагментации" оперативной памяти отнесен в "уплотнение" оперативной памяти.
Я был корректен в своем заключении - комната не выполнилась, потому что была недостаточная непрерывная RAM. Система получала RAM и фрагментировала ее, таким образом делая ее неисправимой.
Повороты там не являются никаким способом уплотнить память, за исключением перезапуска встроенной системы. В случае MMU-меньшего-количества системы предотвращение является названием игры.
Часть меня обдумывает если его возможное для взламывания ядра Linux для эмуляции MMU в программном обеспечении. Я фигурирую, было ли это возможно, кто-то уже сделал бы это. Я не могу вообразить совершенно новым понятием ;)
Для этого проекта я использовал крон для ручного инициирования программы каждый раз, когда это требовалось. Намного лучший способ сделать это должно назвать программу на запуске и затем вынудить программу спать, пока это не требуется. Таким образом, память не должна быть выделена на каждом использовании. Таким образом сокращение фрагментации.
На первом повторении проекта мы полагались на мои вызовы сценария оболочки для выполнения критических функций (таких как комната). Мы не видели потребность в изобретении велосипед, если мы не должны были.
Однако я рекомендовал бы избежать оболочки, если это возможно, для MMU-меньшего-количества системы -
(Вопрос, что происходит, если Вы выполняетесь ls -la /path/to/directory/ | grep file-i-seek
?)
(Ответ: это запускает новый подпроцесс),
Если необходимо реализовать часть базовой функциональности сценария оболочки в программе C, я рекомендую проверить исходный код, используемый в BusyBox. Возможности, Вы будете использовать C в своей встроенной системе..
По вашему вопросу 2 (дефрагментация памяти), цитата из https://www.kernel.org/doc/Documentation/sysctl/vm.txt :
compact_memory
Доступно, только если установлено CONFIG_COMPACTION. Когда в файл записывается 1, все зоны уплотнены так, что свободная память доступна в смежных блоки, где это возможно. Это может быть важно, например, при распределении огромные страницы, хотя процессы также будут напрямую сжимать память по мере необходимости.
это означает, что следующая команда (выполняемая с привилегиями root и если была включена опция ядра, упомянутая выше)
echo 1 > /proc/sys/vm/compact_memory
должна указывать ядру, что нужно попытаться максимально дефрагментировать память. Остерегайтесь, например, в некоторых версиях RHEL6 это может привести к сбою ядра ...