Во встроенном Linux память драгоценна.В моем случае у меня есть исполняемый файл на ram-диске tmpfs.Фактически, ram-диск содержит только один исполняемый файл.
Я хочу запустить исполняемый файл только один раз.Этот исполняемый файл выполняется очень долго.Когда он работает, я хочу размонтировать RAM-диск, чтобы освободить память.Таким образом я удалил исполняемый файл, а затем размонтировал ram-диск.Оно только что показало сообщение об ошибке «занято устройство»: не удалось выполнить umount.
Как мне этого добиться?Я не говорю о ленивое число .Я хочу по-настоящему размонтировать, чтобы освободить память!Это должно быть возможно, поскольку запущенный процесс уже загрузил свой образ в ОЗУ.Он не должен полагаться на файловую систему ram-disk.
Если это пока невозможно для обычного ядра Linux, я приветствую ответы, указывающие мне, где я могу взломать ядро, чтобы включить эту функцию.
Если возможно, ответы программным способом являются предпочтительными.Хотя ответы в виде сценария также приветствуются (в любом случае я могу преобразовать сценарии в некоторый исполняемый файл, посмотрев на исходный код сценария оболочки).
Моя версия ядра - 3.10.14
- Обновление - Еще одна мысль: моя цель - освободить часть памяти, так как мое приложение перегружает память.Кроме того, размер двоичного файла велик по сравнению с общим объемом оперативной памяти.Моя оригинальная мысль состоит в том, что у ramdisk есть копия файла, а рабочий образ - еще одна копия.Но может быть, в Linux хранится всего одна копия, а не две?Кто-нибудь знает, как исполняемые файлы elf хранятся как в файловой системе, так и в рабочем образе?В Linux хранится только одна копия или, возможно, некоторые метаданные + 1 копия, а не две копии?Если это правда, мне не нужно делать размонтирование.