タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

cとmmapに関するmogwaingのブックマーク (3)

  • mmap の話 - IT戦記

    今のところの理解 int fd; char * addr; fd = open("/Users/amachang/hoge", O_RDONLY); addr = mmap(0, size, PROT_READ|PROT_WRITE, MAP_FILE|MAP_PRIVATE, fd, 0); close(fd); こんな感じでやると、 hoge っていうファイルと addr から始まるメモリがちょうどスワップファイルとページの関係になる。 つまり、実際はファイルとメモリの番地は関連付けられただけで、アクセスするとページフォルト割り込みが発生してその都度読みにいく。 他のプロセスが既にこのファイルを mmap してたら同じ物理アドレスを指す仮想アドレスが帰ってくる。(仮想アドレスは違うけど、物理アドレスは同じ) MAP_PRIVATE が指定されている場合、プロセスがメモリの内容を変更する

    mmap の話 - IT戦記
  • C言語: UNIX最速ファイルコピー

    Created: Kazuki Ohta, 2006/06/14 Last Update: Kazuki Ohta, 2006/06/14 「write(2)の正しい使い方」と同じく、OS演習でやった事の延長線の記事を書いてみる。お題は「UNIX上で大規模ファイルを最速でコピーする方法」だ。一般的に、UNIXでファイルをcopyする際には以下のような方法が有る。 read -> write read -> write with posix_fadvice mmap -> mmap -> memcpy -> fsync mmap -> mmap -> memcpy -> fsync with madvise mmap -> write mmap -> write with madvise read, write, mmap辺りは良いとして、posix_fadviseというシステムコールが有

    mogwaing
    mogwaing 2007/07/30
    ファイルコピーの色々な方法
  • IPC: Memory Mapped File | Shinta's Site

    プロセス間で共有される情報を、ファイルを利用して読み書きする。 SYNOPSIS #include <sys/mman.h> void *mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off); int msync(void *addr, size_t len, int flags); int munmap(void *addr, size_t len); DESCRIPTION 複数のプロセスが、ひとつのファイルを同時にアクセス(読み書き)することがあります。その際に、fseek()関数を利用してファイルを操作するのはとても面倒です。もし、メモリにファイルの内容をマッピングすることができ、それへのポインタを得ることができたならファイルの操作は非常に楽なものになります。それを実現するのがメモリマップド

  • 1