当您从互联网上下载文件时,无论是FTP请求,对等连接,分机。你总是会被提示一个窗口,询问你的硬盘或固态硬盘上的文件存储位置,也许你的家里有一个小的NAS外壳。无论你怎么说这个信息都存储在一个物理驱动器上,而且信息不是被认为是不稳它以数字或磁性方式存储,即使在重新启动系统后也可随时使用。
是否可能软件被编程为直接下载并将信息存储到RAM中的指定位置而不会触及非易失性存储器的形式?
如果不可能,请详细说明原因?
否则,如果可以,如果你可以给我一些实现这个的软件的例子,或者这可能是产生预期结果的唯一解决方案?
感谢您的帮助。我觉得这一定是可能的,但是,我无法想到任何时候我遇到过这个并且google似乎并没有理解我在问什么。
编辑:这是从新手程序员的角度提出的;正在考虑创造这样的东西的人。我似乎过度膨胀了自己的问题。我想我的意思是如下:
如何对RAMDisk等软件进行编程,它是如何工作的,以及C#和Java等大量抽象语言无法实现这样的功能?
答案 0 :(得分:0)
如果我理解你的要求,这实际上并不难。您正在寻找的是tmpfs
[1]。
默认为我们创建一个tmpfs
分区(如果/ tmp不是tmpfs
),请将其安装在某个位置,例如/volative
。
然后,您可以简单地配置您的浏览器或任何应用程序,以便将所有文件下载到文件夹/目录。由于tmpfs
基本上是作为文件夹安装的,因此重启后会重置。
编辑:OP询问如何实施tmpfs
和相关的基于ram的文件系统。这通常是特定于操作系统的,但一般的想法可能保持不变:驱动程序负责ram文件系统mmap()
所需的内存量,然后以文件系统API典型的方式公开该内存您的操作系统(例如linux / solaris / bsd上的POSIX-y操作)可以访问它。
这里是paper describing the implemention of tmpfs on solaris [2]
进一步说明:如果您尝试简单地下载某些内容,请使用它并将其删除,而不必以完全针对您的应用程序的内部方式访问磁盘,然后您可以根据您下载的内容的大小动态分配内存,将字节写入分配的内存,并在使用它后free()
。
这个答案假定您使用的是Linux-y操作系统。其他操作系统可能有类似的解决方案。
参考文献: