第16章 /dev/shm ディレクトリー

/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