![](https://img.haomeiwen.com/i569506/144018d57bf859be.jpg)
本坑是一本书 —— <Understanding the Linux Virtual Memory Manager>,04年的,距今也有10年了。。10年。。作者是Mel Gorman,所以本书也称为gorman's book.
为什么看这个呢,主要是之前一直对<strong>OS内存管理</strong>非常好奇,教科书上就只学过“伙伴系统”、“碎片”等<strong>理论上的概念</strong>,而考试上最喜欢考的则是缓存替换算法OPT,LRU,CLOCK...etc.搞得我之前面一个实习的时候被问到这方面第一反应就是LRU...直接被挂啊
另外,有一次手贱点进了kalloc的实现,然后呢?一顿瞎navigate,隐约看到了slab/slot甚至看到了color?(当时心里的反映是:什么鬼为何有个color?难道类似红黑树的着色还是什么?)
因此,偶然间发现我的某个文件夹中躺着这本书,恩,Let's go. :-(
前期朦胧的需求:(带着问题跳坑比较容易出来)
- 内存上的映射是?
- color?
Chapter 1
<i>工欲善其事,必先利其器</i>
This Chap contain basics of:
- how to acquire information on an open source project.
- some methods for managing, browsing and comprehending the code.
由此可见,第一章是非常适合初学者看的,而且不仅仅局限于MM,任何开源项目,这章的内容都非常适合新手看,叫你如何去开始研究一个部分的代码,另外还介绍了一些看代码的工具。
挑了些主要内容,NOTE一下。
Code-browsing Tools:
- Ctags + Vi :jump between files from <Tag> to <Tag>.
- LXR : browse your code project in web pages.
Analyzing-code-flow Tools:
- CodeViz + Graphviz: draw the Call Graph for you. -->
推荐使用Doxygen+graphviz
以上是第一章介绍的工具,尤其是后面2个Codeviz和Graphviz,第一眼看到简直只能说Awesome!
看一些大的项目,一开始时往往头晕目眩,就好像把你扔到一个陌生的城市,你得自己找路,往往异常浪费时间。但现在,你拥有了一个地图!
我马上开始着手安装,然而却遇到了很大的困难:<a href=http://www.jianshu.com/p/b3ed2b3652ac>Compile GCC-4.6.2 in Ubuntu-14.04_32bit</a>
:( 最后还是没能成功安装codeviz,在编译gcc-4.6.2时失败。
可喜的是:) ,但我最后还是找到了替代方案 Doxygen
+ GraphViz
(Win
上测试通过可用)。同样可以生成Call Graph,还能生成其他信息,功能仍在探索中。
下图是使用Doxygen
+GraphViz
为disksim-4.0
的一个函数disksim_setup_disksim()
画的调用图:
![](https://img.haomeiwen.com/i569506/21fc7bec5d846395.png)
参考:
<a href=http://blog.csdn.net/solstice/article/details/488865>分析函数调用关系图(call graph)的几种方法_陈硕</a>
(to be continued)
网友评论