在阅读《Windows核心编程(第五版)》时,在内存管理章节的有关操作系统调拨物理存储器的一个论述让我感到很困惑。它的原文是这样的:
当我们试图给CELLDATA结构体数组中的一个CELLDATA结构体调拨物理存储器时,系统实际上会给整个页面调拨物理存储器。……给一个CELLDATA结构调拨物理存储器,也相当于给其他相邻的CELLDATA结构调拨了物理存储器。
我知道操作系统只会按页面粒度给虚拟地址分配物理存储器,但是我想到这样一个问题:
如果我的这个结构体是3B大小(3个字符类型即可),页面粒度是4KB也就是4096B,那么我如果给一个结构体数组的第一个结构体调拨物理存储器,按页面粒度来说,我就相当于分配给了1365.33个这种结构体物理存储器,问题出在最后一个结构体身上,它似乎只有一个字符被分配了物理存储器?
怎么解释这个问题?
本人菜鸟,轻喷
相似问题