Я новичок в программировании, и у меня есть программист, разделяющий память на моем beaglebone black, который работает на Linux.
Я должен удостовериться, что память сохранена на оперативной памяти черных Beaglebone, а не на вспышке.
Путь к файлу:
#define FILEPATH "/tmp/mmapped.bin"
fd = open(FILEPATH, O_RDWR | O_CREAT | O_TRUNC, (mode_t)0600);
if (fd == -1) {
perror("Error opening file for writing");
exit(EXIT_FAILURE);
}
кодируется в C ++
Пожалуйста, дайте мне знать, если возникнут какие-либо вопросы.
Путь к файлу /tmp/whatever
не гарантирует ничего. Что вам нужно сделать, так это войти в свой Beaglebone и посмотреть, где и где смонтированы файловые системы.
Для того, чтобы хранить файлы в оперативной памяти, вы должны хранить их на tmpfs
или же ramfs
файловая система.
На моем ноутбуке Fedora Linux, если я наберу mount
или же cat /proc/mounts
Я вижу все, что установлено. Вот те линии, которые вы ищете:
$ grep tmpfs /proc/mounts
tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev 0 0
tmpfs /run tmpfs rw,seclabel,nosuid,nodev,mode=755 0 0
tmpfs /sys/fs/cgroup tmpfs ro,seclabel,nosuid,nodev,noexec,mode=755 0 0
tmpfs /tmp tmpfs rw,seclabel,nosuid,nodev 0 0
Так что вы можете увидеть, что на Fedora в любом случае, /tmp/
каталог является tmpfs
и файлы в /tmp/
будет в оперативной памяти.
Одна вещь, чтобы смотреть с tmpfs
является то, что по умолчанию максимальный размер составляет половину оперативной памяти. Если файл в tmpfs, плюс программы, использующие ОЗУ, превышает размер ОЗУ, tmpfs
данные пойдут в своп, который будет на Flash, если у Beaglebone есть своп, который я сейчас не помню.
Если нет свопа или он маленький, то использование tmpfs для больших файлов вызовет OOM (нехватка памяти) и сломает много вещей, поэтому будьте осторожны, сколько вы используете.
Других решений пока нет …