Windows内核 -- 内存体系结构

这篇博客探讨了Windows内核的内存体系结构,详细介绍了进程的虚拟地址空间,包括32位和64位进程的地址空间大小。内容涵盖虚拟地址空间的分区,如空指针赋值分区、用户模式分区和内核模式分区,以及这些分区的功能和作用。此外,还讨论了地址空间中的区域与物理存储器和页交换文件的关系。
摘要由CSDN通过智能技术生成

进程的虚拟地址空间

每个进程都有自己的虚拟地址空间。

  • 对于32位进程来说,这个地址空间的大小为4GB, 因为32位指针可以表示地址在0x00000000~0xFFFFFFFF间的任意值。
  • 对于64位进程来说,这个地址空间的大小为16EB(即千亿亿字节)

每个进程都有自己专有的地址空间, 当进程中的各线程运行时,它们只能访问属于自己的内存。线程既看不到属于其他进程的内存, 也无法访问它们。

例如,进程A在位于它的进程地址空间内的0x12345678地址处存储了一个数据结构, 而进程B在位于它进程地址空间中也有地址为0x12345678。但是它们却不是相同的数据。

最后,所谓虚拟地址空间,即是虚拟的。 并没有实际的物理存储器。 这个地址空间不过是一个内存地址区间。为了能够正常读/写数据, 操作系统需要把物理存储器分配或映射到相应的地址空间。否则将导致访问违规。

虚拟地址空间的分区

虚拟地址空间分区分为以下几区:

  • 空指针赋值分区
  • 用户模式分区
  • 64KB 禁入分区
  • 内核模式分区
空指针赋值分区

这一分区位于进程地址空间0x00000000~0x0000FFFF的闭区间。 保留该分区的目的是为了帮助程序员捕获对空指针的赋值。如果进程中的线程试图读取或写入位于这一分区内的内存地址, 就会引发访问违规。

用户模式分区

这一分区是进程地址空间的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值