zoukankan      html  css  js  c++  java
  • Windows内存管理介绍

      《Windows核心编程》 可以说是每一位Windows平台程序员成长过程中必备和必读的书籍。其中的Part III主要讲解了Windows平台的内存管理机制。这部分内容可以说是本书比较有难度并且理论性内容比较多的一章。今天,就内存管理这部分说一说自己的一些理解。

    • Reserve region。reserve基本上可以看做是一个打报告的行为,或者说是预约。通过调用VirtualAlloc配合MEM_RESERVE我们可以从虚拟地址空间分配出一块内存。这块内存称之为region。需要注意的是,此时虽然已经预约了一块内存空间,但事实上并没有真正分配。比较拗口。简单说就是,这个过程预订了一块虚拟地址空间,但是这一段连续的地址空间在物理存储器上找不到对应关系。
    • Commit region。Commit过程才是真正分配空间的过程。这个时候通过VirtualAlloc配合参数MEM_COMMIT在物理存储器上分配出空间,并将对应的虚拟地址空间映射到这部分物理存储器地址上。
    • Physical storage。所谓的物理存储器。需要和physical memory的概念区别开来。Physical memory指物理内存,或者说RAM。Physical storage还包括磁盘(paging file and memory-mapped file)。
    • Memory-mapped file。内存映射文件。这个概念在原书第三部分第一次提到时,理解起来是很模糊的。要很好理解这个名词,必须要很好理解书本中经常出现的back这个词。back的概念事实上就是一种映射关系。分配出来的虚拟地址空间到底和Physical storage中的哪种东西存在对应关系。因此对于内存映射文件,其意思就是有一段虚拟地址空间,和它对应的物理地址空间并不存在在内存或者页面文件中,而是存在于磁盘空间。表格13-5 Memory Region Types很好的解释了back这个词的意思。比方说
      • free type region:the region’s virtual addresses are not backed by any storage
      • private type region:the region’s virtual addresses are backed by the system’s paging file
      • image type region:the region’s virtual addresses were originally backed by a memory-mapped image file
    • Working set。这个概念比较简单,对于一个进程,它驻留在内存中的那些pages就称之为working set。
  • 相关阅读:
    安裝Node.js
    es match、match_phrase、query_string和term的区别
    ES系列十、ES常用查询API
    ElasticSearch 入门总结
    起立,老师好
    像哆啦A梦懂大雄一样懂客户,我们也会拥有百宝箱
    阿里云居然在偷偷发福利!
    别人家的公司又来了,这次竟然开起了演唱会
    听说国家博物馆收藏了一行代码 ???
    我还是那个我,为啥就被老板区别对待了呢?
  • 原文地址:https://www.cnblogs.com/wpcockroach/p/2469109.html
Copyright © 2011-2022 走看看