提出四个问题及解答:
1)若进程在运行过程中,物理内存不足会发生什么?
2)为何进程在占用物理内存不变的情况下,系统的物理内存会增加?
3)为何程序的大小大于实际占用的物理内存?(假如程序30M,却只有20M物理内存)

4)malloc分配的内存,未体现在物理内存上?(分配了10M,物理内存可能还不足10M)

问题一:
与第一个问题相关的是一个swap的概念,简单来说就是将根据某一算法将部分物理内存页交换到硬盘或者其他存储设备,空出的内存页就可以为进程使用。
1)内存页在此可分为两种不同属性,一种为不可写的内存页(cache、程序的text段,共享库的内存映像以及只读数据文件等),一种为可写的内存页(进程数据、栈)等。
2)对不可写的内存页,可以简单的丢弃,因为内存页中的数据在需要的时候可以重新读入;对可写的内存页,在swap时,必须将它存储在swap file中,后续在使用的时候可以重新读回。

3)对于如何选择内存页进行swap,linux采用的算法是:每个内存页都有一个年龄,访问一次更新它的年龄属性,在swap时选择年老的内存页进行

问题二:
与第二个问题相关的是cache的概念,一般的平台都会有硬件cache,这是弥合cpu速率和内存读取速率的利器,有了它程序才能执行的够快。与此问题相关的cache则是一个cache buffer的概念。
1)buffer cache主要是为块设备驱动使用

2)块设备数据的读取效率较低,在读取是采用预读部分数据存放在cache中,就可以减少读取的次数,提高效率。

问题三:
与第三个问题相关的是虚拟存储的概念,进程在32位linux系统中内存地址空间大小为4G,物理内存可以远小于4G(如512M),实现虚拟存储主要是由linux的内存管理完成的(如线性地址到物理地址的映射等)。
1)要解释问题三,除了虚拟存储的概念外还需要两种技术,demand paging技术 和 问题1中的提到的swap
2)程序在开始执行时,开始只分配地址空间,并没有实际的物理内存分配,在需要用到时才分配内存页(demand paging技术),所以不执行的程序部分不会被导入内存。

3)若内存不足时会进行swap操作。

问题四:
与第四个问题相关的是延迟分配技术,linux总是认为用户需要的进程内存不是紧要的,在不对此内存进行操作的时候,并没有实际的物理内存分配给它。单纯的malloc接口只是进程地址空间的一个说明。

引文:

http://www.linuxjournal.com/article/10678
http://www.thegeekstuff.com/2012/02/linux-memory-swap-cache-shared-vm/

最新文章

  1. CSS网页制作常用标签
  2. java高薪之路__006_多线程
  3. 这是我定位的Bug
  4. jq版本1.7以上on方法使用结构
  5. 【Construct Binary Tree from Preorder and Inorder Traversal】cpp
  6. 基于 Equinox 的 OSGi Console 的研究和探索
  7. 【html】【12】特效篇--轮播图
  8. Smlusm随笔目录索引
  9. 教你在Java的普通类中轻松获取Session以及request中保存的值
  10. A - Wireless Network-poj2236(简单并查集)
  11. 转百度前辈的Trados使用心得
  12. poj_1743_Musical Theme(后缀数组)
  13. 设计模式——命令模式(C++实现)
  14. IntelliJ IDEA maven 构建简单springmvc项目
  15. 在WebStorm里配置watcher实现编辑less文件时自动生成.map和压缩后的.css文件
  16. Spring Cloud微服务系列文,服务调用框架Feign
  17. AI 随机梯度下降(SGD)
  18. AtCoder Grand Contest 018 E Sightseeing Plan
  19. Css的前世今生
  20. BZOJ2134 luoguP1297 [国家集训队]单选错位

热门文章

  1. (转)Web.config配置文件详解(新手必看)
  2. JSP 核心 (等待更新)
  3. Light oj 1030 二分查找
  4. web worker使用
  5. redis之lua脚本
  6. JS函数自动执行
  7. [1] Tornado Todo Day0
  8. 每次从vss获取文件都是只读
  9. [HDU] 1698 Just a Hook [线段树区间替换]
  10. 【CCNA学习笔记】1.思科路由器的基本配置