By: Ailson Jack
Date: 2018.08.31
个人博客: http://www.only2fire.com/
本文在我博客的地址是:http://www.only2fire.com/archives/68.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。
1、选择《Linux内核完全注释》的理由
从现在起,我打算学习Linux内核,作一个基本的了解和入门吧。在网上也看了许多国内外的一些经典书籍的评价,最后我还是选择阅读《Linux内核完全注释》这本书,作为一个基础入门,这本书在网上的评价也还可以。
这本书讲解的Linux内核版本是Linux 0.11,虽然内核版本很低,但是作为学习来说应该还是可以的,该内核已经能够正常的编译运行,并且其中已经包括了Linux工作原理的精髓。由于Linux 0.11内核不超过2万行代码量,因此可以完全的通过一本书进行了解和学习。正是因为Linux 0.11内核代码量小,这本书对Linux 0.11内核的全部代码进行了注释,便于读者学习和理解。
为了让读者对所研究的系统有感性的了解,并能通过实验来加深对原来的理解,作者还专门重建了基于该内核的可运行的Linux 0.11系统,因为其中含有GNU gcc编译环境,因此使用该系统也能做一些简单的开发工作。
当然,使用早期内核作为学习的对象也有不足之处。所选用的Linux 0.11内核,不包含对虚拟文件系统VFS的支持、对网络系统的支持,仅支持a.out执行文件和对其他一些现有内核中复杂子系统的说明。
2、资料传送门
下面列举一下书中提供的一些资料链接,也方便以后自己的查找吧:
http://oldlinux.org/Linux.old/images/:该目录中含有已经制作好的内核映像文件bootimage和根文件系统映像文件rootimage。
http://oldlinux.org/Linux.old/bochs/:该目录中含有已经设置好的运行在计算机仿真系统bochs下的Linux系统。
http://oldlinux.org/Linux.old/Linux-0.11/:该目录中含有可以在Linux 0.11系统中使用的其他一些工具程序和原来发布的一些安装说明文档。
http://oldlinux.org/Linux.old/kernel/0.1x/:可以在这里下载本书讲解的Linux 0.11内核源码,文件名:linux-0.11.tar.gz。
3、内核源码目录结构
整个Linux 0.11内核源代码的目录结构如下图所示:
本书内容可以分为5个部分。第1部分从第1章至第4章是基础知识部分。操作系统与所运行的硬件环境密切相关。如果想彻底理解操作系统运行全过程,那么就需要了解它的硬件运行环境,尤其是多处理器多任务运行机制。这部分较为详细的介绍了微型计算机硬件组成、编制Linux内核程序使用的编程语言以及Intel 80x86保护模式下的编程原理。第2部分包括第5章至第7章,描述了内核引导启动和32位运行方式的准备阶段,作为学习内核的初学者应该全部进行阅读。第3部分从第8章至第13章是内核代码的主要部分。其中第8章内容可以作为阅读这部分后续章节的主要线索来进行。第14章到第16章是第4部分内容,可以作为阅读第3部分源代码的参考信息。最后一部分仅包括第17章内容,其中介绍了如何使用PC机模拟软件系统Bochs针对Linux 0.11内核进行各种实验活动。
Linus在最初开发Linux操作系统内核时,主要参考了3本书。一本是M.J.Bach著的《Unix操作系统设计》,该书描述了UNIX System V内核的工作原理和数据结构。Linus使用了该书中很多函数的算法,Linux内核源代码中很多重要函数的名称都取自该书。因此在阅读《Linux内核完全注释》时,这是一本必不可少的内核工作原理方面的参考书籍。另一本是John H.Crawford等编著的《Programming the 80386》,是讲解80x86下保护模式编程方法的好书。还有一本就是Andrew S.Tanenbaum著的《MINIX操作系统设计与实现》一书的第1版。Linus主要使用了该书中描述的MINIX文件系统1.0版,而且在早期的Linux内核中也仅支持该文件系统,所以在阅读本书有关文件系统一章内容时,文件系统的工作原理方面的知识完全可以从Tanenbaum的书中获得。
排版更好的内容见我博客的地址:http://www.only2fire.com/archives/68.html
注:转载请注明出处,谢谢!^_^