1 概述
现代的人们大多是这样认识计算机的:一个人盯着屏幕敲打着键盘,这就是在操纵计算机了。于是,屏幕和键盘就成了计算机的代表物了。更进一步了解计算机的人们知道,屏幕和键盘只不过是计算机的输出和输入而已,计算机的核心在一个机箱里,包括处理器、内存、主板、硬盘和电源等。所有这些构成了计算机的有形部分(实际上,这些部件也在越变越小)。再进一步,真正使用过计算机的人们还知道,光是计算机硬件还不够,还需要各种软件,日常用到的软件包括:办公软件、游戏软件、字典软件、上网软件、聊天软件以及防病毒软件,等等。正是有了这些软件,计算机用起来才这么有趣。所以,虽然软件并不有形(不过,存放软件的介质却是看得见摸得着的),但人们知道它们是切实存在的。那么,操作系统(Operating System)是什么呢?
就本质而言,操作系统也是一种软件,只不过,相对于一般的软件而言,有其特殊性。首先,操作系统往往是随机器配置的,人们常常认为这是机器本身的一部分。只有计算机专业人员或技术维护人员才会安装或更换操作系统。其次,所有的应用软件都建立在操作系统的基础之上,操作系统的发展本身也推动了应用软件的发展。一个众所周知的事实是,Windows操作系统的发展和普及,为大量的应用软件提供了得以存在的平台,各种家用软件也纷纷随之诞生。
操作系统是专门管理硬件资源的软件,计算机硬件本质上只提供计算和存储的能力,而操作系统则利用硬件的计算和存储能力,建立起一个抽象层。在现代操作系统中,这一抽象层包括任务或进程(或线程)、文件、设备或字节流等诸多概念以及相应的功能。基于操作系统所提供的抽象概念和功能,应用程序能够方便地完成其功能,并且无须直接操纵计算机的硬件。而且,现代操作系统也提供了多个任务共享硬件资源的能力,所以,应用程序并不独占硬件资源,而是以某些既定的方式来共享,这也为用户使用各种应用软件提供了极大的便利。
对于应用软件开发人员,不同种类操作系统的特殊性甚至决定了他们的职业范围。比如,UNIX平台的开发人员转到Windows平台上,需要经过相当一段时间的再学习过程;反之亦然。直接在操作系统上进行软件开发的程序员,必须非常清楚地了解操作系统所提供的抽象层,才能够编写出行之有效的软件来。在现代软件开发领域,其中一个分支是在系统无关的平台上进行软件开发。这里所谓的系统无关的平台是指,一个公共抽象层供上层软件在其上运行,因而上层软件与底下的操作系统平台无关。典型的例子是Java语言及其开发平台。这实际上是软件多层次化的体现。在本书中,我们仅关心直接建立在硬件之上的那一层软件,即传统意义上的操作系统。
本章将首先扼要地介绍操作系统的基础知识,然后介绍学习操作系统的一些必备知识。接下来讲述Windows作为一个操作系统的发展历史,以及Windows的内核版本。最后介绍操作系统领域的研究和进展。