陈莉君Linux内核之旅

您的位置 >> 随笔

《Linux内核完全剖析》书评之(二)翔实的基础

推荐给好友
打印
加入收藏
文章出处:与非网 更新于2009-08-14 00:22:37

很多初学者会问,Linux内核从何入门?我也曾经摸索着怎样才能把门外者领进探究内核的大门。但,这么多年下来,没有找到特别的捷径,每一条入门路上的门槛都不同,但有些槛是必须跨越的。(以下把《Linux内核完全剖析》简称《剖析》)
   
   门槛之一:硬件基础知识。
    对于大多数计算机专业出身的人来说,可能学过微机原理,计算机原理,计算机接口等课
程。尽管学过,但,当仅仅为学而学时,那些躲在书本上的知识,完全失去了活力,反而成为折磨大家的文字狱,一个个知识的孤岛被大家硬是塞进脑子里,所谓的“学以致用”也只能在做作业中体会一下而已。
   从计算机的体系来说,软硬件系统是一个联动的系统,更是一个动态变化着的实体。让冷
冰冰的硬件变得活力无限的,首先是操作系统,其次是其他软件。从另一个角度说,操作系统赖以存在的物质基础是硬件,因此,阅读内核源代码,首先要跨越的是相关硬件知识。
   在硬件庞大繁杂的体系中,又该了解哪些?从操作系统的角度看,操作系统只与硬件的接
口打交道。因此,《剖析》一书第二章对微计算机基本组成的介绍,可以使读者在有限的篇幅中了解相关知识。

  门槛之二: 汇编及GNU C语言
   
    如果说硬件知识是躲在代码背后,隐约可见的栅栏,那么,汇编以及GNU的C代码,常常会让阅读者望而却步。
     就我们熟悉的X86体系结构而言,那些带%的寄存器,让原本普通朋友变为了陌生人。但,如果我们被一件%的外衣所迷惑,那曾经所学的知识大厦会轰然 倒塌。而实际上,从我们熟悉的Intel汇编格式过度到AT&T的汇编格式,只是花费时间而已。当把这些知识融入内核代码,那才找到了所学得以致 用的场景。
   很多边缘性的知识,是现有计算机书无法纳入其中的。例如 C与汇编的互相调用,C函数本身的调用机制,这些躲在代码背后的执行机制,我们通常并不需要关注它。但,作为操作系统,其主要职责之一就是执行程序,因 此,这些机制,以及目标文件的格式、程序如何连接等等问题,是内核代码阅读者无法回避,且必须于脑子中形成一个清晰画面的。《剖析》一书第三章,对这些内 容结合内核代码的详尽介绍,为代码阅读者,不管是读0.12内核,还是最新的2.6,都提供了触手可得的翔实资料。


门槛之三:保护模式以及编程
    99年我们阅读2.0版内核源代码时,首先阅读的第一本书是《Unix下80386保护模式的编程》,其保护模式之复杂,曾经使我们感到第一根骨头的难 啃。但后来,在分析Linux内核原代码的过程中,发现Linux适度地使用了intel的保护模式,因此,在我的《Linux操作系统原理与应用》一书 中,对其进行了简化,只讲述了与Linux相关的部分。而《剖析》一书的第四章,对保护模式的详尽描述,为嵌入式开发者,以及在此基础上编写自己的启动 程,提供了代码级的参考。在理解这些内容的基础上,可以全然采取拿来主义。

   在《剖析》一书中,这些相关基础知识占整个内容的1/6。读者在阅读时,可以逐行阅读,这是提升自己毅力的过程,也可以围绕某一方面的疑惑,挑选感兴趣部分阅读。

发布广告