《Linux内核完全剖析-基于0.12内核》书评之陈莉君

《Linux内核完全剖析-基于0.12内核》一书出版之后,机械工业出版社编辑希望我就此书抽空写一个书评。在我拿到这本书之前,尽管我已知晓作者写的基于0.11内核的书,但因为99年我带领学生阅读源代码时,直奔2.0内核,之后历经过2.2,2.4,2.6内核的变迁,而我现在的学生总是愿意查看最新版本的内核,因此,对于低版本的内核从心里有一种抵触情绪,认为那是一种过时的技术。
实际上,在我们早期阅读源代码的过程中,常常碰到一些难以捉摸的代码或语法,大多数时候,我们去Linux内核邮件列表(LKML)上去寻求答案,那样的答案,的确解了一时燃眉之急,但,这犹如在森林中探路,磕磕碰碰,尽管一条小径踏出,可后来者,依然要在费时费力中探索。那时,我有很多的设想,一是写一本系统介绍AT&T汇编的书,二是,写一本GUN C编程的书,三是写一本汇编、C以及底层硬件相结合应用的书,源代码取自Linux内核。这样的设想曾在脑海回绕多遍,但,最终,知晓其工作量之大,涉及面之广,非我毅力达及范围.
当我再次打开《Linux内核完全剖析-基于0.12内核》一书,阅读前几章之后,有一种豁然。这种厚重的知识积累,非一朝一夕,知晓作者曾经的知识积累经历,或许,能为读者打开一副立体的画卷。就我写书的体会而言,一本书的背后,抛却了太多无法纳入书中的内容。一封Email发给赵炯,很快得到他的回复:

我本科学的是电信专业,研究生才开始接触和学习计算机(PC/XT),攻读的是计算机通信方向。88年硕士毕业后就留校于上海铁道学院机械系任教,一直从事计算机基础方面的教学工作。两年后停薪留职去深圳一家港资软件公司工作,从事了近两年PC机底层NOVELL网兼容网络操作系统的研制和开发工作。其后回校边教书边从事计算机软硬件开发和商业活动。98年开始攻读博士学位,方向是计算机网络协议分析,2002年博士毕业后于同济大学机械学院机械电子研究所从事教学和科研工作。主要教授计算机通信和嵌入式开发应用的相关课程。
对Linux操作系统的爱好始于自己硕士研究生后期和毕业后对UNIX操作系统的兴趣。当时在学校图书馆无意中借到了一本英文版《Design of UNIX Operating System》,便开始自学起来,后来在学校顾伟楠老师的帮助下搞到了UNIX V6的源代码,于是就开始着迷于研究和分析源代码。期间收集了不少UNIX相关的资料,主要包括书籍《MINIX操作系统设计与实现》和能够运行于PC机上的XENIX操作系统和AT&T的SYSTEM V操作系统,安转运行过多种PC版本的UNIX克隆系统。由于V6运行于PDP-11系列机上,而我们又没有试验条件,因此在大致浏览过后就没有再深入学习下去,而是去从事计算机软件和硬件商业活动了。不过,对操作系统的痴迷热情并没有减退。在随后一段时间内一直关注着有关UNIX系统的发展和国内研究动态。其中,《计算机研究和发展》杂志社出版的一本有关V6剖析的专刊也让我获益匪浅,至今我还保留着这本专刊。
大概是在96年夏天,我在盗版碟片售卖点偶然(也是无意中)购得一张名为《》出的光盘,其中包括了完整的Linux1.0操作系统,当然也包括源代码。安装在486的机器上试验运行了一下,发觉它就是UNIX系统的克隆,这让我非常高兴。我想这可能就是我第一次接触Linux的时间了。此后开始专研其源代码,期间走了不少弯路,足足花了约3-4年时间才基本理解Linux的运行机制。此后市面上开始出现Redhat5.0、6.0等系统光盘,Linux操作系统也开始在国内悄悄流行起来。不久自己对Linux的起源和发展历史有了兴趣,于是又开始到处收集相关的文字资料和软件(一直到现在该兴趣仍然很浓厚)。
经过多年的关注和搜寻,已经得到了上GB的资料。由于收集到的这些有关早期Linux软件和文档等信息相对来讲比较完整,因此这些资料已经在几年前被kernel.org网站作了镜像和备份(mirrors.kernel.org/oldlinux/)。在收集过程中得到过多位国外内核开发人员的帮助,也得到过AST的协助(虽然他的MINIX与Linux早期有些过节)。
从学习UNIX原理到理解Linux系统的运作机制,自己的这段自学历程花了近10多年的时间。虽然并不是在不间断地学习UN*X,但自学期间所遇到的各种困难和走过的很多弯路让我联想到其他Linux爱好者也可能遇到的境地。因此在博士毕业后的2-3年时间内,我花了一些时间专门注释了Linux 0.1x(0.95)内核代码,并根据收集到的信息重复了Linus所做过的MINIX下开发Linux内核的试验,同时开设了一个相关网站(oldlinux.org)和论坛,为广大爱好者提供我收集的信息和注释的资料。后来应很多爱好者的要求,本人找到机械工业出版社,于2004年以书本的形式出版了我注释的资料,即书《Linux内核完全注释》。由于看该书一定需要掌握或参考一些基本信息,因此在一年后又出版了添加过基础知识的《剖析》一书。
0.12(或0.95)内核也是在2005年前就已经注释完毕,并在当年10月左右已经在台湾出版。此次在大陆出版有关该内核的书是为了提供一个既小巧又更为稳定的内核供大家学习参考。通过研究Linux发展历史可以知道,0.12是Linus独立编制的较为得意的Linux内核。当时爱好者已经能在其上运行自己开发的X窗口系统和简单联网程序。由于当时Linus认为0.12已经比较完善了,因此所开发的下一个内核的版本号就直接使用为0.95了。
以上仅是简单描述了我学习Linux操作系统的历程。其他有关Linux的早期信息可以直接从oldlinux.org网站获取。

一封朴素的Email,涵盖了作者从Unix、Minix到Linux的经历。在他踏实走过的每条小径上,我们读者去分享他曾留下的足迹!

《Linux内核完全剖析-基于0.12内核》书评之陈莉君相关推荐

  1. 《linux内核完全剖析:基于0.12内核》读书笔记一

    1. 下载linux0.12内核源代码 http://www.oldlinux.org/Linux.old/kernel/0.1x/ 下载任意一个都行. http://www.oldlinux.org ...

  2. <LINUX内核完全剖析:基于0.12内核> 笔记一

    gcc编译C程序过程

  3. Linux 0.12内核的内存管理基础

    在Linux 0.12内核中,为了有效地使用机器中的物理内存,在系统初始化阶段内存被划分成几个功能区域. Linux内核程序占据在物理内存的开始部分,接下来是供硬盘或软盘等块设备使用的高速缓冲区部分, ...

  4. Linux 0.12内核与现代内核在内存管理上的区别

    0.12内核的内存管理比较简单粗暴,内核只用了一个页目录,只能映射4G的线性空间,所以每个进程的虚拟空间(逻辑空间)只能给到64M,最多64个进程:每个进程都有对应的任务号nr,当一个进程需要分配进程 ...

  5. linux c语言每天的0~12:00随机执行操作

    linux c语言每天的0~12:00随机执行操作 代码片段 代码片段 #include <stdio.h> #include <time.h> #include <st ...

  6. linux指定内核版本升级,Ubuntu 14.0 升级内核到指定版本

    1.卸载现有内核 sudo apt purge linux-headers-* linux-headers-*-generic linux-image-*-generic linux-image-ex ...

  7. Linux内核0.12完全注释

    推荐一本书 Linux 0.12内核完全注释 先把麻雀解剖了,再去研究老鹰和飞机可能会更好. 现在市面的很多书籍都是基于比较新的内核讲解的,2.6的内核或者4.4的内核,因为内核版本越高,里面的东西就 ...

  8. linux0.11内核完全剖析 - ll_rw_blk.c

    声明: 参考<linux内核完全剖析基于linux0.11>--赵炯    节选 1.功能描述 该程序主要用于执行低层块设备读 / 写操作,是本章所有块设备与系统其它部分的接口程序.其它程 ...

  9. linux opensuse,又一linux发行版发布:openSUSE 15基于Linux 4.12内核正式发布

    导读 openSUSE 项目组于今日放出了 openSUSE Leap 15,其基于即将到来的 SUSE Enterprise Linux 15 系列,包含了专为重度用户而设计的更新组件和技术. SU ...

最新文章

  1. linux下tomcat无法访问问题(换一种说法:无法访问8080端口)
  2. python下载安装教程图解-一招解决:各种版本的Python下载安装教程
  3. 【嵌入式】C语言高级编程-可变参数宏(12)
  4. 开箱即用的安全方案:MaxCompute数据安全方案介绍
  5. flash与js交互
  6. WebNN 人物检测、人脸识别、超分辨率、图像字幕、情感分析、噪声抑制
  7. python+selenium自动化测试环境搭建
  8. MySQL 开启二进制日志记录
  9. 28.MySQL Variables
  10. 读过的书,记录一下,不要忘记提高自己
  11. IP地址资源的分配和管理
  12. 【项目篇- 封面后目录前的核心内容、优势展示部分如何打磨?(超全图文总结建议)】创新创业竞赛项目计划书、新苗国创(大创)申报书
  13. javascript 中时区知识的整理 UTC GMT
  14. html的表格怎么设置样式,html 静态表格样式的设置
  15. linux中怎么连接wifi密码,Linux终端中连接WiFi的方法
  16. tp5.1 保利威视 云课堂 三分屏 PC直播DEMO(不适合普通直播)
  17. Mac电脑更新失败解决方法
  18. matlab hdf5,无法使用最新的HDF5打开matlab文件
  19. 西南交通大学计算机应用基础第1次作业,计算机系统基础第二次作业
  20. rs_D455相机内外参标定+imu联合标定

热门文章

  1. 三星 4521 linux 驱动下载,三星scx-4521f驱动下载_三星scx-4521f驱动官方下载-太平洋下载中心...
  2. Conway‘s Law
  3. everything 下载与安装
  4. Winform知识扩展-------右键菜单与InputBox弹出式输入框
  5. mysql 查询前面显示序号1 2 3 4 5 ......等
  6. iOS开发之Objective-C(面试篇)-李飞-专题视频课程
  7. 酷播云获取播放视频地址方法实例教程
  8. 新加装的硬盘,装上系统后发现EFI分区没有被创建,还是用旧硬盘的EFI分区
  9. 服务器无盘网卡设置,安装无盘时各种网卡最佳设置
  10. 个人工作、学习常用网站