保留硬盘中数据的物理地址

Posted

技术标签:

【中文标题】保留硬盘中数据的物理地址【英文标题】:Keeping the physical address of the data which is in hard drive 【发布时间】:2014-02-20 21:05:17 【问题描述】:

是否可以将放置在硬盘或固态磁盘中的数据地址保存在 RAM 中的容器中?

对于我的应用程序(C++/visual studio 2008),我将在 SSD 驱动器上创建一个存储库(目录),在该存储库中将有数千个(比如说 100000 个文件,每个文件大小为 3 MB)二进制文件(文件名是唯一ID)

某些应用程序必须对带有名称(Id's)的 tihs 目录执行搜索操作。

所以我想,如果我在 RAM 中创建一个类似地图的容器,并将键列 ID(文件名)和值设置为文件的物理地址(在 SSD 中),然后让应用程序在此映射中(在 RAM 中)执行搜索,如果找到数据,用地址检索数据(因为我们有物理地址)不会更快吗?

那么有可能做这样的事情吗?

【问题讨论】:

在硬盘驱动器上(尤其是在用户空间程序中)没有“物理”地址,更不用说在块可以四处移动的现代 SSD 上。 为了能够在一个包含数千个文件的目录中执行搜索,我们必须一一查看所有项目名称?不能进行任何类型的索引或其他操作以使搜索更快? @JoachimPileborg:现代数据库确实可以,而且它们是相当普通的用户空间程序。 SSD的东西无关紧要,即使是HDD也可以进行块重映射。重要的是没有文件 system 正在重新映射地址。 【参考方案1】:

有几个简单的选择:使用数据库,或内存映射一堆文件。在后一种情况下,您必须意识到明显的内存操作实际上是磁盘 I/O,而且速度要慢得多。但是内存映射文件的结果仍然是一个相当普通的指向其内容的指针。这比您提议的“物理地址”还要容易。

【讨论】:

以上是关于保留硬盘中数据的物理地址的主要内容,如果未能解决你的问题,请参考以下文章

虚拟内存和物理内存(转)

LVM物理卷、卷组、逻辑卷管理

C# 获取本机CPU序列号,MAC地址,硬盘ID,本机IP地址,计算机名,物理内存,PC类型

逻辑地址和物理地址及线性地址

設置Linux保留物理內存並使用

内存保留和提交