【好文推荐】
第十三章--虚拟文件系统
你在使用操作系统的时候对于文件系统这个概念可能并不陌生,但是你知道为什么我们可以写一份代码可以在几乎所有不同的文件系统上执行。哈哈,当时我也不清楚,不过,看了这一章的内容后,明白了许多,注意,这里我说的是明白了许多,并不是说“我明白了”。因为,我并没有去查看实现这些通用系统调用的源码,我只是明白了为什么可以这样做,它是怎样执行的,但是我不懂是怎么实现的。在这本书里并没有介绍这些通用函数是怎样实现的,我认为作者是为了节省不必要的篇幅,因为这些内容显然超出了这本书的主题。
第十四章--块I/O层
什么是块?我们的计算机中都存在硬盘,硬盘最小的寻址单位叫做扇区,但是在计算机中,计算机对硬盘的寻址是多个扇区(一般是4个),而这多个扇区就被称作是“块”。这一章介绍的是内核的IO操作,其中的重点内容是IO调度策略,确实,就像书中说的一样,如果不存在这样的一组策略,那么即使是你的IO请求不多,也会使你的计算机性能急剧降低。可见,这些调度策略是多么的重要,所以,这一章的内容需要认真的学习,研究,这么重要的一章篇幅仍旧是不多,所以,需要把这一章弄明白去查一些资料也就显得很正常了,这里,我没有什么推荐的书籍,遇到不懂的就开始百度或者谷歌吧,这也是最快的学习方法。
第十五章--进程地址空间
第十二章我我介绍了需要好好看看内存管理那一章,因为后面这一章需要那一章的知识,这也体现了内容的呼应。在书内容的开始就介绍了进程,但是没有多做讨论,毕竟开始就不好理解容易让人失去看这本书的兴趣,所以,作者把它放在了这里,其实这样说可能不太准确,因为如果你认真学习过编程语言,那么当你的程序运行的时候你可以写出相应的代码测试进程的每一部分。既然这里说到了编程语言,我再说下语言的事,我喜欢用C,C++,Java写程序,Java没看过什么书,因为都是面向对象,所以,不用过多的去学习语言,我建议学习C和C++,看看下面的这两本书会是不错的选择,这两本书都偏向语言本身,而且都提供了较多的测试代码,适合语言的初学者。
第十六章--页高速缓存和页回写
记得上大学的时候看《计算机操作系统》这本书中提到过时间和空间局部性原理的时候用到了缓存,当时也提到了缓存查找用到了TLB(快表),不过,当时只是应付考试记住那些东西就行,现在看这本书的这一章感觉特别亲切,因为至少见过那些东西。然而,这一章介绍的内容比大学时候的那些要难的太多,作者在这一章中也费了好多笔墨,对这一章的描述很是清晰,建议应该好好这一章的内容,这是几乎所有的操作系统都需要实现的东西。
第十七章及结尾
十七章以后的内容我就没再翻了,而后面的那些内容我认为更合适于实战,所以,后面的内容并没有去研究了。
好吧,我给出一点读这本书的建议。不得不说,这本书介绍的内容较难,如果你只打算读一遍,那么建议你不要花时间了。其实这本书的每一章内容都可以编写出一本很厚的书,我们通常见到的介绍内核的书一般是一本书介绍一个子系统或者是整合成一本书,不过,那个厚度绝对不比《牛津词典》薄多少。而《Linux内核设计与实现》这本书仅有335页,Linux的诸多子系统大多分成了章节或者几章内容来介绍,而且我们可以看到每一章的内容大多都在20页左右,可见作者把内容精简了太多,几乎可以说是“字字珠玑”。所以,不花大量的时间很难把上面介绍的知识点弄懂,当然,如果你是Linux方面的专家,那么这句话不适合你。还有,由于Linux2.6内核很是庞大,所以,建议大家读这本书之前先看看简单的内核版本,我在这里首推0.11版,也就是Linus编写的第一个Linux系统,简单易学,而且也完整的包含了Linux的各个子系统。所以,这里我推荐最后一本书《Linux内核设计的艺术》,这本书以Linux0.11内核源码展开讨论,书中源码配合图解展开论述,非常适合内核初学者初探内核世界的奥秘,如下图所示:
说完了这些偏技术性的书之外,再说下Linux入门适合看的书,其实我感觉学习Linux没有那么难,但是需要你找到一个好方法,最好是有人指导,当然,如果没能找到人指导你,就看看下面这段话吧.
如果你想知道这个东西是怎么回事,你就去做,去看,去体会。所以,你最好在你的电脑上安装Linux系统,入门的话建议安装Ubuntu,非常简单也非常易用的操作系统。