web-dev-qa-db-ja.com

LinuxRAMDISKの割り当てを解除するにはどうすればよいですか。 / dev / ram0?

ブロックデバイス/dev/ram0のように、LinuxRAMDISKで遊んでいます。これらのデバイスの1つに最初に書き込みを開始したときに、いくつかのRAMが割り当てられていることを理解しています。

たとえば、/dev/ram0によって使用されているメモリを解放するにはどうすればよいですか?別の言い方をすれば、Linuxカーネルに完了したことを示すにはどうすればよいですか。また、/dev/ram0が保持しているリソースを再利用できますか?

6
RobM

Ramdiskを次の行に沿ってフォーマットしない限り

mke2fs -m 0 /dev/ram0

Ramdisk自体は実際にはメモリスペースを占有しません。

ただし、RAMディスクをフォーマットしてマウントする場合、私が覚えている唯一の方法は freeramdisk を使用することですが、それはずっと前のことです。

あなたがチェックしたいと思うかもしれない他のいくつかのリソース:

http://e2enetworks.com/2008/10/25/linux-in-memory-filesystems-tmpfs-vs-ramdisk/

http://www.vanemery.com/Linux/Ramdisk/ramdisk.html

http://www.linuxdoc.org/HOWTO/BootPrompt-HOWTO-3.html

2
Mike Keller

/ dev/ram0およびその他は、brd linuxカーネルモジュールによって実装されます。ソース- http://elixir.free-electrons.com/linux/latest/source/drivers/block/brd.c 、ドキュメントof modprobe brdhttps://www.novell.com/support/kb/doc.php?id=7012396

rmmod brdを使用してモジュールをアンロード(rmmod)してみてください。これは、brd_del_one関数を呼び出してramdiskを削除する唯一の方法です。

Freeramはloadlinパッケージの一部です https://launchpad.net/ubuntu/+source/loadlin/1.6f-5 読み取り/書き込み用のオープニングデバイスとして実装され、BLKFLSBUFioctlを実行します

  char rname[256]="/dev/ram";
  char b[256];
  int f;
  f=open(rname,O_RDWR))
  ioctl(f,BLKFLSBUF);

これは https://elixir.free-electrons.com/linux/latest/source/include/uapi/linux/fs.h で定義されています。

   #define BLKFLSBUF  _IO(0x12,97)  /* flush buffer cache */
1
osgx