前言

前言

本书面向操作系统基础知识薄弱,但又想把操作系统搞清楚、喜欢刨根问底的技术人,在此向你们致敬,本书用诙谐幽默的语言,把深奥的操作系统尽量讲解清楚,读者在轻松阅读中就学通了深奥的知识,是一本难得的好书。

多数学习操作系统的读者都会有这样的感受:

(1)“太难了,对于操作系统这个庞然大物我简直无从下手”;

(2)“很后悔选了这门课(大学一些专业中操作系统是选修课),甚至不想学习计算机了”;

(3)“上课完全听不懂,我都不想继续听下去了”;

(4)“即使实验做出来了,由于只是完成了局部功能,我依然不明白操作系统是怎样运行起来的,甚至不知道自己在做什么”。

以上的感受我都有过,坦白说,这门课并不是很难,但想把这门课完全搞明白真不容易。我是个喜欢刨根问底的人,为了弄清楚这背后的真相,我花了大量时间学习课程之外的内容,甚至付出了惨痛的代价——大学中第一次考试不及格,操作系统这门课我是第二次才考过的。这确实很“讽刺”——操作系统不及格的人在写操作系统书籍!但转念一想,考试过了的同学并不代表能够写出操作系统,因为试卷上并不是在考如何写一个操作系统。和技术能力相比,卷面成绩并不重要。

想象一下,如果是爱因斯坦那样的天才给我们讲物理知识,我们会觉得物理更容易理解吗?肯定是不会的,因为在爱因斯坦眼中比较容易的内容也许对我们来说非常深奥,他用B解释A的时候也许会让我们更迷惑,因为B我们也不懂,这就是基础的问题了。幸运的是阅读本书时读者只要有C语言和部分汇编语言的基础就行了,涉及的其他方面的知识我都会详细介绍,并以更易懂的方式去解释技术难点,读者不必担心看不懂本书。

回忆一下学车的经历:教练让学员先踩离合器再挂档,然后再踩油门,车子就开动啦。如果学员总是学不会这些,有可能是学员根本不知道什么是离合器,或者不知道离合器的作用是什么。即使把这些操作背下来,也会对驾车感到心有余而力不足,可见,只有了解了背后的原理,才会知道自己在做什么,驾车才变得游刃有余。

以上情况对我们学习操作系统来说也同样存在,比如当老师介绍中断发生时的上下文保护时,我们更多的疑问不是如何保存CPU的上下文数据,而是想知道为什么在不同的特权级下会使用不同的栈,这背后的原理是什么,并且这是如何做到的。

诸如此类的疑问需要了解硬件原生支持的运行机制,因为很多操作都是硬件自动完成的,比如处理器进入0特权级时,会自动在任务状态段TSS中获得0特权级的栈地址,这不需要人工干涉,完全由处理器维护。我们想知道的是,硬件在背后自动完成了哪些工作,这样才便于我们理解操作系统的全貌。

操作系统受制于硬件的支持,很大程度上它的能力取决于硬件的能力,因此,要想全面理解操作系统,不仅需要了解上层软件的算法、原理、实现,还要了解很多硬件底层的内容。和硬件相关的知识是在微机接口电路中讲解的,而绝大多数读者在学习这门课时,根本不知道它有何用,只有学习操作系统课程时才用到它,因此,本书内容兼顾相关的硬件知识。

除硬件外,本书还把操作系统中的理论付诸于实践,让读者真正学到包含在操作系统中的实实在在的技术,比如在代码中实现了著名的生产者消费者问题,还有进程、线性、阻塞、信号量、锁、文件系统、目录、shell、管道等。各个章节的代码都可独立运行,方便调试,本书更让读者有成就感的是,我们最终完成的一个操作系统总共代码量只有几千行左右,极大地减少了操作系统源码阅读的工作量。

操作系统还是比较庞大的,因此,大部分介绍操作系统原理的书中,对各个部分都是分拆出来介绍的,这导致我们学习操作系统时犹如盲人摸象、管中窥豹。本书的封面是一个完整的大象的拼图,就像封面展示的那样,本书内容我们不再局部学习,而是把所有局部还原成一个整体,做出一个真正的操作系统。

为了让读者不再惧怕操作系统,同时也为了完成我自己的心愿,我辞职专心进行本书的编写,在此期间也曾拒绝了多份回报丰厚的工作,现在想想真是疯狂……苦了我的父母和女朋友,在这里跟你们说声抱歉,你们“纵容”我的偏执,真心不容易,辛苦啦,我爱你们!

感谢我在北京大学就读期间的Linux内核课程老师(同时也是我的研究生导师)荆琦教授和操作系统课程老师陈向群教授,很荣幸能够成为您们的学生,时至今日我常常回想起课堂上您们言传身教并为我解答问题的身影,您们渊博的知识和教学上严谨的态度深深影响了我,仅以此书向我这两位恩师致谢。

感谢父母给予我的理解和宽容,以后我一定加倍努力回报您们的养育之恩!

最后,感谢女朋友给予我的陪伴和照顾,在写此书的过程中我深深体会到:爱并不仅仅体现在相信对方一定能成功,更多是体现在支持对方去做想做的事,即使失败了也不会嫌弃。尽管在这漫长枯燥的19个月当中,如果没有你的“唠唠叨叨”本书早就写完了,但恰恰是这种“唠唠叨叨”下的不离不弃让我相信这世上还有真爱。

我爱你王小兔(对我女朋友的昵称),本书是我送给你的礼物。

本书中出现的“兄弟”“大伙儿”“同学”和“咱们”的称谓,是作者为了活泼写作风格故意为之,别无他意,在此说明一下。本书读者交流QQ群为:148177180,编辑联系邮箱:zhangtao@ptpress.com.cn。

作 者   

于北京大学图书馆

目录

相关技术

推荐用户