You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

fdisk是否为分区分配独立地址空间?pmem盘与分区同偏移读写值不同原因

问题原因说明

你观察到的现象是块设备分区的正常寻址逻辑导致的,操作没有错误,fdisk创建的分区确实拥有独立的从0x00起始的地址空间,核心逻辑如下:

  1. 整块持久内存设备的寻址规则
    /dev/pmem1是对应整块物理pmem设备的设备节点,你对该节点调用mmap、read、write时传入的偏移量,是相对于整块设备物理起始地址的直接偏移。你向/dev/pmem1的0x00地址写入10,就是直接写入整块pmem设备的第一个存储单元。

  2. 分区设备的偏移自动映射规则
    /dev/pmem1p2是建立在pmem1上的逻辑分区,内核在处理该设备节点的IO请求时,会自动给用户传入的偏移量叠加「该分区在整块pmem1设备上的物理起始偏移」。举个例子:如果fdisk分配给pmem1p2的起始位置是整块pmem1的1.5G偏移处,那么你对pmem1p2的0x00地址写入20,实际写入的是整块pmem1的1.5G偏移位置,和pmem1的0x00地址完全是两个不同的物理存储单元,读写结果自然不同。

额外注意事项

你贴出的示例代码里打开的是/dev/pmem0,如果实际运行时没有对应修改为/dev/pmem1或/dev/pmem1p2的话会操作到错误的设备。另外操作/dev下的设备节点不需要加O_CREAT、O_TRUNC标记,这两个标记仅对普通文件生效,对设备节点没有意义还可能引发意外错误。

内容的提问来源于stack exchange,提问作者Dimpu10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:12:02