
刘京洋
本书主要描述Linux系统的总体框架和设计思想,包含很多可以直接操作的实例。编写本书的目的是希望读者对Linux系统背后的逻辑有一个全面的了解。本书对比较核心且常用的技术点有更加深入的解释,对实际使用Linux系统工作大有裨益,同时,选择重点的方向进行源码级深度分析,包含大量的案例,而且增加了与Windows同类操作系统的对比,涉及Fuchsia?OS和Android系统的一些实现,对操作系统的描述更清晰。 本书适合Linux系统开发人员、嵌入式系统开发人员阅读,也可供计算机相关专业的师生阅读。
本书包括的内容挺多,如果都是作者认知,那还是挺厉害的,但又犯了一些明显的概念错误(非笔误)中,.以CPU那节的TSO的解释为甚。在CPU微架构中,TSO是Total store ordering的意思,作者却说是TCP段卸载(这是网卡的概念),可谓风马牛不相及,差了十万八千里。 所以本书要审视的看。写作出书还是不要写自己不熟悉的领域。
看起来什么都讲了,读起来又没有获得感和成就感。也许作者水平很高,只是没组织好。硬着头皮读完第一章,东拉西扯的项目,和新名词一个都没记住,再见。或者回见,等水平足够高的时候也许会回来再读。
非常好的一本书。底层原理讲的很深入和详细,但又没有像有些书一样陷入晦涩的源码。在深度和易懂之间有个很好的平衡。
读起来有点吃力,不是很好理解。书的目录架构很不错。
一般不评论,这次来评论下。我的评论很具体,但是很片面,因为我就评论一段内容,而且书也没读完。 评论的原文:“微内核是一种社会性的内核,宏内核是一种技术性的内核。在性能方面,微内核能击败宏内核的概率不大,因为宏内核中的任何一个细分变更都需要整合测试,而且任何一个细分都在整体的框架内变更,包括架构风格和编码风格。” 读了这一段:我有两个疑问: 如何理解社会性和技术性内核?它们的比较在一个纬度吗? 宏内核的变更整合测试是微内核在性能方面能击败宏内核的概率不大的原因?如何理解这个因果关系? 本人小白,这两个问题只能问大模型: 问题1: 从原文中将微内核称为"社会性"内核,宏内核称为"技术性"内核的对比来看,这确实不是一个维度上的直接比较。让我分析一下: 1. 这个比喻的含义: "社会性"内核(微内核): - 强调模块间的"社会关系" - 通过明确的通信协议交互 - 类似于社会中不同部门之间的协作 - 各个服务相对独立,职责划分明确 - 强调系统组件间的松耦合和自治性 - 管理方式类似于分布式组织架构 "技术性"内核(宏内核): - 强调技术集成和整体性能 - 所有功能紧密集成在一起 - 追求技术上的效率和直接性 - 类似于一个高度集中的技术系统 - 管理方式类似于集中式架构 2. 比较维度的问题: 这个比较确实存在维度不对等的问题: - "社会性"描述的是组织和交互方式 - "技术性"描述的是实现和性能特征 这就像把"团队协作方式"和"技术实现方法"放在一起比较 3. 更合理的比较维度应该是: 组织维度的比较: - 微内核:分布式组织,模块自治 - 宏内核:集中式组织,统一管理 技术维度的比较: - 微内核:消息传递,模块化设计 - 宏内核:直接调用,一体化设计 架构维度的比较: - 微内核:服务分离,接口标准化 - 宏内核:功能集成,共享资源 4. 更准确的描述方式: 与其说"社会性"和"技术性"的对比,不如说微内核和宏内核代表了两种不同的系统设计哲学: - 微内核倾向于"分而治之"的模块化设计理念 - 宏内核倾向于"统一集成"的整体性设计理念 请阅读原文内容,解释为什么“宏内核中的任何一个细分变更都需要整合测试,而且任何一个细分都在整体的框架内变更,包括架构风格和编码风格”导致“在性能方面,微内核能击败宏内核的概率不大”? 原文内容:“微内核是一种社会性的内核,宏内核是一种技术性的内核。在性能方面,微内核能击败宏内核的概率不大,因为宏内核中的任何一个细分变更都需要整合测试,而且任何一个细分都在整体的框架内变更,包括架构风格和编码风格。” 宏内核的变更整合测试是微内核在性能方面能击败宏内核的概率不大的原因? 问题2: 这句话中的因果关系似乎表述有误。原文中"因为"后面的内容实际上是宏内核的一个限制或劣势,按照逻辑不应该导致宏内核性能更优。让我来分析原因: 1. 宏内核的特点: - 所有系统服务都运行在内核态 - 组件间紧密耦合 - 共享同一个地址空间 - 代码集中管理和整合 2. 微内核的特点: - 只保留最基本的功能在内核态 - 大部分服务运行在用户态 - 组件间通过消息传递通信 - 模块化程度高,相互独立 3. 性能比较: 宏内核通常性能更好,主要原因是: - 系统调用开销小,无需频繁的用户态/内核态切换 - 组件间通信直接通过函数调用完成,效率高 - 共享内存访问速度快 4. 原文逻辑问题: 原文说"宏内核中任何细分变更都需要整合测试"和"在整体框架内变更"其实是宏内核的缺点,说明: - 开发维护成本高 - 代码耦合度大 - 修改风险高 这些特点反而应该成为宏内核性能提升的阻碍,而不是性能优势的原因。 所以一个更准确的表述应该是: "微内核难以在性能上击败宏内核,这是因为宏内核中所有组件运行在同一地址空间,避免了频繁的上下文切换和跨地址空间通信,尽管这种紧耦合的设计使得任何修改都需要完整的整合测试。"
重新修改评价。 开始评价:主要按基础功能做介绍。 没有整体理解 看这个 可能比较懵。了解内核的 看这个可以当个手册翻翻。 更新后:其实是把kernel的一些关键点 讲到了。比如 mmu ,futex 这些 都帮我解决了些问题。
能看得出来作者对操作系统很熟悉,很多细节也是信手拈来,对于同一机制在多个操作系统间的实现差异也讲的很清楚,整体是一本好书。 美中不足的是linux数据结构那章比较晦涩难懂,希望增加更多图示说明
窃以为一本好的计算机类图书一定是图文并茂,深入浅出,而本书全是文字看的眼晕,又不是看小说。