有志青年必读_深入理解LINUX内核书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 算法 > 深入理解LINUX内核 > 有志青年必读
simonliu 深入理解LINUX内核 的书评 发表时间:2012-02-02 10:02:36

有志青年必读

如果你是一个 C 程序员,你想过这些问题吗:空指针到底是什么?你调用 malloc 时,系统做了什么?fork 是怎么实现的?如果你很好奇,如果你是一位有志青年,你可以看看这本书。

操作系统是什么?操作系统其实是运行在硬件上的一个程序,这个程序的客户是应用软件,如:office,shell,等等。从这个角度来看,操作系统其实没那么神秘,无非是屏蔽硬件的细节,给上层的应用软件提供方便操作的接口,当然操作系统由于其处于软件系统的底层,对性能要求极为苛刻。操作系统给应用软件提供了访问硬件资源的接口,不同应用软件访问硬件资源的需求又各有差异,如何能公平的满足这些需求?从这个角度来看,操作系统内部是非常复杂的。

本书逐个分析了 linux 内核的几个模块:进程调度,内存管理,文件系统,I/O 设备。单单某一个模块就非常复杂,而这些模块之间有错综复杂的关系,所以想独立的分析某个模块而不牵扯其他模块是很困难的,这也是阅读本书的困难之处。比如说内存管理模块,要给内核本身提供内存分配的接口,用于内存本身的管理,文件系统缓存等等,也要给应用程序提供内存分配接口,内核认为内核本身申请内存,那一定是有足够理由的,所以会优先满足,而应用程序的申请往往会尽量延迟满足,除非你要访问那个内存单元,否则你得只是看起来拥有一块内存而已。应用程序使用内存可能是一次申请一大块,内核不能一下子就把这么多内存都拿出来,万一应用程序申请了不用怎么办?万一应用程序浪费怎么办?所以内核会先给应用程序一个线性地址范围,当应用程序访问那个内存单元时,才把一个线性地址映射到真正的物理内存。当然频繁申请/释放内存的情况也是有的,对于这种情况,内核利用了对象池技术,保证这种访问行为的性能。

当然复杂中也有简单,有一些核心思想是很容易理解的:

性能很重要,对普通应用是这样的,对内核更是,所以,能用缓存都用缓存,如:内核充分利用 CPU 的一级/二级缓存,并且为 I/O 设备做内存缓存。

当然节约空间也很重要,所以 linux 内核使用了大量的位操作,用位而不是字节以便节约空间。

这本书不仅能给带我们浏览 linux 内核的工作原理,也能向我们展示大量的编程技巧:如何优化 if 判断、如何利用位运算、如何写换行宏、如何把一个结构加入多个链表等等。

linux 内核源代码从最开始的 1 万行,到现在发展为几百万行,要想通读下来基本上是不可能的,这本书只截取了部分重要的数据结构和极少数的重要的代码片段。本书的写作风格我不是很喜欢,基本上就是列出一个数据结构/一个内核函数,后面给出一大段分析,读起来很枯燥,段落之间连贯性不强。

书名是“深入理解 linux 内核”,其实这本书没那么深入,只要有一点 C 语言的基础就能大概读懂,对内核的各个模块也没做深入的分析,基本就是给代码做注释。如果你是搞嵌入式系统开发的,那你应该知道读那些章节,如果你是一个普通的应用开发者,建议你看看内存管理和进程调度这几个章节,收获应该不小。

展开全文
有用 1 无用 0

您对该书评有什么想说的?

发 表

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“有志青年必读”的回应

simonliu 2012-05-06 14:35:37

ldd3 没看过。。。

Akagi201 2012-05-01 15:44:38

请教这本书跟ldd3阅读顺序