Windows核心编程<读书笔记十三>Windows的内存结构

第13章 Windows的内存结构

【文起】蟹儿的鼓励和支持,以及有时候的激励,是我能坚持的源泉,爱你宝贝儿。

1、  进程的虚拟地址空间

每个进程都有自己的虚拟地址空间。32位的进程来说,地址空间为4GB()。而这

个只是虚拟地址空间,只是内存地址的一个范围,而不是真正的物理地址空间。

2、  虚拟地址空间如何分区

每个进程的虚拟地址空间都要划分为各个分区。

2.1、NULL指针分配的分区

分配内存时,如果没有足够的内存来满足要求,就会返回一个NULL指针。但是代码可

能并不检查这种可能性,就开始访问)0x00000000地址的内存。这就会发送内存访问的违规现象。

         2.2  MS-DOS/16位Windows应用程序兼容分区————仅适用于Windows98

         2.3  用户方式分区——————Windows2000和98

         这个分区是进程的私有(非共享)地址空间所在的地方。一个进程不可以读取、写入、或者以任何访问驻留在该分区中的另一个进程的数据。

         2.4  64KB禁止进入的分区——————仅适用于Windows 2000

         位于用户方式分区上面的64kb分区是禁止进入的。保留该分区,是因为这样做使得Microsoft能够更加容易地实现操作系统。

         2.5  共享的MMF分区----适用于Windows 98

         这个1GB分区是系统用来存放所有32位进程共享数据的地方。系统为每个进程将DLL加载相同的内存地址。

         2.6  内核方式分区——————Windows2000和98

         这个分区是存放操作系统代码的地方,用于线程调度、内存管理、文件系统支持、网络支持和所有设备驱动程序的代码全部在这个分区加载。这个分区中的一切均可被所有进程共享。

3、  地址空间中的区域

进程被创建并被赋予它的地址空间时,该可用地址空间的主体是空闲的,即未分配的。

如若使用该地址空间的各个部分,必须通过调用VirtualAlloc函数来分配它里面的各个区域,该操作被成为保留。

4、  提交地址空间区域中的物理存储器

若要使用已保留的地址空间区域,必须分配物理存储器,然后将该物理存储器映射到已

保留的地址空间区域,该过程称为提交物理存储器。

5、  数据对齐的重要性

CPU访问正确对其的数据时,运行效率是最高的。X86 CPU的EFLAGS寄存器中包含一

个特殊的位标志,称为AC(对齐检查的英文缩写)标志。默认设置,CPU首次加电时,该标志被设置为0.如果为0,CPU能够自动执行它应该执行的操作,以便成功地访问未对齐的数据值;如果为1,每当系统试图访问未对齐的数据时,CPU就会发出一个INT 17H中断。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值