2016-11-21 25 views
0

mmapを使用して仮想RAMディスク内のメモリを予約するにはどうすればよいですか?仮想RAMディスク内のmmapを作成する

mkdir /mnt/ramdisk 
mount -t tmpfs -o size=10m tmpfs /mnt/ramdisk 

私は今では仮想RAMディスクを持っていますが、Cプログラム内でどのようにマップするのですか?

int main() { 
    // .... 
    addr = mmap(/* ramdisk address? */, size, PROT_READ_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); 
+0

RAMディスクを使用している場合は、 'mmap'を使用するだけでオーバーヘッドが呼び出されます。 'fopen'を使わないのはなぜですか? – Dai

+0

@Dai私はライブラリのメモリ領域を予約する方法としてmmapを使用していますが、mmapを提供する代わりにこのメモリをramdisk内に確保したい場合、どうすればこのようなことをやるのかはわかりません。アドレスヒントのための 'NULL 'の値 –

答えて

0

/mnt/ramdiskがtmpfsであるという事実は、使用方法には関係ありません。

ファイルをメモリマップする場合は、ファイルがopen()で、MAP_FILEMAP_ANONYMOUSではなく)というファイルを通常のファイルと同じようにマップします。住所を渡さないでください。適切なものが選択されます。

+0

しかし、私は直接メモリアクセスのためにそのRAMディスクを使うことができますか? '/ mnt/ramdisk'のようなディレクトリで単にopen()を呼び出すことはできません。 –

+1

いいえ、セマンティクスは単にtmpfsだから変更されません。他のファイルシステムとまったく同じように動作します。 – duskwuff

関連する問題