读书笔记——Windows核心编程(13)Windows内存体系结构
2013-08-11 16:14
281 查看
对于32位进程(0x0000 0000~0xFFFF FFFF),有4GB的地址空间。
每个进程都有自己专有的地址空间,当进程的各个线程运行时,它们只能访问属于该进程的内存。
这4GB其实是虚拟地址空间,不是物理存储器。
为了能够正常读写数据,需要把物理存储器分配或者映射到相应的地址空间,否则将发生访问违规错误(Access Violation)。
x86 32位 Windows虚拟地址空间的分区
空指针赋值分区 0x0000 0000——0x0000 FFFF (捕获空指针的赋值)
用户模式分区 0x0001 0000——0x7FFE FFFF
64KB禁入分区 0x7FFF 0000——0x7FFF FFFF
内核模式分区 0x8000 0000——0xFFFF FFFF
当系统创建一个进程并赋予它地址空间时,可用地址空间中的发部分都是闲置的或尚未分配的。
为使用这部分的的地址空间,要调用VirtualAlloc分配其中的区域,这个操作被称为预订。(不再使用时,调用VirtualFree释放。)
分配的粒度为64K,起始地址为分配粒度的整数倍。系统会确保分配的大小正好是系统页面大小的整数倍。
x86系统的页面大小为4KB。
每个进程都有自己专有的地址空间,当进程的各个线程运行时,它们只能访问属于该进程的内存。
这4GB其实是虚拟地址空间,不是物理存储器。
为了能够正常读写数据,需要把物理存储器分配或者映射到相应的地址空间,否则将发生访问违规错误(Access Violation)。
x86 32位 Windows虚拟地址空间的分区
空指针赋值分区 0x0000 0000——0x0000 FFFF (捕获空指针的赋值)
用户模式分区 0x0001 0000——0x7FFE FFFF
64KB禁入分区 0x7FFF 0000——0x7FFF FFFF
内核模式分区 0x8000 0000——0xFFFF FFFF
当系统创建一个进程并赋予它地址空间时,可用地址空间中的发部分都是闲置的或尚未分配的。
为使用这部分的的地址空间,要调用VirtualAlloc分配其中的区域,这个操作被称为预订。(不再使用时,调用VirtualFree释放。)
分配的粒度为64K,起始地址为分配粒度的整数倍。系统会确保分配的大小正好是系统页面大小的整数倍。
x86系统的页面大小为4KB。
相关文章推荐
- 读书笔记——Windows核心编程(13)Windows内存体系结构
- windows核心编程系列13---Windows内存体系结构
- 《Windows核心编程》读书笔记(七) 第13章 Windows的内存结构
- Windows 内存结构体系(读书笔记)
- 《windows核心编程》–Windows内存体结构(二)
- chapt13、Windows内存结构
- chapt13、Windows内存结构
- Windows核心编程<读书笔记十三>Windows的内存结构
- 第十三章:windows内存体系结构
- 《windows核心编程》–Windows内存体结构(一)
- Windows的内存结构收藏
- Microsoft Windows CE .NET 中的中断体系结构
- Windows网络体系结构总结
- 堆和栈的区别、windows进程中的内存结构
- Oracle 12c 读书笔记(二):Oracle数据库体系结构
- windows进程中的内存结构
- JVM体系结构与内存模型
- windows进程中的内存结构
- 【转】windows进程中的内存结构
- 用VC写Assembly代码(6)--附录2[windows进程中的内存结构]