/dev/shm とは一つのプロセスに限定されず、複数のメモリーで共有して使えるメモリーを特殊ディレクトリーとして実装したものです。
$ df -Th Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 3.8G 0 3.8G 0% /dev tmpfs tmpfs 769M 1.9M 767M 1% /run /dev/sda1 ext4 1.4T 52G 1.3T 4% / tmpfs tmpfs 3.8G 94M 3.7G 3% /dev/shm tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
tmpfs は /dev/shm にマウントされてますね。
まあこのマウントというのは物理パーティションをソフトウェア上のディレクトリーにのっけるという意味と考えてもらって良いです。
$ echo "hello" > /dev/shm/test_hello $ cat /dev/shm/test_hello hello
それでこの /dev/shm を mmap に使える時があります。
mmap を単なるメモリーとして使いファイルとのデータ同期が不要なのであれば、ファイルを開く際に shm_open 関数を使うことで用途を限定できます。
Copyright 2018-2019, by Masaki Komatsu