windows核心编程---windows内存体系结构

-虚拟地址空间的分区
1.空指针赋值区
2.用户模式分区
进程无法访问驻留在这一分区的其它进程的数据。
3.内核模式分区
驻留在这一分区内的任何东西为所有进程共有。

-地址空间中的区域
1.创建进程并赋予它地址空间时,可用地址空间的大部分是闲置或未分配的。
须先预订–VirtualAlloc。
预订:
区域起始地址:分配粒度整数倍。系统预订区域不受限。
区域大小:页面大小整数倍。

释放–VirtualFree

区域类型:
闲置
私有
映像
映射

-给区域调拨物理存储器
要使用区域,须分配物理存储器+将存储器映射到所预订区域,
即调拨–VirtualAlloc。
调拨:
块大小:页面整数倍。

释放–VirtualFree

-物理存储器–页交换文件
如一台机器有1GB内存,硬盘还有1GB页交换文件,则,应用认为可用内存总量为2GB。

线程试图访问一块数据:
数据在内存,虚拟地址–>物理地址,依据物理地址访问内存数据。
数据在页交换文件,内存中腾出一个闲置页面,把页交换文件数据写入内存闲置页面,虚拟地址–>物理地址,依据物理地址访问内存数据。

-物理存储器–硬盘
当把一个程序位于硬盘的文件映像用作地址空间区域对应的物理存储器时,称此文件映像为内存映射文件。载入exe,dll时,系统自动 预订地址空间区域+把文件映像映射到该区域。
允许开发人员,把数据文件映射到地址空间。

-页面保护属性
PAGE_NOACCESS
PAGE_READONLY
PAGE_READWRITE
PAGE_EXECUTE
PAGE_EXECUTE_READ
PAGE_EXECUTE_READWRITE
PAGE_WRITECOPY
PAGE_EXECUTE_WRITECOPY
PAGE_NOCACHE
PAGE_WRITECOMBINE
PAGE_GUARD

-写时复制
windows支持多个进程共享同一存储器。
系统给共享的存储页指定写时复制属性。系统映射exe,dll到地址空间时,对其中可写页面,从页交换文件中为其分配预留备用空间。

-其它
一个进程地址对应的数据的物理存储器,可能有内存,页交换文件,硬盘。但实际操作数据均是在数据放到内存后进行。

-数据对齐
把数据的地址模除数据的大小,结果为0,则,数据就是对齐的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

raindayinrain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值