第十三章 Windows 内存体系结构

一、内存体系结构

        windows 内存体系结构分为两部分:虚拟地址空间和物理存储器

        虚拟地址空间:面向用户的指向某存储器的地址(X32 是4GB,X64是16EB);分为空指针区域(64KB)、用户指针区域(X32:2G;X64:8192G)、内核区域(操作系统代码驻留地,为所有进程共有)。

        物理存储器:内存、页交换文件(使用起来像内存)、内存文件映射(将文件当做存储器)

二、预定地址空间

        有两条规则:

               1、起始地址需要是分配粒度(可能是64KB)的整数倍;

               2、大小是系统页面的整数倍(X32 可能是4KB,X64可能是8KB);

                  注:都和CPU有关。

        因此 数据要对齐,如果数据不对齐,要么CPU抛异常,要么CPU要访问错位内存。(CPU在访问内存时,内存被分为很多节点).

三、分配物理存储器

       地址空间有四种状态:闲置(没有分配物理存储器)、私有(内存)、映像(文件)、已映射(或者是内存,或者是文件)

四、地址空间扩展

        使用AWE调拨物理存储器,将多块内存映射到同一个地址空间中,不允许一块内存映射多个地址空间;特性如下:

        1、操作系统保证不会将这种内存换出到磁盘。(减少页交换)

        2、应用程序能访问比地址空间大得多的内存。(操控大块内存)

五、windows 内存结构应用

        1、线程栈:当系统创建线程时,系统会在用户区域预定地址空间给线程。在debug中有/RTC编译器开关,对函数插入一些检查代码来检查栈溢出。release中有/GS开关来检查栈溢出。

        2、内存映射文件:用于系统运行好载入.exe文件和动态链接库(DLL)文件,减少大量页交换及程序启动时间,或者用于读写文件来避免对文件进行缓存,或者不同进程共享数据。

        3、堆:是系统预定的一块地址空间,始终以内存当做物理存储器的;分为进程默认堆和创建的额外的堆。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值