第3章 计算机软件系统
计算机是由硬件系统和软件系统两部分组成的,如图3-1所示。硬件系统是指构成计算机系统各功能部件的集合。那什么是计算机软件(Computer Software)呢?广义上说,软件是指计算机系统中的程序及开发、使用和维护程序所需要的文档的集合。本章主要介绍计算机软件系统。通过对系统软件和应用软件的功能分析,尤其是对操作系统的详细讲解,从而深刻理解软件系统在计算机系统中的重要地位。
图3-1 计算机系统的组成结构
本章学习目标
- 理解计算机软件的基本概念及软件和程序的关系。
- 掌握软件系统的分类、系统软件和应用软件的概念及区别。
- 掌握操作系统的基本概念及其在计算机系统中的地位。
- 掌握操作系统的基本特征、基本功能和基本类型。
- 了解几种典型的计算机操作系统的主要特点。
3.1 计算机软件概述
3.1.1 什么是软件
软件,是指在硬件系统上运行的各种程序及相关资料。它是为了充分发挥硬件结构中各部件的功能和方便用户使用计算机而编译的各种程序,不仅包括可以在计算机上运行的程序,还包括与程序相关的文档。简单地说,软件就是程序加文档的集合体。软件是用户与硬件之间的接口界面,用户主要是通过软件与计算机进行交流的。
3.1.2 软件的分类
计算机系统的软件极为丰富,总体上可以分为系统软件和应用软件两大类。
系统软件为使用计算机提供最基本的功能,主要负责管理计算机系统中各种独立的硬件,使它们之间可以协调工作。系统软件包括操作系统、语言处理程序、数据库管理系统和作为软件研究开发工具的编译程序、调试程序、装配程序、连接程序和测试程序等。其中,操作系统是最核心的软件。计算机中必须装入操作系统才能工作。所有的软件(系统软件和应用软件)都必须在操作系统的支持下才能安装和运行。
应用软件是指用户自己开发或外购的能满足各种特定用途的应用软件包,如图形软件、Word文字处理软件、Excel表格处理软件、财务软件、计划报表软件、辅助设计软件和模拟仿真软件等。
值得一提的是,系统软件不针对某一特定应用领域,而应用软件则相反,不同的应用软件根据用户和应用领域提供不同的功能。另外,尽管将计算机软件划分为系统软件和应用软件,但这种划分并不是一成不变的。一些具有较高价值的应用软件有时也归入系统软件的范畴,作为一种软件资源提供给用户使用。例如,多媒体播放软件、文件解压缩软件、反病毒软件等就可以归入系统软件之列。
3.2 系 统 软 件
系统软件是支持计算机系统正常运行并实现用户操作的那部分软件,是控制和维护计算机系统资源的各种程序的集合。这些资源包括硬件资源与软件资源,如对CPU、内存、打印机的分配与管理;对磁盘的维护与管理;对系统程序文件与应用程序文件的组织与管理等。
系统软件一般由计算机生产厂家或软件开发人员研制,用户可以使用,但一般不随意修改。其中一些系统软件程序,在计算机出厂时直接被写入ROM芯片,如系统引导程序、基本输入输出系统(BIOS)、诊断程序等;还有一些直接安装在计算机的硬盘中,如操作系统;也有一些保存在活动介质上供用户购买,如语言处理程序。
系统软件主要包括操作系统、语言处理程序、数据库管理系统和各种服务性程序等,其核心是操作系统。
3.2.1 操作系统
为了使计算机系统的所有资源(包括CPU、存储器、各种外部设备以及各种软件)协调一致、有条不紊地工作,就必须由一个软件来进行统一管理和统一调度,这个软件称为操作系统。
操作系统的功能是管理计算机系统的全部硬件资源、软件资源及数据资源,使计算机系统所有资源最大限度地发挥作用,为用户提供方便、有效、友好的服务界面。操作系统是直接运行在裸机上的最基本的系统软件,是系统软件的核心,任何其他软件都必须在操作系统的支持下运行。
典型的操作系统大致由以下5个功能模块组成。
1.处理机管理模块
处理机管理包括进程控制和处理机调度。该功能模块能够对处理机的分配和运行进行有效的管理。
2.存储管理模块
存储管理的任务是对内存资源进行合理分配。该模块能够对内存进行有效的分配和回收管理,提供内存保护机制,避免用户程序间的相互干扰。
3.设备管理模块
设备管理的任务是解决设备的无关性,使设备使用起来方便、灵活,进行设备的分配和传输控制,改善设备的性能,提高设备的利用率。
4.文件管理模块
文件管理的任务是完成对文件存储空间的管理、目录的管理、文件的读写管理、文件的共享和保护。
5.作业管理模块
作业管理的任务是为用户提供一个使用系统的良好环境,使用户能有效地组织自己的工作流程,并使整个系统能够高效地运行。
实际的操作系统是多种多样的,根据侧重面和设计思想的不同,操作系统的结构和内容也存在很大的差别。对于功能比较完善的操作系统,通常都具备上述5个功能模块。
3.2.2 语言处理系统
因为有了程序,计算机系统才能自动连续地运行,而程序是由程序设计语言编写的。程序设计语言是人与计算机之间进行对话的一种媒介。人通过程序设计语言,使计算机能够“懂得”人们的需求,从而达到为人们服务的目的。
程序设计语言通常分为机器语言、汇编语言和高级语言。
1.机器语言(Machine Language)
在计算机中,指挥计算机完成某个基本操作的命令称为指令。机器语言是直接用二进制代码表达机器指令的计算机语言。它是计算机唯一可以识别和直接执行的语言。
一条指令由操作码和操作数组成。每条指令都有一个唯一的二进制代码与之对应。指令的二进制代码通常随CPU型号的不同而不同(同系列的CPU一般向下兼容)。
机器语言的特点:机器语言是一种面向机器的语言,占用内存小、执行速度快。但是用机器语言编写程序是一项十分繁琐的工作,每条指令都是“0”或“1”的代码串,难以记忆,并且阅读检查和调试都比较困难,因此通常不用机器语言直接编写程序。
2.汇编语言(Assembly Language)
汇编语言是面向机器的程序设计语言,它使用助记符来表示机器指令,即将机器语言符号化,因此也称汇编语言为符号语言。
汇编语言的指令与机器语言的指令基本上是一一对应的,只不过机器语言的指令直接用二进制代码,而汇编语言的指令是助记符。这些助记符(如加法指令ADD)一般是人们容易记忆和理解的英文缩写。
汇编语言的指令可分为硬指令、伪指令和宏指令3类。硬指令是和机器指令一一对应的汇编指令。伪指令是根据汇编语言的需要而设立的。它的作用是指示汇编程序完成某些特殊的功能。宏指令是指用硬指令和伪指令定义的可在程序中使用的指令。一条宏指令相当于若干条机器指令,使用宏指令可以使程序简单明了。
用汇编语言编写的程序称为汇编语言源程序,机器无法执行,必须用计算机配置好的汇编程序把它翻译成机器语言目标程序,机器才能执行。汇编语言的汇编过程如图3-2所示。
图3-2 汇编过程示意图
汇编语言的特点:与机器语言相比,汇编语言在编写、阅读、记忆、调试等方面有很大的进步,但由于汇编语言与机器指令具有一一对应的关系,实际上是机器语言一种符号化的表示,因此不同CPU类型的计算机的汇编语言是互不通用的。而且由于汇编语言与CPU内部结构关系紧密,要求程序设计人员掌握CPU内部结构寄存器和内存储器组织结构,所以对一般人来说,汇编语言仍然难学难记。
在计算机程序设计语言体系中,由于汇编语言与机器指令的一致性和与计算机硬件系统的接近性,通常将机器语言和汇编语言统称为低级语言。
3.高级语言
高级语言是用数学语言和接近于自然语言的语句来编写程序,人们更易于掌握和编写,而且它不是面向机器的语言,因此具有良好的可移植性和通用性。
用高级语言编写的程序不能直接被计算机识别,需要通过一些编译程序或解释程序将其翻译成机器语言的目标程序才能被执行。这种翻译过程称为编译,如图3-3所示。
图3-3 编译或解释过程示意图
计算机将源程序翻译成机器指令时,通常分为两种翻译方式:一种为编译,另一种为解释。编译方式首先把源程序翻译成等价的目标程序,然后再执行此目标程序。而解释方式是把源程序逐句翻译,翻译一句执行一句,边翻译边执行。解释程序不产生将被执行的目标程序,而是借助于解释程序直接执行源程序本身。一般将高级语言程序翻译成汇编语言或机器语言的程序称为编译程序。
高级语言的特点:高级语言是一种面向问题的计算机语言。在编写程序时,用户不必了解计算机的内部逻辑,而是主要考虑解题算法和步骤,并把解题的算法和步骤通过语言输入计算机,计算机就可以按照要求完成相应工作。高级语言具有标准化程度高、便于程序交换、可轻易优化、通用性强等优点。
随着计算机的发展,高级语言的种类也越来越多,目前已达数百种。常用的高级语言有Basic语言、Pascal语言、C语言、C++语言、Java语言和C#语言等。
3.2.3 数据库管理系统
随着计算机技术在信息管理领域的广泛应用,用于数据管理的数据库管理系统应运而生。
数据库系统(DataBase System,DBS)是一个复杂的系统,通常所说的数据库系统并不单指数据库和数据库管理系统本身,而是指将它们与计算机系统作为一个总体而构成的系统。数据库系统通常由计算机硬件、操作系统、数据库管理系统、数据库及应用程序组成。
数据库(DataBase,DB)是按一定方式组织起来的数据的集合,它具有数据量大、数据冗余度小、可共享等特点。
数据库管理系统(DataBase Management System,DBMS)的作用是管理数据库,一般具有建立、编辑、修改、增删数据库内容等对数据的维护功能;对数据的检索、排序、统计等使用数据库的功能;友好的交互式输入/输出功能;使用方便、高效的数据库编程语言的功能;允许多用户同时访问数据库的功能;提供数据独立性、完整性和安全性保障的功能。
不同的数据库管理系统是以不同的方式将数据组织到数据库中的。组织数据的方式称为数据模型。数据模型一般分为3种形式:层次型(采用树形结构组织数据)、网状型(采用网状结构组织数据)、关系型(以表格形式组织数据)。
目前,常用的数据库管理系统有Microsoft Office Access、Visual FoxPro、SQL Server、Oracle、DB2和MySQL等。
3.2.4 服务性程序
服务性程序是一类辅助性的程序,是为了帮助用户使用和维护计算机,向用户提供服务性手段而编写的程序。服务性程序通常包括编辑程序、调试程序、诊断程序、硬件维护和网络管理程序等。
其中,编辑程序、调试程序、诊断程序用来辅助用户编写程序。为了更有效、更方便地编写程序,将编辑程序、调试程序、诊断程序以及编译或解释程序集合成为一个综合的软件系统,为用户提供完善的集成开发环境,这个软件系统称为软件开发平台IDE(Integrated Develop Environment)。例如,Visual Studio.NET、Visual C++、Delphi等通常都是常用的IDE软件。
网络管理程序的主要功能是支持终端与计算机、计算机与计算机以及计算机与网络之间的通信,提供各种网络管理服务,实现资源共享和分布式处理,并保障计算机网络的畅通无阻和安全使用。
3.3 应 用 软 件
计算机软件系统中,除了系统软件以外的所有软件都统称为应用软件。应用软件是由计算机生产厂家或软件公司为支持某一应用领域、解决某个实际问题而专门研制的应用程序,包括科学计算类软件、工程设计类软件、数据处理类软件、信息管理类软件、自动控制类软件、情报检索类软件等。例如,文字处理类软件Office、WPS;信息管理类软件Access数据库、MySQL数据库;辅助设计软件AutoCAD、CAXA;媒体播放软件Windows Media Player、RealPlayer;图形图像软件CorelDraw、3D MAX、Maya、Photoshop;数学软件MATLAB;杀毒软件诺顿、卡巴斯基、江民、瑞星等。
根据软件的应用领域,我们将应用软件分为通用软件和专用软件两大类。通用软件的应用范围很广,可以不分领域地应用,如Office、WPS等;而专用软件则是有针对性地对于某些专业领域而开发的软件,如超市收银软件、高校学籍管理系统等。
3.3.1 通用软件
Office办公自动化软件是现代办公室使用率非常高的一款办公处理软件,主要包括文字处理软件Word、表格处理软件Excel,以及演示文稿软件PowerPoint等。
1.文字处理软件
文字处理软件是办公室软件的一种,主要用于文档的编辑、修改、保存、打印等。用户通过文字处理软件,可以将文字输入到计算机、存储在外存中,需要时可以对输入的文字进行修改、编辑,并能将输入的文字以多种字体、多种字形及各种格式打印。
文字处理软件的发展和文字处理的电子化是信息社会发展的标志之一。现有的中文文字处理软件主要有微软公司的Word和金山公司的WPS。Word依靠Windows的绑定而世界化流行。
Word是微软公司推出的文字处理软件。它继承了Windows友好的图形界面,可方便地进行文字、图形、图像和数据的处理,制作具有专业水准的文档。Word 2010的窗口如图3-4所示。
图3-4 Word 2010窗口视图
WPS(Word Processing System,文字处理系统)是金山软件公司开发的一种办公软件,最初出现于1989年。由于其简单、易用,集编辑与打印于一体,具有丰富的全屏幕编辑功能,而且还提供了各种控制输出格式及打印功能,使打印出的文稿既美观又规范,因此在国内受到各行各业的普遍欢迎。
2.表格处理软件
表格处理软件主要用来处理各式各样的表格。它可以根据用户的要求自动生成各种表格,表格中的数据可以输入也可以从数据库中取出。可根据用户给出的计算公式,完成繁琐的表格计算,计算结果自动填入对应栏目中。如果修改了相关的原始数据,计算结果栏目中的数据也会自动更新,不需要用户重新计算。一张表格制作完成后,可存入外存,方便以后重复使用,也可以通过打印机输出。目前,最常用的表格处理软件是微软公司的Excel。
Excel不仅具有强大的数据组织、计算、分析和统计功能,还可以通过图表、图形等多重形式对处理结果加以形象地显示,从而更方便地与Microsoft Office软件中的其他组件相互调用数据,实现资源共享。Excel 2010的窗口如图3-5所示。
图3-5 Excel 2010窗口视图
3.演示文稿软件
PowerPoint是目前最常用的一种演示文稿软件,用于制作和演示多媒体投影片。演示文稿中的每一页称为幻灯片,每张幻灯片都是演示文稿中既相互独立、又相互联系的内容。将制作好的幻灯片集合起来,就形成了一个完整的演示文稿。利用PowerPoint,可以非常方便地制作各种文字,绘制图形,如加入图像、声音、动画、视频影像等各种媒体信息,并根据需要设计各种演示效果。上课时,老师只需轻点鼠标,就可以播放制作好的一幅幅精美的文字和画面(也可按事先安排好的时间自动连续播放)。用户不仅可以在投影仪或者计算机上进行演示,也可以将演示文稿打印出来,制作成胶片,以便应用到更广泛的领域中。PowerPoint 2010的窗口如图3-6所示。
图3-6 Powerpoint 2010 窗口视图
Office系列的PowerPoint软件目前的主流版本是PPT 2010和PPT 2013。
除了PowerPoint外,还有一些多媒体制作软件,如Action、ToolBook、Authorware等。
Action也是一种面向对象的多媒体创作工具,既可用来制作投影演示,亦可用于制作简单的交互式多媒体课件。与PowerPoint相比,Action的交互功能大大增强,可通过定义“热字”按钮等实现主题跳转,还可以制作简单的动画,操作方法也比较简单,适用于初学者或者制作功能简单的多媒体课件时使用。
ToolBook是美国Asymetrix公司推出的一种面向对象的多媒体开发工具,同该软件名称一样,用ToolBook制作多媒体课件的过程就像写一本书。这种“电子书”的制作尽管稍显复杂,但表现力强、交互性好,制作的节目具有很大的弹性和灵活性,适用于创作感丰富的多媒体课件和多媒体读物。现在最新的版本是ToolBook10.0。
Authorware是一种基于流程图的可视化媒体开发工具,它和ToolBook一起,成为多媒体创作工具事实上的国际标准。Authorware中的整个制作过程以流程图为基本依据,非常直观,且具有较强的整体感,制作者通过流程图可以直接掌握和控制系统的整体结构。Authorware共提供了10种系统图标和10种不同的交互方式,被认为是目前交互功能最强的多媒体工具之一。该工具软件和Action同是美国Macromedia公司的产品。
除了上述介绍的几种软件外,常用的多媒体创作工具还有国外的Director、国内的摩天、银河等,它们各自都有不同的特点,用户可以根据开发要求、个人喜好以及现有条件加以选择。
3.3.2 专用软件
专用软件指的是用在特定的某些行业或者有着特殊专业用途的软件,并不是对绝大多数计算机使用者有用。
1.辅助设计软件
计算机辅助设计(Computer Aided Design,CAD)技术是近20年来最具成效的工程技术之一。由于计算机有快速的数值计数、较强的数据处理以及模拟能力,因此目前在汽车、飞机、船舶、超大规模集成电路VISI等的设计、制造过程中,CAD占据着越来越重要的地位。计算机辅助设计软件能高效地绘制、修改、输出工程图纸。设计中的常规计算帮助设计人员寻找较好的方案。使设计周期大幅度缩短,而设计质量却大为提高。该技术能将各行各业的设计人员从繁琐的绘图设计中解脱出来,使设计工作计算机化。目前,常用的计算机辅助设计软件有AutoCAD、CAXA、Photoshop等。
2.实时控制软件
在现代化工厂里,计算机普遍用于生产过程的自动控制。例如,在化工厂中,用计算机控制配料、温度、阀门的开关等;在炼钢车间中,用计算机控制加料、炉温、冶炼时间等;在发电厂中,用计算机控制发电机组等。
用于生产过程自动控制的计算机一般都是实时控制,对计算机的速度要求不高,但对可靠性要求很高,否则会生产出不合格产品,或造成重大事故。
用于控制的计算机,其输入信息往往是电压、温度、压力、流量等模拟量,要先将模拟量转换成数字量,然后计算机才能进行处理或计算,处理或计算后,再根据预定的控制方案对生产过程进行控制。这类软件一般统称为监察控制和数据采集(Supervisory Control And Data Acquisition,SCADA)软件。目前,比较流行的PC上的SCADA软件有FIX、InTouch、Lookout等。
当然,还存在很多专门为解决某些特定领域的专业问题而开发的软件,如超市支付清算系统、医院挂号系统等,它们也属于专用软件范畴。
3.4 操作系统概述
根据冯·诺依曼的指导思想,计算机硬件系统是由运算器、控制器、存储器、输入/输出设备等部件通过计算机主板连接构成的。要使硬件系统能够充分发挥其效能,尽可能地按照人们预期的目的和要求来运行各类程序,就需要一套管理(控制、分配)硬件和组织运行程序有序完成的程序(也就是管理应用程序的程序),通常将这个程序统称为操作系统。可将其做一个形象地比喻:人们修建高速公路,其目的是提高运输和通行能力,但有了高速公路(硬件)还不行,还必须有一套管理高速公路运行的规章制度(操作系统),在高速公路上行驶的车辆必须严格执行该规章制度,这样才能发挥高速公路的作用。
通常将计算机硬件称为裸机,它的功能非常弱,仅能完成简单的运算(只能进行“0”和“1”的二进制运算)。将计算机操作系统运行在计算机硬件上,可以使计算及功能变得非常强大、服务质量非常高、使用非常方便,为人们使用计算机提供了一个安全、可靠的应用环境,以满足各种应用需求。同时,操作系统可以有效而合理地组织安排多个用户共享计算机系统中的各种资源,最大限度地提高资源的利用率。
操作系统是一种管理计算机硬件的接口,为应用程序提供基本的运行条件,是计算机用户和计算机硬件之间的人机接口。操作系统的类型具有丰富的多样性。大型计算机操作系统的目标是优化对硬件的使用,而个人计算机(PC)的操作系统提供了对商业应用、个人娱乐,以及对介于二者之间的其他应用软件的支持。有些操作系统追求易用性,有些操作系统追求效率,还有些操作系统则是两者折中。
3.4.1 操作系统的基本概念
一般认为,操作系统(Operating System,OS)是管理计算机系统资源、控制程序执行、改善人机界面、提供各种服务、合理组织计算机工作流程和为用户使用计算机提供良好运行环境的一类系统软件。
广义上说,操作系统或者说整个计算机系统都是为人类服务的,但具体功能则是用于完成计算机系统硬件的管理和控制,对各类信息的编辑、运行、输入/输出等进行控制。因为在计算机系统中,有多个程序(作业)是并发执行的(类似田径跑步一样,每个运动员都想争第一名,而“第一名”只有一个,谁得第一名,就要看哪位运动员的水平发挥得更好以及裁判的规则了,这是一个很复杂的问题。“第一名”是资源,运动员们要通过竞争使用这个资源)。在计算机系统中也一样,CPU只有一个或是少于运行程序的数目,多个程序就要竞争CPU资源。这时操作系统则根据资源的状态和运行程序的优先级并按一定的算法将资源分配给具备条件的程序(进程或线程)。所以,可以将操作系统视为计算机系统资源的管理者。
在计算机系统中,人们是通过操作系统或者说是通过操作系统提供的各种相关命令来使用计算机的,操作系统是用户与计算机硬件的接口,如图3-7所示。
图3-7 用户、操作系统、计算机硬件三者之间的关系
整个操作系统的构成用层级结构来划分和实现,可以使各个部分的关系十分清晰、一目了然。图3-8和图3-9说明了在层级结构中,操作系统在整个计算机系统中的地位。
图3-8 计算机系统中软、硬件的层级结构
从图3-9中我们可以看到,计算机系统中的分层结构由硬件、内核层、服务层、命令层和用户构成。
图3-9 计算机系统中的分层结构
1.硬件
该层是操作系统赖以工作的基础,也是操作系统设计者可以使用的功能和资源。
2.内核层
该层是操作系统的最里层,是唯一直接与计算机硬件“打交道”的部分,它使得操作系统与计算机硬件相互独立。只要改变操作系统的内核层就可以使同一操作系统运行于不同的计算机硬件环境下。内核提供了操作系统中最基本的功能,它包括调入执行程序以及为程序分配各种硬件资源的子系统。将软件与硬件所传递的各类信息在内核中完成,对普通用户来说,可以使复杂的计算机系统变得简单、易操作。
3.服务层
该层接收来自于应用程序或命令层的服务请求,并将这些请求译码为传送给内核的执行指令,然后再将结果回送到请求服务的程序中。服务层是由众多程序组成的,可以提供以下服务。
① 访问I/O设备:将数据进行输入/输出。
② 访问存储设备(内存或者外存):读或写磁盘中的数据。
③ 文件操作:打开(关闭)文件、读写文件。
④ 特殊服务:窗口管理、通信网络和数据库访问等。
4.命令层
该层主要提供用户接口界面,是操作系统中唯一直接与用户(应用程序)“打交道”的部分(如UNIX的Shell)。
5.用户
用户是指应用程序。
通过以上阐述,说明了操作系统在计算机系统中的重要地位,没有操作系统,计算机硬件就不能充分发挥作用,用户也不能随心所欲地操作计算机系统。所以说,操作系统是裸机上的第一层软件,它是对硬件系统功能的首次扩充,填补了人与机器之间的鸿沟。
3.4.2 操作系统的基本特征
1.并发性
我们在讲某一问题时,可能会用到“并发性”和“并行性”两个词,它们分别是什么意思?又有什么不同?
“并发性”和“并行性”的含义有相似之处而又有所区别。
并行性是指两个或多个事件在同一时刻发生(强调一个时间点),而并发性是指两个或两个以上的事件或活动在同一时间间隔内发生(强调一个时间段)。
在多道程序环境下,并发性是指在一段时间内,宏观上有多个程序在同时运行,但实际上在单CPU的运行环境中,每一个时刻仅有一个程序在执行。因此,从微观上来说各个程序是交替、轮流执行的。如果计算机系统中有多个CPU,这些存放在内存中的可以并发执行的程序则被分配到多个CPU上实现并行运行。一般来说,有多少个CPU就有多少个程序可以同时执行。
由于程序可以打印输出,也可以存储在磁介质上,所以是静态实体,是不可以并发执行的。怎样才能使多道程序并发执行?简单地说,系统把需要运行程序的一部分调入内存,并给其分配必要的系统资源,做好运行前的一切准备。这个过程就是为每个程序建立进程(Process)。程序是以进程为单位在CPU中运行的,系统也是以进程为单位为其分配所需资源的。进程是由一组机器指令、数据、堆栈和数据结构(表格)等组成的,是活动实体。进程是某正在执行程序(作业)的一部分(可能是极小一部分)。图3-10给出了进程的组成示意图。
图3-10 进程的组成示意图
那么,操作系统为什么要以进程为单位来控制和管理程序的运行?是为了使多个程序能并发执行。并发执行使操作系统变得非常复杂,因为操作系统需要增加多个完成控制和管理的功能模块,分别用于CPU、内存、I/O设备和文件系统等资源的管理,并控制系统中程序的运行。
20世纪80年代,计算机专家又提出了比进程更小的运行单位——线程(Thread)。一个进程可以包含多个线程。在引入线程的系统中,由于线程比进程小,基本上不拥有系统资源,所以线程的运行比进程更轻松(切换迅速)。目前,用户使用的操作系统一般都引入了线程。
PCB(Process Control Block,进程控制块)是记录每个进程相关信息(如进程标识符、所需要的系统资源、优先级等)的数据结构,它描述了进程在其生命周期中动态变化的全过程,是进程存在的唯一标志。
2.共享性
共享是指操作系统中的资源(包括硬件资源和信息资源)可被多个并发执行的进程(线程)共同使用,而不是被一个进程(线程)所独占。出于经济上的考虑,一次性向每个用户程序分别提供它所需的全部资源不但是浪费的,有时也是不可能的。现实的方法是让操作系统和多个用户程序共用一套计算机系统的所有资源,因而,必然会产生共享资源的需要。资源共享的方式可以分成以下两种。
(1)同时共享。系统中有许多资源,允许在一段时间内由多个进程同时对它们进行访问。这里所谓的“同时”往往是宏观上的说法。而在微观上,这些进程可能是交替地对该资源进行访问。典型的可供多进程“同时”访问的资源是磁盘,一些用重入码编写的文件,也可以被“同时”共享,即若干个用户同时访问该文件。
(2)互斥共享。系统中的某些资源如打印机、磁带机、卡片机,虽然它们可提供给多个进程使用,但在同一时间内却只允许一个进程访问,即要求互相排斥地使用这些资源。当一个进程还在使用该资源时,其他要访问该资源的进程必须等待,仅当该进程访问完毕并释放资源后,才允许另一个进程对该资源访问。这种同一时间内只允许一个进程访问的资源被称为“临界资源”,许多物理设备,以及某些数据和表格都是临界资源,它们只能互斥地被共享。
值得注意的是,共享性和并发性是操作系统的两个最基本的特性,它们又是互为存在的条件。一方面,资源的共享是因为程序的并发执行而引起的,若系统不允许程序并发执行,自然也就不存在资源共享问题;另一方面,若系统不能对资源共享实施有效的管理,必然会影响到程序的并发执行,甚至使程序无法并发执行,操作系统也就失去了并发性,导致整个系统效率低下。
3.虚拟性
虚拟性是指操作系统中的一种管理技术,它是把物理上的一个实体变成逻辑上的多个对应物,或把物理上的多个实体变成逻辑上的一个对应物的技术。前者是实际存在的,而后者是虚构假想的,是用户感觉上的东西。采用虚拟技术的目的是为用户提供易于使用、方便高效的操作环境。
现代计算机系统中使用了多种虚拟技术,分别用来实现虚拟处理机、虚拟存储器、虚拟外部设备和虚拟信道等。
在虚拟处理机技术中,就是通过多道程序设计技术,让多道程序并发执行来分时使用一台(物理)处理机。这台处理机的处理速度应该非常快,功能特别强,使得各用户终端在执行自己的进程(程序)时,总感觉自己是独占计算机系统一般。
虚拟存储器就是通过某种技术,把有限的内存容量变得无限大,用户在运行远大于实际内存容量的程序时,不会发生内存不够的错误。用户所运行的程序大小与实际内存容量无关。
虚拟设备是通过虚拟技术把一台物理I/O设备虚拟为多台逻辑上的I/O设备供多个用户使用,每个用户可以占用一台逻辑上的I/O设备,实现I/O设备的共享。
其实,操作系统本身就是一个虚拟机,将很多资源进行抽象以便于用户使用。例如,将各类数据抽象为文件,并提供统一接口和友好的图形界面,以方便用户的存取。而用户所感受到的只是使用上的方便,其实这种方便都是源于操作系统的虚拟性。
4.不确定性
操作系统的第4个特征是不确定性,也称随机性。在多道程序环境中,允许多个进程并发执行。但由于资源有限而进程众多,在多数情况下进程的执行不是一贯到底的,而是“走走停停”。例如,一个进程在CPU上运行一段时间后,由于等待资源满足或事件发生,它被暂停执行,CPU将其转让给另一个进程执行。系统中的进程何时执行,何时暂停,以什么样的速度向前推进,进程总共要花多少时间执行才能完成……这些都是不可预知的,或者说该进程是以不确定的方式运行的,其导致的直接后果是程序执行结果可能不唯一。不确定性给系统带来了潜在的危险,有可能导致进程产生与时间有关的错误,但只要运行环境相同,操作系统必须保证多次运行的进程都能获得完全相同的结果。
操作系统中的随机性处处可见。例如,作业到达系统的类型和时间是随机的;操作员发出命令或按按钮的时刻是随机的;程序运行发生错误或异常的时刻是随机的;各种各样硬件和软件中断事件发生的时刻是随机的等。操作系统内部产生的事件序列有许多种可能,而操作系统的一个重要任务是必须确保捕捉任何一种随机事件,正确处理可能发生的随机事件和任何一种产生的事件序列,否则将会导致严重后果。
3.4.3 操作系统的基本功能
操作系统是用户与计算机硬件之间的接口,同时也是对计算机硬件系统的一次扩充,从而使得用户能够方便、可靠、安全、高效地操纵计算机硬件和运行自己的程序。操作系统合理地组织计算机的工作流程,协调各个部件有效地工作,为用户提供一个良好的运行环境。用户可以直接调用操作系统提供的各种功能,而无需了解许多软、硬件本身的细节。
操作系统是计算机系统的资源管理者。在计算机系统中,能分配给用户使用的各种硬件和软件设施统称为资源。资源包括两大类:硬件资源和软件资源。其中,硬件资源包括处理机、存储器、I/O设备等,I/O设备可具体分为输入型设备、输出型设备和存储型设备。软件资源包括程序、数据等。操作系统的重要任务是有序地管理计算机中的硬件资源和软件资源,跟踪资源的使用情况,监视资源的状态,满足用户对资源的需求,协调各程序对资源的使用冲突,为用户提供简单、有效的使用资源的手段,最大限度地实现各类资源的共享,提高资源的利用率。
总的来说,操作系统的功能包括以下4个方面。
1.处理机管理和进程调度
CPU是计算机系统中最核心的资源。处理机管理的主要工作包括处理机中断事件和处理机调度。其目的是最大限度地提高处理机的使用效率,发挥其作用。
在单用户、单任务的情况下,处理机仅为一个用户的一个任务所独占,组织多个作业或任务执行时,要解决处理机的调度、分配和回收等问题。多处理机系统的处理管理更加复杂。为了实现处理机的管理功能,描述多道程序的并发执行,操作系统引入了进程的概念,处理机的分配和执行以进程为基本单位。随着并行处理技术的发展,为了进一步提高系统的并行性,使并发执行单位的粒度变细,并发执行的代价降低,操作系统又引入了线程的概念。对处理机的管理和调度最终归结为对进程和线程的管理和调度。
(1)处理机调度的3个级别。处理机调度可以分为高级调度、中级调度和低级调度3个级别,如图3-11所示。
图3-11 处理机调度的3个级别
① 高级调度,又称为作业调度,通常发生在新进程的创建过程中,它决定一个进程能否被创建,或者是创建后能否被置为就绪状态,以参与竞争处理机,获得运行。在纯粹的分时或者实时操作系统中,通常不需要配备高级调度。
② 在分时系统或具有虚拟存储器的操作系统中,为了提高内存利用率和作业吞吐量,专门引入了中级调度。中级调度反映到进程状态上就是挂起和解除挂起,它根据系统当前的负荷情况决定停留在主存中的进程数量。
③ 低级调度,又称为进程调度,是各类操作系统都必须具有的功能,它根据一定的算法和策略来决定哪一个就绪进程或线程优先占用CPU运行。
(2)进程的状态和转换。在一个进程因创建而产生直到因撤销而消亡的整个生命周期中,有时占有处理机,有时虽可运行但分不到处理机,有时虽有空闲处理机但因某个事件的发生而无法执行,这一切都说明进程和程序不同,它是活动的且有动态变化,这可以用一组状态来加以刻画。为了便于进程的管理,一般来说,可按进程在其生命周期中的动态变化情况,定义以下一些进程状态。
① 新建状态:进程刚被创建时的状态,系统为新进程创建必要的管理信息。
② 就绪状态:进程已获得了除处理机以外的所有资源,已具备运行条件,等待系统分配处理机以便运行。
③ 运行状态:进程占有处理机正在运行。
④ 阻塞状态:进程不具备运行条件,正在等待某个事件的完成。
⑤ 挂起就绪状态:进程具备运行条件但目前在辅存中,只有当它被对换到主存后才能被调度执行。
⑥ 挂起阻塞状态:进程正在等待某一个事件且在辅存中。
⑦ 终止状态:表明进程不再执行,保留在操作系统中等待善后,然后退出主存。
2.存储管理
操作系统的第2个功能是管理存储器,为需要运行的程序或作业按照一定的分配算法分配所需的存储空间,当使用结束后,操作系统负责将这部分存储空间回收。存储管理主要是针对计算机系统的重要资源——主存储器的管理,也就是对内存进行管理。主存储空间一般分为两部分:一部分是系统区,存放操作系统核心程序以及标准子程序、例行程序等;另一部分是用户区,存放用户的程序和数据等,供当前正在执行的应用程序使用。存储管理主要是对主存储器中的用户区进行管理。
(1)存储器的层次。计算机系统采用层次结构的存储子系统,以便在容量、速度、成本等各因素中取得平衡,获得较好的性能价格比。存储器分为寄存器、高速缓存、主存储器、磁盘缓存、固定磁盘和可移动存储介质6层层次结构,如图3-12所示。层次越高,CPU的访问越直接,访问速度越快,硬件成本越高,配置的容量越小。其中,寄存器、高速缓存、主存储器和磁盘缓存均属于存储管理的管理范畴。固定磁盘和可移动存储介质属于设备管理的管辖范畴。磁盘缓存本身并不是一种实际存在的存储介质,它依托于固定磁盘,提供对主存储器存储空间的扩充。
图3-12 计算机系统存储器的层次
可执行的程序必须被保存在计算机的主存储器中,与外围设备交换的信息一般也保存在主存储器的地址空间。由于处理机在执行指令时主存访问时间远大于其处理时间,因此引入寄存器和高速缓存来加快指令的执行。
(2)虚拟存储管理。在传统的存储管理方式中,必须为作业分配足够的存储空间,以装入与作业有关的全部信息,作业的大小不能超出内存的可用空间,否则这个作业无法运行,即存储空间的大小限制了作业的规模。然而,实际研究发现,作业的信息在执行时实际上不是同时使用的,有些部分运行一遍后就不再使用。运行时暂时不用的,或某种条件下才用到的程序和数据,全部驻留在内存中是对宝贵的内存资源的一种浪费,大大降低了内存的利用率。
为提高内存的利用率,同时也为扩展内存以便处理规模更大的作业,提出了这样的设计:作业提交时,先全部进入辅助存储器中,其余暂时不用的部分先存放在作为内存扩充的辅助存储器中,待用到这些信息时,再由系统自动把它们装入到主存储器中,这就是虚拟存储器的基本思路。这样,不仅能使内存空间被充分利用,而且用户编制程序时也可以不必考虑主存储器的实际容量大小,允许用户的逻辑地址空间大于主存储器的绝对地址空间,为用户提供了一个比实际内存空间更大的虚拟存储空间。
3.设备管理
现代计算机外围设备种类繁多、功能各异,设备管理成为操作系统中最庞杂的部分,其主要任务是控制外围设备和CPU之间的I/O操作。设备管理模块在控制各类设备和CPU进行I/O操作的同时,还要尽量提高设备与设备、设备与CPU的并行性,使得系统效率得到提高,同时,要为用户使用外围设备屏蔽硬件细节提供方便易用的接口。
4.文件管理
操作系统的第4个功能是对系统中各类信息(也称文件)进行管理。计算机系统中的信息种类众多,如何按照用户的要求,分门别类地加以管理和控制,按照用户的需要检索文件,提供操作文件的各种命令,都是操作系统中相应的软件(程序)应该具备的功能。
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。它用统一的方式进行用户的管理和系统信息的存储、检索、更新、共享和保护,并为用户提供一整套方便、有效的文件使用和操作方法。文件系统的主要功能包括存储文件的外存空间的组织和管理、文件目录的管理、文件的读写管理以及文件的共享和保护。
3.4.4 操作系统的发展与分类
操作系统的基本类型有批处理操作系统、分时操作系统和实时操作系统3种。具备全部或兼有两者功能的系统统称为通用操作系统。随着硬件技术的发展和应用的需要,新发展和形成的操作系统又有微机操作系统、网络操作系统、分布式操作系统和嵌入式操作系统。
1.批处理操作系统
在计算中心的大型计算机上一般采用批处理操作系统。用户将要计算的用户作业集中,并成批量地输入到计算机中,然后由操作系统来调度和控制用户作业的执行,形成一个自动转接的连续处理的作业流,最后把运算结果返回给用户。采用这种批处理作业方式的操作系统称为批处理操作系统。
批处理操作系统的主要优点是系统资源利用率高、作业的吞吐量大;缺点是作业周转时间长、不具备人机交互能力。
批处理操作系统的特征主要有以下几个方面。
(1)用户脱机工作。用户提交作业之后直至获得结果之前不再和计算机及其他的作业交互。这种工作方式发现程序错误不能及时修正,因此对调试和修改程序极为不方便。
(2)成批量处理作业。集中一批用户提交的作业,将其输入计算机成为后备作业。后备作业由批处理操作系统一批批地选择调入内存执行。
(3)单/多道程序运行。根据处理机的数量和能力分别采用单/多道批处理。单道批处理同一时间只能处理一道作业流;多道批处理可以同时选取多个作业进入主存运行。
2.分时操作系统
允许多个联机用户同时使用一台计算机系统的操作系统称为分时操作系统。其实现思想是:每个用户在各自的终端上以问答的方式控制程序运行,系统把中央处理机的时间划分为时间片,轮流分配给各个联机终端用户,每个用户只能在极短的时间内执行,若时间片用完,而程序还未做完,则挂起等待下次分得时间片。由于调试程序的用户常常只发出简短的命令,这样一来,每个用户的每次要求都能得到快速响应,使其感觉好像独占这台计算机一样。实质上,分时系统是多道程序的一个变种,CPU被若干个交互式用户多路分用,不同之处在于每个用户都有联机终端。
分时操作系统具有以下特性。
(1)多路性。允许在一台主机上同时联接多台联机终端,系统按分时原则为每个用户服务。宏观上,是多个用户同时工作,共享系统资源;而微观上,则是每个用户作业轮流运行一个时间片。这样提高了资源利用率,从而促进了计算机更广泛的应用。
(2)独立性。每个用户各占一个终端,彼此独立操作,互不干扰,因此,每个终端用户在感觉上好像独占这台计算机。
(3)及时性。用户的请求(即不要求大量CPU处理时间的请求)能够在足够快的时间内得到响应,此时间间隔是以人们所能接受的等待时间来确定的,通常为2~3秒。这一特性与计算机CPU的处理速度、分时系统中联机终端用户数目和时间片的长短密切相关。
(4)交互性。用户可通过终端与系统进行广泛的人机对话。其广泛性表现在,用户可以请求系统提供多方面的服务,如文件编辑、数据处理和资源共享等。
3.实时操作系统
实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间内来控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点。实时操作系统有过程控制系统、信息查询系统和事务处理系统3种类型,如飞机自动驾驶系统、情报检索系统、银行业务处理系统等。实时操作系统要求响应快捷、安全保密、可靠性高。
4.微机操作系统
微型计算机是使用最广泛的计算机,其使用方式与大型计算机不同,操作系统也有自己的特点。早期微型计算机上运行的一般是单用户、单任务操作系统,如CP/M、MS-DOS,后来逐步发展为支持多用户、多任务和图形界面的操作系统,如Windows,Mac OS,Linux等。
现代微机操作系统具有以下特点。
(1)开放性。支持不同系统互联、支持分布式处理和多CPU系统。
(2)通用性。支持应用程序的独立性和在不同平台上的可移植性。
(3)高性能。随着硬件性能的提高、64位机的逐渐普及以及CPU速度的进一步提高,微机操作系统中引入了许多在以前中、大型机上才能实现的技术,支持虚拟存储器,支持多线程,导致计算机系统性能大大提高。
(4)采用微内核结构。提供基本支撑功能的内核极小,大部分操作系统功能由内核之外运行的服务程序(也称服务器)来实现。
5.并行操作系统
随着并行处理技术的发展,出现了并行计算机,为充分发挥其并行处理性能,需要有并行算法、并行语言等许多软件的配合,从而出现并行操作系统。典型的并行操作系统有Stanford大学的V-Kernel、Bell实验室的Meglos、卡内基梅隆大学的Mach等。并行计算机有阵列处理机、流水线处理机、多处理机。并行处理技术已成为近年来计算机的热门研究课题,在气象预报、石油勘探、空气动力学、基因研究、核技术、航空航天飞行器等领域均有广泛应用。
6.网络操作系统
网络操作系统能够控制计算机在网络中方便地传送信息和共享资源,并能为网络用户提供各种服务。网络操作系统主要有两种工作模式。第一种工作模式是客户机/服务器(Client/Server)模式,这类网络中有两类站点,一类作为网络控制中心或数据中心的服务器,提供文件打印、通信传输、数据库等各种服务;另一类是本地处理和访问服务器的客户机。第二种工作模式是对等(P2P)模式,这种网络中的站点都是对等的,每一个站点既可作为服务器,又可作为客户机。典型的网络操作系统有Netware和Windows Server。
7.分布式操作系统
用于管理分布式计算机系统的操作系统称为分布式操作系统。分布式系统是指在通信网络互联的多处理机体系结构上执行任务的系统,它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统、分布式数据库系统等。
在以往的计算机系统中,处理和控制能力都高度地集中在一台计算机上,所有的任务都由它完成,这种系统称为集中式计算机系统。分布式计算机系统是由多台分散的计算机,经互联网连接而成的系统。每台计算机高度自治,互相协同,能在系统范围内实现资源的任务分配,能并行地运行分布式程序。
分布式操作系统负责管理分布式处理系统资源和控制分布式程序运行,它和集中式操作系统的区别在于资源管理、进程通信和系统结构等方面。
分布式操作系统与网络操作系统的区别在于,分布式操作系统将多台计算机以透明的方式组织为一套完整的系统,而网络操作系统中的用户明确知道各节点仍是独立的,且可以有各自不同的操作系统。分布式操作系统的耦合程度高于网络操作系统。对用户透明是指,对于用户而言处理过程是感觉不到的、不可见的、隐藏的,用户不知道原理或者其整个过程,甚至根本感觉不到它的存在。
8.嵌入式操作系统
嵌入式(计算机)系统硬件不以物理上独立的装置或设备的形式出现,大部分甚至全部隐藏和嵌入到各种应用系统中。嵌入式操作系统(Embedded Operation System,EOS)需要专门的软件,是嵌入式软件的基本支撑。
嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。
目前,国际上嵌入式操作系统有40余种,其中具有代表性的有Palm OS(3com公司),VxWork、Windows CE、嵌入式Linux系统等。
3.4.5 典型操作系统
目前,计算机用户较为熟悉的操作系统主要有Windows、UNIX和Linux。
Windows是Microsoft公司的产品,多用于个人计算机。UNIX是一个通用的、交互型分时操作系统,现已成为操作系统标准,而不仅仅是指一个具体的操作系统。许多公司和大学都推出了自己的UNIX系统,用于专业领域的计算机。Linux是一个开放源代码、UNIX类的操作系统,作为自由软件,它广泛用于构建Internet服务器。
1.DOS操作系统
DOS(Disk Operation System)的含义就是磁盘操作系统。DOS操作系统起源于Seattle Computer公司,微软公司取得其专利后,改名为MS-DOS,并与IBM公司联合对其功能进行了扩充。由于DOS是广泛运行在IBM PC及其兼容机上的单用户操作系统,所以又称为PC-DOS。
MS-DOS操作系统的最早版本是1981年8月推出的DOS V1.0版,几经修改扩充,发展为1993年的DOS V6.0版。微软公司推出的最后一个MS-DOS操作系统版本是DOS V6.22,以后不再推出新的DOS操作系统版本。自DOS V4.0开始,该系统具有多任务处理功能。
DOS操作系统所具备的功能不能满足人们的需求和微型计算机发展的进程。例如,DOS操作系统对内存的空间大小有限制,它只能寻址1 MB的内存空间,又把这1 MB的内存空间分为0~640 KB的基本内存和640 KB~1 MB的高端扩展内存。
由于DOS操作系统基本上不支持鼠标,所以该系统提供了如图3-13所示的命令供用户通过键盘来操作计算机。
图3-13 DOS操作系统的基本命令
人们把存放在磁盘上的各种信息统称为文件。在一台计算机中有用户文件和操作系统文件,而管理这些文件的软件就被称为文件系统。
(1)文件名。文件名的长度最多不超过11个字符,其中又分为主文件名(最多为8个字符)和扩展名(最多为3个字符)。主文件名与扩展名之间用小数点“.”分隔,如myfile.txt。
(2)文件类型。DOS操作系统中,以文件的扩展名来区分文件的类型。例如,myfile.txt是文本文件;如果文件名为command.com,则说明此文件是一个命令文件;myfile.c是一个C语言编写的源程序。DOS操作系统中有数十种类型的文件。
(3)说明。在DOS操作系统中,文件名的组成是有限制的,文件名中不能出现 “+” “−” “*” “/” “?” “>” “<”等字符,因为这些符号已经在操作系统中给予了定义。
2.Windows系列
Microsoft公司是现在世界上最大的软件公司,其开发的Windows操作系统目前在个人计算机操作系统中大约占90%。
Microsoft公司于1983年11月发布的Windows开始并不成功。直到1990年发布Windows 3.0版,对以前的版本进行了彻底改造,在功能上进行了很大扩充,用户数量才逐步增加。1992年4月发布的Windows 3.1版,是第一个真正广泛使用的版本。
从Windows 1.x到Windows 3.x,系统都必须依靠DOS提供的基本硬件管理功能才能工作,因此严格意义上说,它还不能算是一个真正的操作系统,只能称为图形化用户界面操作环境。1995年8月,Microsoft公司推出了Windows 95并放弃开发新的DOS版本,Windows 95能够独立地在硬件上运行,是真正的新型操作系统。以后,Microsoft公司又相继推出了Windows 98、Windows 98 SE和Windows Me等后继版本。Windows 3.x和Windows 9x都属于个人操作系统范畴,主要运行于个人计算机系列。
除了个人操作系统版本外,Windows还有其商用操作系统版本Windows NT,它主要运行于小型机、服务器,也可以在个人机上运行。Windows NT 3.x于1993年8月推出,以后又相继发布了NT 4.x版本。基于NT内核,Microsoft公司于2000年2月正式推出了Windows 2000。2001年1月,Microsoft公司宣布停止对Windows 9x内核的改进,把个人操作系统版本和商用操作系统版本合二为一,命名为“Windows XP”。Windows XP包括家庭版、专业版和一系列服务器版。
2009年7月14日,Windows 7正式开发完成,并于同年10月22日正式发布。10月23日,微软于中国正式发布Windows 7。Windows 7 的设计主要围绕5个重点——针对笔记本电脑的特有设计、基于应用服务的设计、用户的个性化、视听娱乐的优化、用户易用性的新引擎。跳跃列表、系统故障快速修复等新功能令Windows 7成为最易用的Windows版本。
2015年1月,微软正式终止了对Windows 7的主流支持,但仍然继续为Windows 7提供安全补丁支持,直到2020年1月14日正式结束对Windows 7的所有技术支持。2015年,微软宣布,自2015年7月29日起一年内,除企业版外,所有版本的Windows 7 SP1均可以免费升级至Windows 10,升级后的系统将永久免费。
3.UNIX
UNIX操作系统是一个通用的、交互型分时操作系统。它最早由AT&T公司贝尔实验室于1969年在DEC公司的小型系列机PDP-7上开发成功。用C语言改写后的第3版UNIX具有高度易读性、可移植性,为迅速推广和普及走出了决定性的一步。1978年的UNIX第7版,可以被视为当今UNIX的先驱,该版为今天UNIX的繁荣奠定了基础。20世纪70年代中后期,UNIX源代码的免费扩散引起了很多大学、研究所和公司的兴趣,大众的参与为UNIX的改进、完善、传播和普及起到了重要的作用。
UNIX取得成功的最重要的原因是系统的开放性。由于公开源代码,用户可以方便地向UNIX操作系统中逐步添加新功能和工具,这样可使UNIX越来越完善,能提供更多服务,成为有效的程序开发支撑平台。它是目前唯一可以安装和运行在从巨型机、大型机到微型机和工作站上的操作系统。
UNIX具有以下主要特点。
(1)多用户、多任务操作系统,用C语言编写,具有较好的易读、易修改和可移植性。
(2)结构分核心部分和应用子系统,便于做成开放系统。
(3)具有分层可装卸卷的文件系统,提供文件保护功能。
(4)提供I/O缓冲技术,系统效率高。
(5)抢占式动态优先级CPU调度,有力地支持分时功能。
(6)命令语言丰富齐全,提供了功能强大的Shell语言作为用户界面。
(7)具有强大的网络与通信功能。
(8)请求分页式虚拟存储管理,内存利用率高。
实际上,UNIX已成为操作系统标准,而不仅仅指一个具体操作系统。许多公司和大学都推出了自己的UNIX操作系统,如IBM公司的AIX操作系统、SUN公司的Solaris操作系统、Berkeley大学的 UNIX BSD操作系统、HP公司的HP-UX操作系统、SGI公司的Irix操作系统、SCO公司的SCO UnixWare和Open Server操作系统以及AT&T公司的SVR操作系统等。为解决各个版本间的兼容问题,使同一个程序能在所有不同的UNIX版本上运行,IEEE拟定了一个UNIX标准并已被多数UNIX操作系统支持,同时,其他一些操作系统也支持POSIX标准。此外,还有一些UNIX标准和规范,如SVID(System V Interface Definition)、XPG(X-open Portability Guideline),这些均进一步推动了UNIX的发展。
在计算机的发展历史上,没有哪个程序设计语言像C语言那样得到如此广泛的流行,也没有哪个操作系统像UNIX那样获得普遍的青睐和应用,它们对整个软件技术和软件产业都产生了深远的影响。为此,UNIX的创建者Ritcchie和Thompson共同获得了1983年度的“ACM图灵奖”和“软件系统奖”。
下面简单介绍一下UNIX操作系统的结构。
UNIX系统主要是由系统“内核”(Kernel)、Shell、各类应用工具(程序)和用户应用程序等组成。通常,我们也可以把UNIX系统的结构分为4层,如图3-14所示。它的最底层是硬件,也是整个系统的基础;第2层是操作系统的核心,包括进程管理、存储器管理、设备管理和文件管理所具备的功能;第3层是操作系统与用户的接口(Shell)、编译程序等;最外层则是应用层(用户程序)。
图3-14 UNIX系统的结构示意
UNIX操作系统是多用户、多任务的分时操作系统,主要运行在大、中型计算机系统中,其功能非常强大,可以供成百上千的用户同时使用一台主机。
4.自由软件和Linux操作系统
Linux是由芬兰籍科学家Linus Torvals首先编写内核,并在自由软件爱好者的共同努力下完成和丰富的一个操作系统。Linux的发展见证了自由软件运动的强大力量,并形成了一个广泛的开放源代码社区。
(1)自由软件。自由软件(Free Software or Freeware)是指遵循通用公共许可证GPL(General Public License)规则,保证用户有使用上的自由、获得源程序的自由、可以自己修改的自由、可以复制和推广的自由及收费的自由的一种软件。
自由软件的出现意义深远。众所周知,科技是人类社会发展的阶梯,而科技知识的探索和积累是组成这个阶梯的一个个台阶。人类社会的发展是以知识积累为依托,不断地在前人获得知识的基础上发展和创新才得以一步步提高的。软件产业也是如此,如果能把已有的成果加以利用,避免每次都重复开发,将大大提高目前软件的生产率。带有源程序和设计思想的自由软件对学习和进一步开发,起到了极大的促进作用。自由软件的定义确定了它是为了人类科技的共同发展和交流而出现的。“Free”指的是自由,但并不是免费。“自由软件之父”Richard Stallman先生将自由软件划分为以下若干等级。
0级:是指对软件的自由使用。
1级:是指对软件的自由修改。
2级:是指对软件的自由获利。
自由软件赋予了人们极大的自由空间,但这并不意味着自由软件是完全无规则的。例如,GPL是自由软件必须遵循的规则,由于自由软件是贡献型的,而不是索取型的,只有人人贡献出自己的一份力量,自由软件才能得以健康发展。比尔·盖茨早在20世纪80年代,曾大声斥责“软件窃取行为”,警告世人这样会破坏整个社会享有好的软件。而自由软件的出现则是软件产业的一个分水岭,在拥护自由软件的人们眼中,Microsoft(微软)公司的做法实质上是阻止帮助邻人,抑制了软件对社会的作用,剥夺了人们共享与修改软件的自由。
GPL协议可以被视为一个伟大的协议,是征求和发扬人类智慧和科技成果的宣言书,是所有自由软件的支撑点。没有GPL,就没有今天的自由软件。
(2)Linux操作系统。Linux是由芬兰籍科学家Linus Torvalds于1991年编写完成的一个操作系统内核。当时,他还是芬兰赫尔辛基大学计算机系的学生,在学习操作系统课程中,他自己动手编写了一个操作系统原型,从此,一个新的操作系统诞生了。Linux把这个系统放在Internet上,允许自由下载,许多人对这个系统进行改进、扩充、完善,并做出了关键性的贡献。Linux由最初的一个人写原型变成了在Internet上由无数志同道合的程序高手们参与的一场运动。
Linux属于自由软件,短短几年,Linux操作系统已得到广泛使用。1998年,作为构建Internet服务器使用的操作系统,Linux已超越Windows NT。许多计算机大公司如IBM、Intel、Oracle、Sun、HP等都大力支持Linux操作系统,各种成名软件纷纷移植到Linux平台上,运行在Linux下的应用软件也越来越多。当前,Linux的中文版早已开发出来,Linux已经在中国流行,这也为我国自主操作系统的发展提供了良好条件。
Linux是一个开放源代码、UNIX类的操作系统。它除了继承历史悠久和技术成熟的UNIX操作系统的特点和优点外,还做了许多改进,成为了一个真正的多用户、多任务通用操作系统。1993年,第一个产品版Linux 1.0问世的时候,全部按自由扩散版权进行扩散,即公开源码,不准获利。不久后,人们发现这种纯粹理想化的自由软件会阻碍Linux的扩散和发展,特别是限制了商业公司参与并提供技术支持的积极性。于是,Linux转向GPL协议,除允许享有自由软件的各项许可权外,还允许用户出售自由软件拷贝程序。这一版权上的转变在后来证明对Linux的进一步发展十分重要。
从Linux的发展史可以看出,是Internet孕育了Linux,没有Internet就不可能有Linux今天的成功。从某种意义上说,Linux是UNIX和Internet结合的一个产物,其特点主要如下。
① 继承了UNIX的优点,又有了许多改进;开发、协作的开发模式是集体智慧的结晶,能紧跟技术发展潮流,具有极强的生命力。
② 是真正的多用户、多任务通用操作系统,可作为Internet上的服务器;可作为网管路由器;可作为数据库、文件和打印服务器;也可供个人使用。
③ 全面支持TCP/IP,内置通信联网功能,并可方便地与LAN Manager、Windows for Workgroups、Novell Netware网络集成,让异种机方便地联网。
④ 符合POSIX 1003.1标准,各种UNIX应用可方便地移植到Linux下,反之也是一样。支持在DOS和Windows上应用,对UNIX BSD和UNIX System V应用程序提供代码级兼容功能;也支持绝大部分GNU软件。
⑤ 是完整的UNIX开发平台,支持一系列UNIX开发工具,几乎所有主流语言如C、C++、FORTRAN、ADA、PASCAL、Modual2/3、SmallTalk等都可移植到Linux下。
⑥ 具有提供强大的远程管理功能,并支持大量外部设备。
⑦ 支持32种文件系统,如EXT2、EXT、XI AFS、ISO FS、HPFS、MS-DOS、UMS-DOS、PROC、NFS、SYSV、Minix、SMB、UFS、NCP、VFAT、AFFS等。
⑧ 提供GUI,有图形接口X-Windows和多种窗口管理器。
⑨ 支持并行处理和实时处理,能充分发挥硬件性能。
⑩ 开放源代码,可自由获得;在Linux平台上开发软件成本低,有利于发展各种特色的操作系统。
小 结
(1)软件是指在硬件系统上运行的各种程序及相关资料,是程序加文档的集合体。软件是用户与硬件之间的接口界面,用户主要是通过软件与计算机进行交流的。计算机的软件分为系统软件和应用软件两大类。
(2)系统软件主要负责管理计算机系统中各种独立的硬件,使它们之间可以协调工作,并为用户使用计算机提供最基本的功能。系统软件主要包括操作系统、语言处理程序、数据库管理系统和一些服务性程序等。其中,操作系统是最重要的系统软件。
(3)应用软件是指用户自己开发或外购的能满足各种特定用途的应用软件包。根据应用领域的不同,又可将应用软件分为通用软件和专用软件两大类。
(4)操作系统是指管理计算机系统的所有软、硬件资源,合理组织计算机的工作流程,并为用户提供方便、友好服务界面的程序及数据的集合。操作系统是直接运行在裸机上的最基本的系统软件,是系统软件的核心。
(5)程序设计语言通常分为机器语言、汇编语言和高级语言。机器语言是直接用二进制代码表示机器指令的计算机语言,是计算机唯一可以识别和直接执行的语言。汇编语言是面向机器的程序设计语言,是为特定的计算机或计算机系统设计的,并使用助记符来表示机器指令,因此也称汇编语言为符号语言。我们通常将机器语言和汇编语言统称为低级语言。
(6)高级语言是用数学语言和接近于自然语言的语句来编写,并用于解决实际问题的程序设计语言。高级语言具有良好的通用性和可移植性,因此更易于人们编写和掌握,但是用高级语言编写的程序不能直接被计算机识别,需要通过一些编译程序或解释程序将其翻译成机器语言的目标程序后才能被执行。
(7)数据库(DB)是按一定方式组织起来的数据的集合,具有数据量大、数据冗余度小、可共享等特点。而数据库管理系统(DBMS)的作用就是管理数据库。不同的DBMS是以不同的方式将数据组织到数据库中的。组织数据的方式称为数据模型。数据模型一般分为层次型、网状型和关系型3种形式。
(8)服务型程序是一类辅助性的程序,是为了帮助用户使用和维护计算机,向用户提供服务性手段而编写的程序,通常包括编辑程序、调试程序、诊断程序、硬件维护和网络管理程序等,它们也是系统软件的重要组成部分。
(9)操作系统的基本特征有并发性、共享性、虚拟性和不确定性。
(10)操作系统的功能包括4个方面,即处理机管理与进程调度、存储管理、I/O设备管理和文件管理。
(11)操作系统的基本类型主要有3种,即批处理操作系统、分时操作系统和实时操作系统。具备全部或兼有两者功能的系统统称为通用操作系统。随着硬件技术的发展和应用的需要,新发展和形成的操作系统又有微机操作系统、网络操作系统、分布式操作系统和嵌入式操作系统等。
(12)目前市面上流行的、用户较为熟悉的操作系统主要有Windows、UNIX和Linux。
习 题 3
一、单项选择题
1.计算机软件由( )组成。
A.数据和程序 B.程序和工具 C.文档和程序 D.工具和数据
2.C语言编译系统是( )。
A.操作系统 B.应用软件 C.系统软件 D.数据库管理系统
3.下列4种软件中属于应用软件的是( )。
A.Basic解释程序 B.UCDOS系统 C.财务管理系统 D.PascaL编译程序
4.以下应用软件主要用于播放音乐和视频的是( )。
A.PowerPoint B.Media Player
C.Adobe Photoshop D.Macromedia Flash
5.Excel与Word的区别下列描述中不正确的是( )。
A.Excel是一个数据处理软件 B.两者同属于Office
C.Word是一个文档处理软件 D.Excel与Word的功能相同
6.用C语言编写的源程序要变为目标程序,必须经过( )。
A.编辑 B.编译 C.解释 D.汇编
7.操作系统在计算机系统中位于( )。
A.CPU和用户之间 B.计算机硬件和用户之间
C.中央处理器之间 D.计算机硬件和软件之间
8.操作系统是为了提高计算机的(1)和方便用户使用计算机而配置的基本软件。它负责管理计算机系统中的(2),其中包括(3)、(4)、外部设备和系统中的数据。操作系统中的(3)管理部分负责对进程进行管理。操作系统对系统中的数据进行管理的部分通常称为(5)。
(1) A.速度 B.利用率 C.灵活性 D.兼容性
(2) A.程序 B.功能 C.资源 D.进程
(3)(4) A.主存储器 B.虚拟存储器 C.运算器 D.控制器 E.微处理器 F.处理机
(5) A.数据库系统 B.文件系统 C.检索系统 D.数据库 E.数据存储系统 F.数据结构 G.数据库管理系统
9.( )不是操作系统关心的主要问题。
A.管理计算机裸机 B.设计、提供用户程序与计算机硬件系统的界面
C.管理计算机系统资源 D.高级程序设计语言的编译器
10.操作系统的基本类型主要有( )。
A.批处理系统、分时系统及多任务系统 B.实时操作系统、批处理系统及分时操作系统
C.单任务系统、多任务系统及批处理系统 D.实时系统、分时系统和多任务系统
11.下列有关操作系统的叙述中正确的是( )。
A.批处理作业必须具有作业控制信息
B.分时系统不一定都具有人机交互能力
C.从响应时间的角度看,实时系统与分时系统差不多
D.由于采用了分时技术,用户可以独占计算机的资源
12.采用多道程序设计的主要目的是( )。
A.提高CPU利用率 B.充分利用内存 C.充分利用I/O设备 D.充分利用磁盘
13.某进程在运行过程中需要等待从磁盘上读入数据,此时该进程的状态是( )。
A.从就绪变为运行 B.从运行变为就绪 C.从运行变为阻塞 D.从阻塞变为就绪
14.下列关于虚拟存储器的论述中,正确的是( )。
A.要求作业在运行前,必须全部装入内存,且在运行过程中也必须一直驻留内存
B.要求作业在运行前,不必全部装入内存,且在运行过程中不必一直驻留在内存
C.要求作业在运行前,不必全部装入内存,但在运行过程中必须一直驻留内存
D.要求作业在运行前,必须全部装入内存,但在运行过程中不必一直驻留内存
15.下列文件名中,非法文件名是( )。
A.LX5.WPS B.YUANS.LF C.MINamp?FN.COM D.123.456
二、填空题
1.编译程序、数据库管理系统和服务程序属于 。
2.用计算机把高级语言源程序变成机器可直接执行的程序或目标程序的方法通常有 和 两种。
3.操作系统是对计算机的系统资源进行控制与管理的软件,这里系统资源指的是 、 、 和 。
4.操作系统的基本特征包括 、 、 和 。
5.批处理系统的主要缺点是 。
6.分时系统具有的4个基本特征是 、 、 和 。
7.实时操作系统追求的目标是 。
8.进程主要由 、 和 3部分组成。其中, 是进程存在的唯一标志,而 部分也可以为其他进程共享。
9.按操作系统中文件的性质与用途,可将文件分为 、 和 。
10.DOS是 的缩写。
三、简答题
1.简述计算机系统的组成,并说明硬件与软件之间的关系。
2.什么是软件?简述软件的分类。
3.系统软件和应用软件的区别是什么?请分别列举一些常见的系统软件和应用软件。
4.什么是操作系统?它在系统中的地位如何?
5.简述操作系统的基本特征和基本功能。
6.操作系统是如何分类的?并简述一下各种操作系统的特点。
7.DOS和Windows操作系统有什么联系?它的主要特点有哪些?
8.简述UNIX操作系统的基本结构和基本特点。
9.Linux和UNIX操作系统有什么联系?它的主要特点是什么?
10.任选一款本章中提到的应用软件,谈一谈使用该软件的体会。