タグ

mmapに関するuokadaのブックマーク (6)

  • Are You Sure You Want to Use MMAP in Your Database Management System?

    Are You Sure You Want to Use MMAP in Your Database Management System? Andrew Crotty Carnegie Mellon University andrewcr@cs.cmu.edu Viktor Leis University of Erlangen-Nuremberg viktor.leis@fau.de Andrew Pavlo Carnegie Mellon University pavlo@cs.cmu.edu ABSTRACT Memory-mapped (mmap) file I/O is an OS-provided feature that maps the contents of a file on secondary storage into a program’s address spac

  • tailコマンドの実装を見る。 - Shohei Yoshida's Diary

    tailって真面目に作るとどうなるんだろうということが気になったので、 ソースコードを読んでみます。ソースは NetBSD 5.0.2です。 場所は usr/src/usr.bin/tailになります。tail -fとかは考えずに 普通にファイルの終わり n行を表示する場合についてのみ考えます。 実装を見ていきます。NetBSDのユーザランドがビルドできる環境で 見るといいかと思います。Macだとビルドできました。bsdmakeを使って ください。FreeBSDでは警告でエラーとなるので(Werrorのせい) makeを使わず gccでファイルを指定してコンパイルすればいいかと思います。 Ubuntuではそのままではビルドできません。 まずは main関数からということで、tail.cです。 はじめはオプション解析なので全部無視。ついでオプションにより 立ったフラグに関する処理ですが、そん

    tailコマンドの実装を見る。 - Shohei Yoshida's Diary
  • コンピューター:C言語講座:mmapについて

    コンピューター:C言語講座:mmapについて 概要 mmapはファイルをメモリにマッピングするものです。わかりやすく言うと、UNIXのOSが行なっているページングやスワッピングを自プロセスで行なうようなものです。 これを使うメリットとしては、メモリ確保サイズが確保開始時に決定できない場合、簡単にはmalloc()で適当な量を確保し、足りなければrealloc()を使用して拡大することになりますが、realloc()を繰り返すとメモリ領域中に空きが出来やすく、大規模なシステムでは実際使用しているメモリより空き空間の方が数倍大きくなってしまい、メモリ不足で実行不可能になる場合があります。mmapを使用すれば、別々に拡大していくような管理が可能なので、また、スワップスペースとは別の位置に置くことにより、多数の動的メモリを必要とする場合に安全に動作することが可能になる場合があります。ただし、基

  • mmap (メモリマップトファイル) : kei@sodan

    Linux/Unixのメモリ周りで大活躍のシステムコール、mmapの解説です。 スライド(pdf), (pptx), (ppt) 上記スライド及びこのページの内容の大部分は、(僕が受けた) 田浦先生 の授業オペレーティングシステムの6回目のスライドと同じです。 あと、malloc中のmmap()まわりを調べてくれてありがとう>研究室のkennyくん ファイルとメモリ mmap()のAPI・使い方 (mallocの中身の話題) mmap()の実装

  • mmapの実装 : kei@sodan

    mmapの基的な動作はファイルをメモリにマップすることですが、mmap()を実行したときにいきなりファイルがメモリにコピーされるわけではありません。 mmap()を実行するとアドレスが返されますが、このときこのメモリ番地は物理メモリ上に乗っていません。 だから、この番地をアクセスするとページフォルトが発生します。このページフォルトを受けて、はじめてデータがファイル(ディスク)から物理メモリにコピーされます。(なお、もし元々このファイルがファイルキャッシュに乗っている場合は、このファイルキッシュのアドレスがそのまま返されます) mmapされた領域に書き込まれたデータは、適宜ディスクに書き戻されます。 なお、ファイルの一部だけがアクセスされたら、その一部だけをメモリに乗せればよいです。また、物理メモリが足りなくなったら、あまりアクセスされていないページはページアウトさせます。 この「ページフ

  • Posix共有メモリ - s-kita’s blog

    Posix.1では、無関係なプロセス間でのメモリ共有を行う方法を2種類提供している。 1.メモリマップファイル(memory-mapped files): ファイルをopenし、結果のファイルディスクリプタをmmapでプロセスのアドレス空間にマップする 共有メモリオブジェクト(shared memory objects): shm_openでIPC名をオープンし、返されたディスクリプタをmmapでプロセスのアドレス空間にマップする shm_open関数、shm_unlink関数Posix共有メモリの使用には、2ステップの処理が必要。 1.名前引数を与えてshm_openを呼び出す 2.mmapを呼び出し、共有メモリを呼び出したプロセスのアドレス空間にマップする shm_openで用いた名前引数は、このメモリを他のプロセスから共有する場合に用いる名前になる。 #include <sys/mm

    Posix共有メモリ - s-kita’s blog
    uokada
    uokada 2009/06/22
  • 1