Потребовалось немного времени, но я думал, что удержу отвечать, пока у меня не было ответов на все 3 из моих дополнительных вопросов.
Прежде чем я запущу, хотя, я упомяну, что правильный термин когда дело доходит до "дефрагментации" оперативной памяти отнесен в "уплотнение" оперативной памяти.
Я был корректен в своем заключении - комната не выполнилась, потому что была недостаточная непрерывная RAM. Система получала RAM и фрагментировала ее, таким образом делая ее неисправимой.
Повороты там не являются никаким способом уплотнить память, за исключением перезапуска встроенной системы. В случае MMU-меньшего-количества системы предотвращение является названием игры.
Часть меня обдумывает если его возможное для взламывания ядра Linux для эмуляции MMU в программном обеспечении. Я фигурирую, было ли это возможно, кто-то уже сделал бы это. Я не могу вообразить совершенно новым понятием ;)
Для этого проекта я использовал крон для ручного инициирования программы каждый раз, когда это требовалось. Намного лучший способ сделать это должно назвать программу на запуске и затем вынудить программу спать, пока это не требуется. Таким образом, память не должна быть выделена на каждом использовании. Таким образом сокращение фрагментации.
На первом повторении проекта мы полагались на мои вызовы сценария оболочки для выполнения критических функций (таких как комната). Мы не видели потребность в изобретении велосипед, если мы не должны были.
Однако я рекомендовал бы избежать оболочки, если это возможно, для MMU-меньшего-количества системы -
(Вопрос, что происходит, если Вы выполняетесь ls -la /path/to/directory/ | grep file-i-seek
?)
(Ответ: это запускает новый подпроцесс),
Если необходимо реализовать часть базовой функциональности сценария оболочки в программе C, я рекомендую проверить исходный код, используемый в BusyBox. Возможности, Вы будете использовать C в своей встроенной системе..
Точка, отображаемая в выводе find
просто текущее местоположение, когда Вы указали его с find .
команда. То же также, когда Вы говорите find /home/me/a
. В обоих случаях находка показывает Вам каталог, который Вы ищете в (как указано) и любые соответствующие файлы и каталоги это find
находит в том месте.
каталог мы смотрим в, .
$ find . ....
.
./abc.txt
./a.txt
Найдите шоу результатами с точки зрения аргумента, который Вы указали, т.е. .
.
каталог мы смотрим в, /home/me/a
$ find /home/me/a ....
/home/me/a
/home/me/a/abc.txt
/home/me/a/a.txt
Снова find
показывает результаты с точки зрения аргумента, который Вы указали, /home/me/a
.
Попытайтесь не думать о них с точки зрения внутреннего или внешнего, думать о спецификации как относительной или абсолютной. Родственник .
и абсолютный /home/me/a
. В любом случае find
не заботится, это просто показывает каталоги и файлы, которые это находит от того местоположения вниз.
Используя относительный каталог ( find .
) приводит к ожидаемым результатам ./abc.txt
в то время как find /home/ma/a/abc.txt
является идентичным, но абсолютным. Вы не ожидали бы видеть .
при использовании полных путей.
Результаты идентичны в этом, Вы могли технически "найти и заменить" .
с /home/me/a
и наоборот.