将数据直接下载到易失性存储器

Downloading data directly to volatile memory

当您从 Internet 下载文件时,无论是 FTP 请求、对等连接还是分机。系统总是提示您 window 询问将文件存储在 HDD 或 SSD 上的什么位置,也许您家里有一个小的 NAS 机箱。无论您采用哪种方式,此信息都会存储到物理驱动器中,并且该信息不被认为是不稳定的。它以数字或磁性方式存储,即使在系统重新启动后也随时可供您使用。

是否可以可能 对软件进行编程以将信息直接下载并存储到 RAM 中的指定位置,而无需接触任何形式的非易失性存储器?

如果这不可能,您能否详细说明原因?

否则,如果可能的话,您是否可以给我提供实现此功能的软件示例,或者这可能是产生所需结果的唯一解决方案的场景?

感谢您的帮助。我觉得这一定是可能的,但是,我想不出我遇到过这种情况,而且 google 似乎不明白我在问什么。

edit: 这是从新手程序员的角度来问的;正在研究创造这样的东西的人。我似乎夸大了自己的问题。我想我想问的是:

How is software such as RAMDisk programmed, how exactly does it work, and are heavily abstract languages such as C# and Java incapable of implementing such a feature?

如果我正确理解您的要求,这其实并不难。您正在寻找的是 tmpfs[1].

创建一个 tmpfs 分区(如果默认情况下 /tmp 不是 tmpfs),将其安装在某个位置,比如 /volative.

然后您只需配置您的浏览器或任何应用程序即可将所有文件下载到 folder/directory。由于 tmpfs 本质上是作为文件夹安装在 ram 上的,因此它会在重启后重置。

Edit:OP 询问如何实现 tmpfs 和相关的基于 ram 的文件系统。这通常是特定于操作系统的,但总体思路可能保持不变:驱动程序负责 ram 文件系统 mmap() 所需的内存量,然后以文件系统 API 的典型方式公开该内存您的操作系统(例如 POSIX-y 在 linux/solaris/bsd 上的操作)可以访问它。

这是一个paper describing the implemention of tmpfs on solaris[2]

进一步说明:如果您只是想简单地下载一些东西,使用它并删除它,而不会以完全在您的应用程序内部的方式访问磁盘,那么您可以简单地根据您正在下载的任何内容的大小动态分配内存,将字节写入分配的内存,并在您使用完后 free() 它。


此答案假定您使用的是 Linux-y 操作系统。其他操作系统可能有类似的解决方案。


参考文献:

[1] https://en.wikipedia.org/wiki/Tmpfs

[2]http://www.solarisinternals.com/si/reading/tmpfs.pdf