windows内存管理复习(加深了理解得很!)

Physical memory、Pagefile和进程地址空间的关系--搞搞清爽啦!
当用户进程中的一个线程试图访问进程的地址空间中的一个数据块的时候。一般会发生两种情况:

1. 线程试图访问的数据是在RAM中,则cpu只需要将虚拟地址mapping到内存的物理地址中,然后执行需要的访问。

2. 数据不在RAM中,而是放在页文件的某个地方。这时候,访问引起页面失效,cpu将通知操作系统,操作系统就从RAM中寻找一个空白页,如果找不到空白页,则必须释放一个页。如果该页面没有被修改过,则可以直接释放,否则必须先把此页面从RAM拷贝到页面交换文件,然后系统进入该页文件,找出需要访问的数据,并将数据加载到空闲的内存页面。然后,操作系统更新它的用于指明数据的虚拟内存地址现在已经映射到RAM中的相应的物理存储器地址中的表。

windows提供了3种进行内存管理的方法,他们是:
1. 虚拟内存,最适合用来管理大型对象和结构数组。
2. 内存映射文件(MMF),最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行的多个进程之间共享数据。
与虚拟内存一样,MMF可以用来保留一个地址空间的区域,并将物理存储器提交给该区域。它们之间的区别是,物理存储器来自一个已经位于磁盘上的文件,而不是系统的页文件。
3. 内存堆(heap),最适合用来管理大量的小对象。


 

原文地址:https://www.cnblogs.com/taoxu0903/p/1231386.html