分配粒度和内存页面大小(x86处理器平台的分配粒度是64K,内存页是4K,所以section都是0x1000对齐,硬盘扇区大小是512字节,所以PE文件默认文件对齐是0x200)
2017-05-22 18:15
573 查看
分配粒度和内存页面大小
x86处理器平台的分配粒度是64K,32位CPU的内存页面大小是4K,64位是8K,保留内存地址空间总是要和分配粒度对齐。一个分配粒度里包含16个内存页面。
这是个概念,具体不用自己操心,比如用VirtualAllocEx等函数,给lpAddress参数NULL系统就会自动找一个地方分配你要的内存空间。如果需要自己管理这个就累了......
一个分配粒度是64K,这就是为什么Null指针区域和64K进入区域都是 64K的原因,刚好就是一个分配粒度。
一个内存页是4K,这就是为什么PE文件中的section都是0x1000对齐.
硬盘扇区大小是512字节,这就是为什么PE文件默认文件对齐是0x200.
这些数字绝对不是心血来潮设定出来的,而是综合了硬件结构和操作系统架构设定的。
http://blog.csdn.net/mysouling/article/details/8676198
x86处理器平台的分配粒度是64K,32位CPU的内存页面大小是4K,64位是8K,保留内存地址空间总是要和分配粒度对齐。一个分配粒度里包含16个内存页面。
这是个概念,具体不用自己操心,比如用VirtualAllocEx等函数,给lpAddress参数NULL系统就会自动找一个地方分配你要的内存空间。如果需要自己管理这个就累了......
一个分配粒度是64K,这就是为什么Null指针区域和64K进入区域都是 64K的原因,刚好就是一个分配粒度。
一个内存页是4K,这就是为什么PE文件中的section都是0x1000对齐.
硬盘扇区大小是512字节,这就是为什么PE文件默认文件对齐是0x200.
这些数字绝对不是心血来潮设定出来的,而是综合了硬件结构和操作系统架构设定的。
http://blog.csdn.net/mysouling/article/details/8676198
相关文章推荐
- pe文件被装入内存时按64k对齐
- Linux下查看cpu类型、内存大小、硬盘大小类型和文件系统大小等
- 解答:x86架构下,页面大小为什么是4K?
- 解答:x86架构下,页面大小为什么是4K?
- 设某计算机的逻辑地址空间和物理地址空间均为128KB,按字节编址。若某进程最多需要6页数据存储空间,页面大小为1KB,操作系统采用固定分配局部置换策略为该进程分配4个页框(物理块)。
- malloc内存分配字节对齐问题
- C语言内存分配示例 与 字节对齐示例
- 转:内存对齐与补齐 字节对齐与结构体大小
- 结构体的内存空间分配及字节对齐
- linux 下查看文件和硬盘内存大小。
- 实现任意字节对齐的内存分配和释放
- 按某字节对齐分配内存
- 内存对齐的初步讲解--linux和windows平台下内存分配的差异
- 关于硬盘“4K扇区”对齐的查看与设置方法
- 字节字符和整数转换-大小端转换-结构体内存(文件)对齐规则之总结
- VC中结构体内存分配问题透析(“字节对齐”访问数据)
- 内存分配的字节对齐
- 为什么linux kernel默认的页面大小是4K,而不是4M或8M?
- 为什么linux kernel默认的页面大小是4K,而不是4M或8M?(转载一篇文章)
- 内存对齐的初步讲解--linux和windows平台下内存分配的差异