想学习操作系统的内存管理,有没有什么推荐?
书、博客、问答什么形式都可以。
我觉得可以从两个层面来回到这个问题,针对操作系统的其他特性也是一样的。
1、如果是应用开发层面的,你只是对诸如堆、栈、mallocfree等的概念和使用不清晰,建议看《unix环境高级编程》或《linux程序设计》这些书;
2、如果你想从底层实现去理解,操作系统到底如何去管理内存,我个人的经验是循序渐进:
第一步你可以去看ucos这类实时操作系统源码,里面有很简单的内存管理;参考《嵌入式实时操作系统ucos2》;
第二步你可以去看相对复杂的内存管理(包括物理地址、线性地址、MMU等概念),建议从早期版本的linux,或者国内的一些操作系统实现的书入手;参考《linux内核完全注释》、《自己动手写嵌入式操作系统》等;
第三步你再去看现在linux下的内存管理,这部分市面上可选的范围很多,很多是针对2.6或以上的内核版本,涉及到的知识点和算法会更复杂。到这个阶段源码级全部掌握不太可能(比如随便一个进程调度就是万把行代码,还很不好读懂),大致了解原理后,建议工作中用到什么深入学习什么。
Linux/Unix设计思想
Linux内核设计与实现
如果只是想了解一下, 这两本就够了. 都是非常易懂的书--我都能看懂. 想深入了解丢得看源码了.