文章吧-经典好文章在线阅读:《Linux内核设计的艺术》读后感10篇

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

《Linux内核设计的艺术》读后感10篇

2017-12-09 20:51:02 来源:文章吧 阅读:载入中…

《Linux内核设计的艺术》读后感10篇

  《Linux内核设计的艺术》是一本由新设计团队著作,机械工业出版社华章公司出版的平装图书,本书定价:79.00元,页数:444,文章吧小编精心整理的一些读者的读后感,希望对大家能有帮助。

  《Linux内核设计的艺术》读后感(一):转读者评论(来自China-pub)

  很早就在china-pub上关注此书很久了,看了试读章节,觉得不错,就订购了一本。从拿到书到今天,按照前言和阅读指导的提示,算是囫囵吐枣的看完了,感觉挺不错。第一次有人这么讲操作系统。书

  中有些地方讲得特别深刻,解决了我不少疑惑:

  1. 第二章中进程0、1、2的作用及其划分讲得很明白,头一次听说;

  2. 第二章里面提到的update进程的启动和作用,以前不知道的,可能是我孤陋寡闻了;

  3. 隐式队列这个一直没搞明白,第六章的第一节通过多个程序读写同一个文件的实例讲得挺清楚地;

  3 第八章p395-398通过一个简单的hello world程序的运行把操作系统为应用程序的运行提供哪些工作提出来;

  4.主奴机制的实现技术需要提供的内容,内核这个主子一方面为进程这些奴才提供运行的支持,另一方面对这些奴才进行组织管理协调。

  另外,代码排版有点乱,缩进好像有些问题,希望下版改进。先写这么多,在细细研究,等有新的感悟了,再发上来交流。

  《Linux内核设计的艺术》读后感(二):我眼中的代码阅读

  本书是在研究生院比较受欢迎的杨老师带领下完成的。09年的时候,在课堂上说在做这个课题,想招募学生一块做,当时由于时间关系没有参与,然后就没有下文了。11年初的时候,就看到在群里有宣传了,于是到chinapub上下载了样章看了看,关于文件的,第一眼的感觉很好,因为图比较多,我觉得图的信息量比文字的要大,一个好图能够说清楚很多事。

  今天从图书馆借到这本书,下午的时候翻阅了下(真没有细读,下面的吐槽不一定对),于是有些想法,借着这个机会吐下槽,只代表我个人观点,可能有些偏颇

  近一年来一直在看代码,改代码,中间有很多喜悦,也有很多痛苦不足为外人道也。我有时也在思考我们需要什么样的源代码分析文字。

  以前读侯捷的《STL源码剖析》,一直笃信书的后封皮上写的“源码之前,了无秘密”,于是看了很多源码。分析到最后给我的感受是,源码不一定要行行俱到,理论与代码要结合,故如《追踪Linux TCP/IP代码运行》这样的纯贴代码加少量分析的书是很让人生厌,并且头疼的。

  多年的经验告诉我,“工欲善其事必先利其器”,故找到好的并适合自己的工具就显得很有必要。个人推荐Source Insight、Doxygen、Understand等多种工具,覆盖阅读,分析,画图,总结等各个环节,这些工具的应用能够让你读代码快速而充分。

  工具是为了更好的分析,即然是分析源码,就要有相关计算机的基础知识,设计数据结构、算法、编程语言(各种奇技淫巧)等等。

  计算机中有个著名的论断“数据结构+算法 = 程序”,在C++标准库中,标准模板库(STL)的六大概念都是围绕着这个等式来的。在这背后,最重要的是抽象。应该说抽象是计算机各种理论(编程语言、数据结构等)的基础。能够将一段程序的思想剥离并抽象出来是需要很强的能力的,将一段程序讲得生动更是不容易的一件事情。代码的实现是多种多样的,但是思想是活的,能够运用思想是种能力的体现。

  读源码,首先的是找出核心的数据结构。数据结构的定义与你要完成的功能、算法是息息相关的,所以是最大的抽象,最能体现能力的地方。算法无论最终的结果如何,都会转换到无非是对数据结构的操作,最终都会转换到查找、排序、链表或数组(哈希)的增删查找等操作。

  所以,核心数据的结构的表示很重要,在计算机领域用得最多的是面向对象的UML类图。计算机领域发明了UML这样的描述工具也就是为了更好的描述抽象的思想。传统如流程图、数据流图等,这些工具类似于英语成为通用的交流语言,所以分析代码这样简介的图或许是必须的。

  分析数据结构的各个域,了解其抽象的含义,其实就是将基本原理娓娓道来的好机会,毕竟原理是原理,需要映射到代码中。

  数据结构的分析是静态的分析,数据结构的设计是为了使用,为了生成数据(“数据为王”的时代!),这时我们就要关注变量,变量的何时生成,何时销毁,何时变化,有哪些操作接口。在这个分析中,需要从全局变量着手。全局变量与全局变量的之间的关系,全局变量的数据流。找出核心的处理过程。这个可以用流程图来表示,调用关系等标识。

  在这个过程中,你需要静态与动态的结合,有时你还需要补充些理论知识(如IA32架构、文件系统等)能够让你理解代码事半功倍

  但是很可惜本书中并没有类似的分析,本书给我最大的感受是类似于实验报告,顺着代码往下走,走不通了,再找些理论知识补补,看哪里可以继续读下去。然后一切都为这个服务。后面最多加个无关痛痒的总结。这个过程你可以按照作者的思路阅读代码,但是他没法给你那种“原来如此”的感觉,这个要靠你自己去悟。

  全书我都没有看到代码的总体框架图,类似于TCP分层一样的图。有的只是硬盘内存这样的设备(形象倒是形象,但是我觉得抽象更重要些)。比如已经有那么多文件系统分析的资料,其实完全可以吸收引用过来,没有必要闭门造车。

  对于作者引以为豪的最后一章提出“主奴机制”,英文就是“Master——Slaver”,我接触过的文章中,更多的是翻译为“主从机制”,相应的设备叫“主设备”“从设备”。

  书的最后,说恭喜阅读到最后,还建议我们多读几遍,也就是说我们还得重复作者走过的道路。

  总之,本书最大的问题在于只是记录了分析源码的过程,但是缺少必要的反刍消化,全局性的框架没有建立起来,而把问题留给了读者。

  《Linux内核设计的艺术》读后感(三):如果你想学习linux0.11,本书还是值得买来看看的

  该书特点:对linux 0.11的启动过程和重要的文件系统、内存管理做了流程性的讲解;有助于从运行的层次来帮助理解0.11的源代码。

  不过遗憾的是该流程性的讲解很多时候没有把握到重点和疑点,该详细讲解的地方没有讲,不该详细讲解的地方讲了很多,条理也不太清楚。

  所以在看第2章的时候,看到和文件系统相关的内容时,可能无法理解,需要先看看完全剖析中关于文件系统的结构后再回头来看才好理解。

  另外在看的时候,要做粗读,重点把握运行流程,即启动过程中做的一件件事。

  总之,本书在看linux 完全剖析的过程中,能够起到一定的辅助作用,提醒大家从流程性的高度来理解源代码。

  《Linux内核设计的艺术》读后感(四):又被蒙了

  想学习了解Linux内核方面的知识,抱着虚心虔诚的态度鬼使神差的买了如题这本书。

  开始阅读...

  读完前言,读完第一章还没什么感觉,

  第二章开始感觉有点不对头,等读到50页彻底崩溃,要疯了。

  CPU 操作系统两个概念都搞混了,把中断处理机制乱讲一通......实在怀疑是计算机原理还没弄明白?!

  再往后看,完全没有逻辑的堆砌一番,搞不清要讲些啥

  作者是一群中科院的研究生,高材生???!!!外加一个专家教授导师。

  这导师是看过这本书,还是没看过,前者的话态度有问题,后者的话水平有问题。

  突然感觉又TM被蒙了。

  买本好的国产的技术书籍命中率咋就这么低呢。

  简直就是谋财害命,郁闷直至。

  硬着头皮再吸取点书中的可用之处吧。

  不抱怨了,就这个国情凑合看吧。

  《Linux内核设计的艺术》读后感(五):一些名词很不懂

  在图书馆看到了这本书, 翻了下。

  我觉得作者们在写这本书的时候都不知道有《understand linux kernel》和《linux kernel drivder》这两本书。

  首先是目录里的几个名词把我搞懵了。

  比如,“从main到怠速”, 坦白说,搞OS这么久了, 也看过了很多的大部头,我还不知道什么是“怠速”, 我猜测可能是CPU处于idle状态。

  再比如,“3.2 获取虚拟盘上的挂接点”, 用“挂载点(mount point)”会更好些吧。

  再比如,“主奴机制”, 好吧, 你赢了。

  然后,我就随便翻了下里面的内容, 一下翻到了第145页,“通过系统调用端口”, 不明白什么是系统调用端口, 我猜测作者可能是想表达syscall number, 即系统调用号。

  于是,我赶紧把这本书放回了原处。

  《Linux内核设计的艺术》读后感(六):0.11版原来真的是世界级的水平了~

  做推广不要太过火了吧

  如果要分析0.11版,赵炯博士的书朴实无华,看得出是作者心血之作,非常有诚意。

  国内的书现在总是显得推广的广告口号太虚了,“艺术”之词更有是相当有胆量去用啊~

  而且,豆瓣上给这本书捧上天的人还真多啊,肉麻的程度让你发指了

  +++++++++++++++++++++++++++++++++++++++++++++++++++

  时隔一年之后,我校图书馆终于引进这本书,昨晚我从头仔细看了一下,发现这本书的正确定位应该是一本教辅书,正统教材是赵博士的那本大部头(www.oldlinux.org).也就是说,如果你读着那本大部头有点迷糊找不着北了,可以参考这本教辅,此书(就我所读的boot那部分内容)抓住了主干内容,用比较“文科”的方法描述了代码的主要功能,但是也仅仅是文字描述和从0.11代码中摘抄代码而已,对于代码本身基本没有解释,而一些机器机制,例如开启A20,分段、分页等等内容,作者并没有作出解释。也就是说,本书的正确用法是,你首先还需要巩固相关基础知识,例如啃intel手册、赵博士大部头等等“教科书”,当然一开始你遇到大量的知识与细节机制时,肯定会找不到头绪,这时候这本教辅就派上用场了:抓住主线知识,帮你理清了线索,然后细节问题再返回到教学书上找答案。

  所以打算买此书的同学(当然是像我这样的初等读者)请注意订购此书的同时,不能期望一本教辅书就可以充当教科书让你掌握知识,手边还是要准备好其他的资料吧~

  :我一个比较不满的地方是,前面boot.s和setup.s文件用的是intel的汇编格式,不做什么解释到可以理解,但是一转到head.s代码时候,摘抄出来的代码是AT&T的格式,作者竟然也没有一点解释,感觉是不是有点傲慢了?

  ++++++++++++++++++++++++++++++++++++++++++++++++++++

  时隔多年之后,豆瓣竟然还在给发通知,还有人给这个帖子

  《Linux内核设计的艺术》读后感(七):转读者评论(来自China-pub)

  我从04年开始接触linux,《linux内核完全注释》是我的阅读内核的启蒙读本,那时候觉得linux很神秘,加上周围了解的同学很少,因此更加对linux产生了兴趣,在不到一年的时间里,我把书通读了好几遍,期间收获也不少。

  后来从事网络安全,由于工作的需要,我也转向linux更高版本内核的学习,当我拿起《linux内核情景分析》时,感觉不错,尽管内核代码已经很庞大了,但是由于有以前的底子,我觉得对于理解某个知识点或者某些处理流程来说仍然不是什么问题,也在几个linux的网站上解答网友的问题,得到了网友的力顶,自认为对操作系统有了很深的理解了。

  到了这个阶段时,我想很多人会有这样的想法(包括我自己):操作系统似乎也就是那么点东西,已经到了设备层了,还有什么是难的呢?换一个角度,这其实是这样的一个问题:研究操作系统有何用?我想,纵然绝大部分人不会为了设计操作系统而去研究操作系统,但是至少有一部分人想过这样的问题:linux内核源代码为什么是这样组织的呢?

  读了《linux内核设计的艺术》一书,首先很明显能感觉到这本书与其他书的区别是:作者始终是站在操作系统的设计角度或者是整个计算机体系的高度来讲解linux设计的。由此引发了以下种种问题的思考,比如BIOS与操作系统代码的“约定”,为什么会有进程0、进程1、进程2?缓冲区的意义等等。从没有哪本操作系统书会让你思考这样的问题,我觉得这不应仅理解为是作者讲解方式的独特,更应该把它看作是作者改变读者思考问题方式的良苦用心!

  其次,书中前面几章讲的都是具体的技术,由于之前看了《linux内核完全注释》,所以第一遍阅读此书时,很多地方只是大概的翻了一下。当读到第八章中作者对于linux设计思想“主奴机制”的阐述时,着实让我为之一振:噢,原来是这么一回事啊!脑子里突然像动画一样回顾了整个linux实现细节:初始化时内核是如何分页的,进程的线性地址的划分、进程页面的申请过程、进程间是如何进行切换的、系统调用的实现。。。。。。凡此种种技术竟然与作者所说的”主奴机制”如此之吻合!于是我又重新的翻阅了前面几个章节的内容,尽管也发现了一些打字错误,但有一点是值得肯定的:作者在讲解当中的技术时都尽可能将“主奴机制”的设计思想融入到其中。

  最后,我觉得我必须重头来把这本书认认真真地看几遍,当你脑子里有这些思想存在时,应该会有不一样的收获的,没准自己就可以提出一些操作系统设计的思路哈!Enjoy yourself!

  《Linux内核设计的艺术》读后感(八):看Linux 0.11的代码不如做MIT的JOS实验

  我刚好上了作者的课,需要买这本书。上课的时候有个实验,是改进或者实现自己的操作系统内核。当时我试图去改Linux 0.11的内核,发现这个内核里面硬编码的地方不少,而且上手的曲线非常陡峭,于是选择了跟着MIT的JOS实验去做。

  JOS实验是MIT公开课中的一个课程,在网上很容易搜到JOS课程的网页。这个实验搭建了一个基础的OS框架,让学生一步一步地实现OS中的内存管理、中断和异常处理、environment(类似进程的概念)的创建和调度、SMP支持、文件系统等功能。难能可贵的是,代码中的注释非常清晰易懂,对于理解操作系统的实现非常有帮助。做完这个实验之后,可以对操作系统的实现有一个整体的,又不失细节的理解。JOS还有一个特点就是它是一个微内核的系统,如果想要对比宏内核(比如Linux)和微内核,也是一个很不错的选择。

  最后我把实验做到了SMP支持这部分,虽然最后课程得分不怎么样,学到了自己想学的东西才是最重要的。

  《Linux内核设计的艺术》读后感(九):转读者评论(ChinaUnix一位资深版主的读后感)

  我从04年开始接触linux,《linux内核完全注释》是我的阅读内核的启蒙读本,那时候觉得linux很神秘,加上周围了解的同学很少,因此更加对linux产生了兴趣,在不到一年的时间里,我把书通读了好几遍,期间收获也不少。

  后来从事网络安全,由于工作的需要,我也转向linux更高版本内核的学习,当我拿起《linux内核情景分析》时,感觉不错,尽管内核代码已经很庞大了,但是由于有以前的底子,我觉得对于理解某个知识点或者某些处理流程来说仍然不是什么问题,也在几个linux的网站上解答网友的问题,得到了网友的力顶,自认为对操作系统有了很深的理解了。

  到了这个阶段时,我想很多人会有这样的想法(包括我自己):操作系统似乎也就是那么点东西,已经到了设备层了,还有什么是难的呢?换一个角度,这其实是这样的一个问题:研究操作系统有何用?我想,纵然绝大部分人不会为了设计操作系统而去研究操作系统,但是至少有一部分人想过这样的问题:linux内核源代码为什么是这样组织的呢?

  读了《linux内核设计的艺术》一书,首先很明显能感觉到这本书与其他书的区别是:作者始终是站在操作系统的设计角度或者是整个计算机体系的高度来讲解linux设计的。由此引发了以下种种问题的思考,比如BIOS与操作系统代码的“约定”,为什么会有进程0、进程1、进程2?缓冲区的意义等等。从没有哪本操作系统书会让你思考这样的问题,我觉得这不应仅理解为是作者讲解方式的独特,更应该把它看作是作者改变读者思考问题方式的良苦用心!

  其次,书中前面几章讲的都是具体的技术,由于之前看了《linux内核完全注释》,所以第一遍阅读此书时,很多地方只是大概的翻了一下。当读到第八章中作者对于linux设计思想“主奴机制”的阐述时,着实让我为之一振:噢,原来是这么一回事啊!脑子里突然像动画一样回顾了整个linux实现细节:初始化时内核是如何分页的,进程的线性地址的划分、进程页面的申请过程、进程间是如何进行切换的、系统调用的实现。。。。。。凡此种种技术竟然与作者所说的”主奴机制”如此之吻合!于是我又重新的翻阅了前面几个章节的内容,尽管也发现了一些打字错误,但有一点是值得肯定的:作者在讲解当中的技术时都尽可能将“主奴机制”的设计思想融入到其中。

  最后,我觉得我必须重头来把这本书认认真真地看几遍,当你脑子里有这些思想存在时,应该会有不一样的收获的,没准自己就可以提出一些操作系统设计的思路哈!Enjoy yourself!

  《Linux内核设计的艺术》读后感(十):转读者评论(来自China-pub)

  过去学过linux,这几年活没少干,回头想想那段还在学习linux0.11的时光,感觉很惆怅啊。前几天偶然看到chinapub首页挂了一本0.11的新书,感觉很是亲切啊,开始觉得书里印的挺漂亮就买了一本。说实话,即使我已经买了,我开始还对此书不以为然,现在对内核和驱动比较熟悉了,工作也能驾轻就熟,觉得只是对过去的一个缅怀而已。但是在我随便翻了翻之后,我觉得我可能小看他了。看的出来,作者真的下了功夫,美观不说了,图上竟然不自量力的标了很多数据结构的地址,明显是在环境里check过的,大致看了一下,数字感觉还是比较靠谱的,而且这种数据就算去哪抄一份估计也是够费劲的,何况目前我还没见过哪有。我大致看了书的主线,是按照操作系统自然的运行序组织的,当然后面也有作者设计的各部分的“大综合”,这帮作者确实味道很独特,这么写书在我玩linux的生涯中还没见过:-)这么写能把初学者从一开始就带进操作系统的整体架构中,虽然0.11结构确实不如目前应用的内核庞杂,但是对于初学的人来说,绝对是直接深入linux灵魂的一个版本了,有了基本概念和整体驾驭,入门的效率就会很高,然后多看看别的资料,多干干活,对从事这一行一定会有很大帮助。我觉得如果我当年有这本书,也许能至少缩短我那一年半的迷茫期早早就去实习了。

  嘿嘿,别说书后的作者里还真有一美女呀,还真挺漂亮的~ ... 怎么一翻书先关注这个...先汗自己一下。

  别说我是托,我可是花钱买了书的,这样当托是不也够花钱的啊,免砖~

评价:

[匿名评论]登录注册

评论加载中……