内存管理

一般来看有三种类型的地址:物理地址线性地址逻辑地址,逻辑地址的精髓在于将地址分成两部分:段基地址+偏移,翻译的过程如下:

线性地址的精髓在于将所有的内存按照一定的大小分成了一页一页,对多有的程序和用户都一样,翻译的过程如下:

在程序访问时地址处理的过程为:逻辑地址->线性地址->物理地址,但是Kernel基本上把分段机制给绕开了,主要是使用分页机制,地址处理的流程由MMU(内存管理单元)来做,我们建好对应的数据即可。

下面来看内存管理部分,这里只是画个大概(bootmem比较简单而且后期并不使用)就不画了,其他部分如下:

在这里有伙伴系统(分成不同大小关系)、SLUB(小内存)、VMALLOC(连续内存)和高端内存(内存比较大的时候直接映射不能完全处理),另外从上图的虚拟地址部分可以看出如何使每个进程有自己的虚拟地址空间,这里没有缺页异常(不知道该怎么画上去,而且感觉应该单独搞一篇来好好写)。

下面来看几种常见的查看内存状态的方法:

  1. free -s 5
  2. cat /proc/meminfo
  3. cat /proc/pid/maps:进程的虚拟地址的信息
  4. cat /proc/pid/statm:进程占用的内存
  5. top:通过f打开菜单选择更多内容
  6. ps
  7. sar -B\-r\-R

文件系统

参考及资料

最新文章

  1. html5 canvas常用api总结(一)
  2. Java基础知识【上】(转载)
  3. Smallest Common Multiple
  4. V$RMAN_BACKUP_JOB_DETAILS
  5. redis pool
  6. 37. Sudoku Solver
  7. c++: 获取delete[]中的数组大小
  8. Android开发UI之textview实现高亮显示并点击跳转
  9. Spring基于注解的Cache支持
  10. matlab 中max函数用法
  11. CJOJ 1131 机器分配 / Luogu 2066 机器分配 (动态规划)
  12. 01.Java 开发简单的计算器
  13. 20155211《网络对抗》Exp02 后门原理与实践
  14. Codeforces Round #373 (Div. 2) A. Vitya in the Countryside 水题
  15. 网站运维之JAVA-SSH框架数据同步问题
  16. js插件---GoJS 如何去水印
  17. Markdown语法笔记
  18. 玩转控件:重绘DEVEXPRESS中DateEdit控件 —— 让DateEdit支持只选择年月 (提供源码下载)
  19. iOS后台播放音乐
  20. 解决Unable to load component class org.sonar.scanner.report.ActiveRulesPublisher/Unable to load component interface org.sonar.api.batch.rule.ActiveRules: NullPointerException

热门文章

  1. ubuntu 安装wxpython以及boa-constructor
  2. HDU1385 (Floyd记录路径)
  3. 一步步打造自己的linux命令行计算器
  4. (二十八)fopen与读写的标识r,r+,rb+,rt+,w+.....
  5. 如何修改linux 的SSH的默认端口号?
  6. jQuery重置单选框和input框
  7. Navigator与UserAgent笔记
  8. 记一次Laravel定时任务导致日志没有写入权限的坑
  9. 转:Laravel 安装指南
  10. eclipse中的aptana插件的安装