读这本书之前强烈建议先读一读《深入理解计算机系统》,在《深入理解计算机系统》一书其实涉及到了不少操作系统的核心概念,包括进程、线程、存储器结构、虚拟内存。我感觉《现代操作系统》中的内容特别多,但讲的没有《深入理解计算机系统》那样清晰易懂,如果之前没有看《深入》的话,我感觉关于虚拟内存和cache这样的内容比较不好理解。《现代操作系统》的优点就是内容特别丰富,看书的块头就知道了,英文版的有1000多页,而且文字密集,看得我略感吃力啊,作者用的句子有些真不好理解,捉急啊,有些东西偏西方化,相比之下《深入》就简单多了,用语通俗易懂,中西通杀。
我看的是第三版,貌似作者说这一版相比之前两版调整比较大,把关键章节都提前讲了,操作系统的核心内容就是:Processes and Threads, Memory Management, File Systems, Input/Output.这些内容都放在前面的章节讲了,我感觉整本书也就这几章还有DeadLocks那章要好好看一下,后面的几章感觉讲的太泛了,总感觉没有个重点,感觉属于介绍性质,浅尝辄止,我也没有看的很仔细,最后面的三个案例研究关于 Linux要好好看一下,感觉Linux的实现跟这本书前面讲的内容联系更紧密一些,windows那一章看的捉急,就扫一扫就看过去了,讲Symbian OS 的那章基本没怎么看。最后一章是作者结合自己的经验介绍了实现一个操作系统需要考虑的问题,作者也是大牛,Linus (linux之父)就是受到作者写的Minix操作系统的启发而实现最开始的Linux内核的。我觉得给我帮助比较大的时作者关于管理操作系统这样的大型软件项目的讨论,原来人多也不是那么好办事的,Coding只是软件开发中最容易的环节,每个软件项目还必须有一个chief man, 以后有机会还要看一看《The Mythical Man Month》(人月神话)这本书。
如果要我说操作系统最重要的一个思想是什么的话,我觉得应该是——Abstraction(抽象),抽象的概念的操作系统的实现中体现的淋漓尽致,进程,文件系统,虚拟内存都是一种抽象,作者也反复强调抽象的重要性,作者在谈到实现操作系统时首先要求的就是要定义抽象。好的抽象可以使之后的工作更加简单,如虚拟内存这样的抽象实在是太伟大了,没有它真是难以想象要在内存中管理如此之多的进程而彼此之间又不能互相影响是件多么复杂的事情。
在线操作系统练习网站:http://www.pearsonhighered.com/tanenbaum/
(感觉写东西还是行啊,总觉得思路不清晰,还要好好努力了,接下来看Weiss的《Data Structure and Algorithm Analysis In C》,加油!)