Где мой объект общей памяти сохранен?

Я новичок в программировании, и у меня есть программист, разделяющий память на моем 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 ++

Пожалуйста, дайте мне знать, если возникнут какие-либо вопросы.

-1

Решение

Путь к файлу /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 (нехватка памяти) и сломает много вещей, поэтому будьте осторожны, сколько вы используете.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]