操作系统的学习是不容易的!操作系统成熟版本几千万上亿行代码,如果没有合适的学习方法是看不过来的,即使是linux0.11这样的万行级别的作品,也不容易看。
以操作系统为内容的国内外书本中,有一些是很有质量的,但是从易读性角度来说,都不容易。
本书的目标就是让读者只是看书就基本上可以理解什么事操作系统,如果还能做点习题和实验,那么会对操作系统的理解进入可以作为小组成员开发操作系统的级别。所以本书的第一目标是简单,不是内容简单,而是让读者觉的内容简单易学,第二是形成逻辑完备、训练完备的操作系统为内容的阅读作品。
本书把学习操作系统的人分为三类:第一类是类似领导或者非专业或者完全的初学者,他们的共同特点是不需要很多细节,但是要清楚知道是什么,为什么。针对这部分读者的内容标记为A类内容;第二类是希望深入理解操作系统的相关技术人员,他们希望从整体上和系统上认知操作系统;针对这部分读者的内容标记为B类内容;第三层给出代码级别的学习和实践内容,是给希望动手写操作系统这类人的产品。针对这部分读者的内容标记为c类内容。
作为一个阅读产品来说,这样的安排是希望目标客户分类更清楚, 不浪费读者时间。
一、 初识操作系统
1.1从程序运行的角度说什么是操作系统(A级别)
要说什么是操作系统的话,需要从什么是计算机说起。我们可以简单说,计算机就是运行程序的机器,程序是人类给机器的动作指示序列,机器根据这些指示,自动的连续的完成这些指示。用哈工大李志军老师的话说,计算机就是一个这样工作的机器:取指执行-取指执行-取指执行。。。
那么操作系统是什么呢?是帮助程序运行的程序,或者说,是帮助计算机能够更好完成取指执行--取指执行的程序。这种帮助在下图表达很清楚:操作系统作为覆盖在硬件上的第一层软件,服务于上层应用程序。
(本图来源:1.2 UNIX/LINUX体系结构 - DengSchoo - 博客园 (cnblogs.com))
那么服务啥了?
一句话:就是上层应用程序不需要面对真实的硬件,而是面对友好的、操作系统抽象出来的虚拟硬件。因为真实的硬件有太多的个性,如果写上层应用程序的人对这些硬件个性都要学习的话,不符合工业分工原则。举个例子,领导秘书抽象出某生产领域状况,报告给领导,领导根据这些信息做出领导工作,而对这个生产领域的更详细的参数、模型等等细节不需要了解,领导需要做的是领导层面的工作。
下篇题目:1.2操作系统做了什么?或者操作系统应该做什么?(B级别)