文章吧-经典好文章在线阅读:深入理解LINUX内核(第三版)读后感精选10篇

当前的位置:文章吧 > 经典文章 > 读后感 >

深入理解LINUX内核(第三版)读后感精选10篇

2022-05-16 12:43:29 来源:文章吧 阅读:载入中…

深入理解LINUX内核(第三版)读后感精选10篇

  《深入理解LINUX内核(第三版)》是一本由(美)博韦,西斯特著作,中国电力出版社出版的平装图书,本书定价:98.00元,页数:896,文章吧小编精心整理的一些读者的读后感,希望对大家能有帮助。

  《深入理解LINUX内核(第三版)》读后感(一):有志青年必读

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

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

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

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

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

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

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

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

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

  《深入理解LINUX内核(第三版)》读后感(二):本书(第三版)勘误~

  一、硬伤

  101L4 ~ L6的内容为:

  quot;没有为处于TASK_STOPPED、、EXIT_ZOMBIE或EXIT_DEAD状态的进程建立专

  门的链表。由于对处于暂停、僵死、死亡状态进程的访问比较简单,或者通过PID,

  或者通过特定父进程的子进程链表,所以不必对这三种状态进程分组。"

  L7 ~ L9的内容为:

  quot;没有为处于、状态的进程建立专门的链表。由于对处于暂停、僵死、死亡状态进程

  的访问比较简单,或者通过PID,或者通过特定父进程的子进程链表,所以不必对

  这三种状态进程分组。"

  对应的英文原文为:

  rocesses in a TASK_STOPPED, EXIT_ZOMBIE, or EXIT_DEAD state are not linked in specific lists. There is no need to group processes in any of these three states, because stopped, zombie, and dead processes are accessed only via PID or via linked lists of the child processes for a particular parent.

  rocesses in a TASK_INTERRUPTIBLE or TASK_UNINTERRUPTIBLE state are subdivided into many classes, each of which corresponds to a specific event. In this case, the process state does not provide enough information to retrieve the process quickly, so it is necessary to introduce additional lists of processes. These are called wait queues and are discussed next.

  翻译:TASK_可中断 或 TASL_不可中断 状态的进程被细分为很多种类,每一种都只响应某一特定事件。这种情况下,进程状态无法提供足够的信息以快速解析进程,所以需要引入附加的链表。它们被成为等待队列并且接下来讨论。

  二、错别字

  46L-3 "80x86微处理器中的分段鼓励程序员把他们的程序化分乘逻辑上相关的实体,例如子程"

  此处"化分"应该为"划分"。

  49L-9 "与高级电源管理(AMP)..."

  49L-5 "像前述与AMP相关的3个段的情况一样,..."

  AMP应该为APM

  61L-7 "(Page Cache Disablt)标志指明当访问包含在这个页框中的数据时,"

  quot;Disablt"应该为"Disabled"。

  71L-12 "...例如,IBM Thinkpnd把"

  很明显的应该是"Thinkpad"。

  三、有些地方有尾巴

  598L11 "spinlock_t tree_lock Spin lock 保护基树的自旋锁"

  此处的"Spin lock"系多余的。

  四、半角全角不分

  只是大致的翻一翻,希望仔细看过这本书的再挑更多的错误。有了第一个硬伤,充分说明这些翻译们的辛劳和严谨。真的太有才了,在译者序的最后有"......为第二版和第三版之间的差异做了大量校对工作,同时还参与部分翻译工作。全书由陈莉君审校并统稿。"不知道陈老师是否真的统过稿,值得怀疑。

  《深入理解LINUX内核(第三版)》读后感(三):沉下来,把内功练到精深处

  这书几乎对Linux内核中的主要子系统的源码进行了逐行分析,确实需要我们静下来沉下心来,花一段不短的时间来阅读源码。

  虽然我们自己去写一个操作系统的可能性很小,但是如果能深入理解这么庞大的系统,能阅读几万甚至几十万行优秀的代码,还有什么系统的源代码是我们不能理解的呢?仔细理解了这本书,仔细阅读了相关Linux内核源码,真的会让个人的内功大增,阅读代码的能力暴涨。

  曾经读过LKN,可是只读过书,没有读过代码,没有写过实际的内核模块。这样下来自己收获着实不大,很多东西当时看过,可是不久就忘了。所以,还是要看源代码,还是要动手实践。

  书好,更需要我们去读代码。

评价:

[匿名评论]登录注册

评论加载中……