tmpfs on /dev/shm type tmpfs (rw)
Многие знают, что такое tmpfs, и даже используют эту файловую систему размещающую данные в памяти (например, монтируя ее в /tmp), но наверняка не многие знают зачем она смонтирована именно в /dev/shm? Что за странное место для временного хранилища?
Название /dev/shm наводит на мысль о механизме межпроцессного взаимодействия IPC shared memory. Но нетрудно убедиться, что для привычного System V IPC эта файловая система не требуется. Вызов shmget, например, не обращается к файловой системе, пространство имен поддерживается ядром. Так зачем /dev/shm? Оказывается, в glibc, кроме System V shared memory IPC есть реализация POSIX IPC. И вот эта реализация и использует /dev/shm. Убеждаемся в этом:
peter@crashed:/tmp$ vim test.c
#include
int main(int argc, char **argv)
{
shm_open("xxx", 0, 0);
}
peter@crashed:/tmp$ gcc test.c -lrt
peter@crashed:/tmp$ strace -e open ./a.out
...
open("/dev/shm/xxx", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = -1 ENOENT (No such file or directory)
6 комментариев:
почему нет ни одного коммента? отличный пост, спасибо!
**некрокомментер**
Спасибо! Коротко и ясно.
Зачем пустой #include? Если не нужен, то можно его вообще опустить. Без инклудинга компилит нормально.
PS: Считаю, что критика это хорошо - она помогает достичь совершенства :)
Ой, а у нас на /dev/shm 16 гиг свободно! Можно я туда бекапы положу?
//bash
2020-й инфа все еще полезна. Спасибо!
Спасибо!
хы, 2021
Отправить комментарий