mmap
メモリマップトファイル
。
Linux
の
システムコール
の一つで
仮想メモリ
上の空間に
ファイル
やゼロフィルされた領域を割り振ってくれる便利機能
プログラム
からは完全に
メモリ
上にロードされたバイト列に見える
アクセスすると裏でカーネルがいい感じに読んだり書いたりしてくれる
MMU
のページフォールト機能を使って
カーネル
に処理を移譲してるらしい
体感ではreadやwrite呼ぶより速い
GCや独自のオブジェクト管理機構との相性が悪いせいか高級言語だと直接使われているのをあまりみない
環境ポータビリティもないので仕方ないね
ゼロフィル領域の割り振りは実質的にメモリの確保なのでmallocで内部的に使われていたりする
ファイルを指定しないとこれになる
巨大な領域を確保したらほぼ直接使われていたはず