« MacBookPro続き | トップへ戻る | shm_open + mmap »
2007年01月23日
mmapわかる方、教えてください。
mmapでプロセス間メモリ共有を書こうかと思うんですが、サイズの制限ってどこを見ればいいんですか?
man見ても良くわかりません。
何がしたいのかというと、でかい共有メモリを使いたい。
shm(いわゆる共有メモリ)は/proc/sys/kernel/shmmax にバイト数が書かれている。
fc6のデフォルトshmmaxは33554432。およそ32MB。float1つが4byteなので、長さ8388608個の配列を扱えるが、2048*2048の配列を2つ置いたら埋まるわけで、でかめの数値計算をするには足りない。
shmmaxファイルを書き換えればでかい共有メモリを扱えるんだが、rootで書き換えないといけないので、ちょっとうれしくない。
というわけで、mmapが一般ユーザ権限ででかい共有メモリを作る手段になってくれればありがたいんだけど、どうなんだろう?
(shmmaxが最大バイト数とか読めるのに対して、shmallが最大ページ数に見えるんだけど、これは何のことだろう。shmmaxを何個も作れるなら私の実験プログラムはエラーしなかったわけだしなぁ?)
以上。
情報求む。
投稿者 togabito : 2007年01月23日 02:39
Trackback Pings
このエントリーのトラックバックURL:
http://aaa.jspeed.jp/~togabito/cgi-bin/mt/mt-tbx.cgi/718