【问题标题】:Downloading data directly to volatile memory将数据直接下载到易失性存储器
【发布时间】:2017-06-24 11:46:23
【问题描述】:

当您从 Internet 下载文件时,无论是 FTP 请求、点对点连接还是分机。总是会出现一个窗口提示您将文件存储在 HDD 或 SSD 上的哪个位置,也许您的房子里有一个小 NAS 机箱.. 无论哪种方式,此信息都存储在物理驱动器中,而信息不是被认为是易变的。它以数字或磁性方式存储,即使在系统重新启动后也随时可供您使用。

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

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

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

感谢您的帮助。我觉得这一定是可能的,但是,我想不出任何时候遇到这个,谷歌似乎不明白我在问什么。

编辑:这是从新手程序员的角度提出的;正在研究创建这样的东西的人。我似乎夸大了我自己的问题。我想我的意思是这样问:

诸如 RAMDisk 之类的软件是如何编程的,它究竟是如何工作的,而 C# 和 Java 等高度抽象的语言无法实现这样的功能?

【问题讨论】:

    标签: networking ram


    【解决方案1】:

    如果我正确理解您的要求,这实际上并不难。你要找的是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 操作系统。其他操作系统可能也有类似的解决方案。


    参考资料:

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

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

    【讨论】:

    • 嗯.. 似乎我自己甚至不完全理解我想问的问题,直到意识到您描述的是 RAMDisk 之类的东西.. 请查看我的编辑以获取正确的改写。跨度>
    • @CorderroArtz 是的,RAMDisk 至少在精神上与tmpfs 相同,你可以说tmpfsRAM Drive 的一种类型。至于您的编辑,通常在操作系统级别实现诸如新文件系统类型之类的东西,或者使用操作系统专门用于扩展此类功能的用户空间 API。只要您的语言允许您访问这些操作系统 API,您使用哪种语言来实现并不重要。
    猜你喜欢
    • 2014-09-26
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2021-08-13
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    相关资源
    最近更新 更多