zoukankan      html  css  js  c++  java
  • 读书笔记——Windows核心编程(13)Windows内存体系结构

    对于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。


  • 相关阅读:
    廖大python实战项目第六天
    廖大python实战教程第七天
    廖大python实战项目第五天
    Map的遍历方法及字符计数
    事务详解
    java设计模式详解
    程序员常见一些英文缩写
    Hibernate小笔记
    Myeclipse有关的问题
    hibernate对象的三种状态及转换
  • 原文地址:https://www.cnblogs.com/wlsandwho/p/4202184.html
Copyright © 2011-2022 走看看