ユーザレベルでメモリマップ,デマンドぺージングやりたいという話し
ユーザレベルで自作memory mapped fileできないかな...特定のアドレス空間をlibcとかに使われないように予約して,無効なメモリ領域にアクセスされたらキャッチし,そのアドレスへファイル等をマップしてあげる とか
2011-01-18 18:49:31@ucq ですよね,実装したい! アクセス違反って,読み込みのパーミッションも設定できましたっけ? そしたらアドレス空間予約と,例外キャッチだけか(マルチプラットフォーム対応で実装したい的な)
2011-01-18 18:55:59@suma90h たぶんできるよん。Windowsでは試した覚えがあります。マルチな環境だとmprotectとsignal(SIGSEGV)でできそう。 [カリピスト]
2011-01-18 19:05:35@ucq ふむふむ.あと,既に使われているメモリ(ヒープ)を,別アドレスにマップさせてやりたい(バイナリエディタのドキュメントの内部構造からフラットなアドレスへマップしたい,とな
2011-01-18 19:16:14@suma90h LLVM IR にして、ロード、ストア命令にフックを書けるパス書いたりとかいかがでしょう?アドレススペース拡張を使えば、特定ポインタだけに作用させるとかできます。 > ユーザーレベル mmap.
2011-01-18 21:38:20@suma90h そういうのあったらとても欲しい>ユーザレベル memory mapped file できればもっと汎用的に、アクセスされたら関数が呼ばれるとか!
2011-01-18 21:40:37LLVM IRレベルでインタフェースを隠蔽したままふるまいを変えるというような大胆(半ば力業)な手法は最近考えてなかった,やりたい...
2011-01-18 21:42:38@suma90h 昔、このやり方で 256KB しかメモリが無いプロセッサに、SW キャッシュ(ページフォルトしたら DMA で外部メモリから取得)を実装してみました。
2011-01-18 21:46:04@suma90h ネットワークの向こうのデータをメモリのように見せるとか! うまくいけば色々とゼロコピーにできるハズで。
2011-01-18 21:51:29@frsyuki @suma90h 最新の linux RDMA ドライバを駆使すれば、高速なのが出来そうなところまでは分かっているのですが、まだ試せていません。
2011-01-18 21:59:07