gpt4 book ai didi

c++ - 有没有一种方法可以将数据直接编码到硬盘驱动器(类似于使用 RAM 的方式)?

转载 作者:行者123 更新时间:2023-12-04 02:32:41 25 4
gpt4 key购买 nike

我的问题涉及 C/C++。可以非常灵活地操作 RAM 上的数据。您还可以使用 OpenGL 向 GPU 发出直接命令,从而也允许操作 VRAM。

我的好奇心是是否可以对硬盘驱动器执行此操作(尽管这可能是一个可怕的想法,因为有很多很多可能会破坏现有数据)。我的问题的逻辑来自于一个假设,即硬盘驱动器类似于 RAM 和 VRAM(数据字节),但只是访问数据速度较慢。

我不是在问如何执行文件 IO,而是如何直接修改硬盘上的内存字节(可能通过某种“硬盘指针”)。

如果我的假设完全错误,那么详细更正硬盘驱动器的数据存储与 RAM 或 VRAM 的不同之处将非常有帮助。谢谢!

最佳答案

现代操作系统与现代 CPU 相结合,提供了将磁盘簇内存映射到内存页面的能力。

内存页面最初被标记为无效,一旦您尝试访问它们,就会出现无效页面“陷阱”或“中断”,由操作系统处理,将相应的簇加载到该内存页面.

如果你写入那个页面,要么有一个硬件支持的“脏”位,要么有另一个中断机制:内存页面最初被标记为只读,所以当你第一次尝试写入它时,会有另一个中断机制中断,它只是将页面标记为脏页并将其变为可读写。然后,您知道该页面需要在方便的时候刷新到磁盘。

请注意,读取和写入通常是通过直接内存访问 (DMA) 完成的,因此在传输页面时 CPU 可以自由地做其他事情。

所以,是的,您可以借助操作系统或自己编写所有非常复杂的代码来做到这一点。

关于c++ - 有没有一种方法可以将数据直接编码到硬盘驱动器(类似于使用 RAM 的方式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60146564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com