内存管理器通过在虚拟内存空间提供一系列核心服务:内存映射文件,内存写时复制,大内存支持,以及一些底层的支持等来进行缓存管理。
内存管理来会涉及到的主题:
一、关于内存管理
二、内存管理函数的使用
三、内存管理参考手册
以下先重点讲理论和概念,结合代码使用,交叉穿插以及形象具体易学。
关于内存管理
在基于NT架构的微软Windows操作系统中,在32位系统中,每一个进程拥有一个多达4GB(2^32)的虚拟地址空间;而64位系统中这个值高达8TB(2^45)。进程中的每个线程都可以访问整个进程的虚拟地址空间。但是,线程不能访问本进程以外的其他进程的地址空间,这使得每个进程的地址空间得到保护,不会被别的进程干扰。以下列出了虚拟以址空间以及内存管理函数,分别在下列主题中。
虚拟地址空间
所谓进程的虚拟地址空间是指一个虚拟的内存地址集合,这个地址集合仅供本进程使用。在进程不共享地址空间的情况下,每个进程的地址空间都是私有的、不能被其他进程所访问的。
一个[虚拟地址]不代表其在实际物理内存上的具体的位置,而是由系统通过对每个进程维护一个[内存页表]来进行管理的。内存页表是每个进程用来将进程的虚拟地址转变为对应的物理内存地址的内部数据结构 。每当一个线程使用对应的虚拟内存地址时,系统就会把虚拟内存地址转换为对应的物理内存地址。
在32位windows系统下,每个进程拥有4GB的虚拟地址空间。这4GB虚拟地址空间被分成两个部分:一部分由进程代码借用,另一部分保留由系统所使用。以下章节暂时不讨论64位系统的情况。