1.4 计算机系统
计算机是能按照人的要求接收和存储信息,自动进行数据处理和计算并输出结果的机器系统。计算机由硬件和软件两部分组成。它们共同协作运行应用程序,处理和解决实际问题。其中,硬件是计算机赖以工作的实体,是各种物理部件的有机结合;软件是控制计算机运行的灵魂,是由各种程序和程序所处理的数据组成的。计算机系统通过软件协调各硬件部件,并按照指定要求和顺序进行工作。
计算机系统是由硬件系统和软件系统两部分组成的。硬件系统是组成计算机系统的各种物理设备的总称,是计算机系统的物质基础,如CPU、存储器、输入设备、输出设备等。软件系统是为运行、管理和维护计算机而编制的各种程序、数据和文档的总称。没有软件系统的计算机对我们来说是毫无用处的。计算机的功能不仅取决于硬件系统,而且更大程度上是由所安装的软件系统所决定的。如果把计算机系统比作一个人,硬件就是人的整个躯体,软件就是人脑中所有的知识和经验。
1.4.1 计算机硬件系统
硬件是计算机的物质基础,没有硬件就不能成为计算机。尽管各种计算机在性能、用途和规模上有所不同,但其基本结构都遵循冯·诺依曼体系结构,人们称符合这种设计的计算机为冯·诺依曼模型。这就决定了计算机硬件系统是由运算、控制、存储、输入、输出五个部分组成的,这五个部分又可以归纳为两个大类,即主机部分和外设部分。计算机的硬件如图1-3所示。
图1-3 计算机的硬件
1.4.1.1 运算器
运算器(Arithmeticand Logic Unit,ALU)是计算机处理数据形成信息的加工厂,它的主要功能是对二进制数码进行算术或逻辑运算,所以也称为算术逻辑部件。所谓算术运算就是常用的加、减、乘、除,以及乘方、开方等数学运算;而逻辑运算则指的是逻辑变量之间的运算,即通过与、或、非等基本操作对二进制数进行逻辑判断。
计算机之所以能够完成各种复杂操作,最根本的原因是运算器的运行。参加运算的数全部是在控制器的统一指挥下从内存储器中提取到运算器里,由运算器完成运算任务。运算器处理的对象是数据,处理的数据来自存储器,处理后的结果通常送回存储器或暂时存储在运算器中。数据长度和表示方法对运算器的性能影响极大。计算机的字长大小决定了计算机的运算精度,字长越长,所能处理的数的范围越大,运算精度越高,处理速度越快。
以“1+3=?”的简单算术运算为例,看计算机的运算过程。在控制器的作用下,计算机分别从内存中读取操作数,并将其暂存在寄存器A和寄存器B中。运算时,两个操作数同时传至ALU,在ALU中完成加法操作。执行后的结果根据需要被传送至存储器的指定单元或运算器的某个寄存器中。运算器的结构示意图如图1-4所示。
图1-4 运算器的结构示意图
运算器的性能指标是衡量整个计算机性能的重要因素之一,与运算器相关的性能指标包括计算机的字长和运算速度。字长在前文已经介绍过了,这里不再赘述。计算机的运算速度通常是指计算机每秒钟能执行加法指令的数目,一般用百万次/秒(MilionInstructionsPerSecond,MIPS)来表示,这个更能直观地反映计算机的运行速度。
字长:指计算机部件一次能同时处理的二进制数的位数。作为存储数据,字长越长,则计算机的运算精度就越高;作为存储指令,字长越长,则计算机的处理能力越强。目前普遍使用的英特尔公司和AMD公司的微处理器的微机大多支持32位字长或64位字长,这就意味着该类型的机器可以并行处理32位或64位二进制数的算术运算或逻辑运算。
1.4.1.2 控制器
控制器(Control Unit,CU)是计算机的心脏,由它指挥计算机各个部件自动、协调地工作。控制器的基本功能是根据指令计数器中指定的地址从内存取出一条指令,对其操作码进行译码,再由操作控制部件有序地控制各部件完成操作码规定的功能。控制器也记录操作中各个部件的状态,使计算机能有条不紊地完成程序规定的任务。
从宏观上看,控制器的作用是控制计算机各个部件协调工作。从微观上看,控制器的作用更是按一定顺序产生机器指令执行过程中所需要的全部控制信号,这些控制信号作用于计算机的各个部件,以使其完成某种功能,从而达到执行指令的目的。所以,对控制器而言,真正的作用是机器指令执行过程的控制。
控制器由指令寄存器(Instructions Register,IR)、指令译码器(Instructions Decoder ID)、程序计数器(Program Counter,PC)和操作控制器(Operation Controler,OC)四个部件组成。IR用以保存当前执行或即将执行的指令代码;ID用来解析和识别IR中所存放指令的性质和操作方法;OC则根据ID的译码结果,产生该指令执行过程中所需要的全部控制信号和时序信号;PC总是保存下一条要执行的指令地址,从而使程序可以自动、持续地运行。控制器结构简图如图1-5所示。
图1-5 控制器结构简图
1.机器指令
为了让计算机按照人的意识和思维正确运行,必须设计一系列计算机可以真正识别和执行的语言——机器指令。机器指令是一个按照一定格式构成的二进制代码串,用来描述一台计算机可以理解并执行的基本操作。计算机只能执行指令,它被指令所控制。机器指令通常由操作码和操作数两部分组成。
(1)操作码:指明指令所要完成操作的性质和功能。
(2)操作数:指明操作码执行时的操作数。操作数的形式可以是数据本身,也可以是存放数据的内存单元地址或寄存器名称。操作数又分为源操作数和目的操作数。源操作数指明参加运算的操作数来源;目的操作数指明保存运算结果的存储单元地址或寄存器名称。指令的基本格式如表1-3所示。
表1-3 指令的基本格式
2.指令的执行过程
计算机的工作过程就是按照控制器的控制信号自动、有序地执行指令。指令是计算机正常工作的前提,所有程序都是由一条条指令序列组成的。一条机器指令的执行需要有获得指令、分析指令、执行指令。大致过程如下所述。
(1)获得指令:从存储单元地址等于当前程序计数器PC的内容的那个储存单元中读取当前要执行的指令,并把它存放到指令寄存器IR中。
(2)分析指令:指令译码器ID分析该指令(称为译码)。
(3)生成控制信号:操作控制器根据指令译码器ID的输出(译码结果),按一定的顺序产生该指令所需的控制信号。
(4)执行指令:在控制信号的作用下,计算机各部件完成相应的操作,实现数据的处理和结果的保存。
(5)重复执行:计算机程序计数器PC中新的指令地址,重复执行上述4个过程,直至执行到指令结束。
控制器和运算器是计算机的核心部件,这两个部分合称为计算机的中央处理器(Central Processing Unit,CPU),其外形如图1-6所示。在微型计算机中通常称为微处理器(Micro Processing Unit,MPU)。微型计算机的发展与微处理器的发展是同步的。
图1-6 CPU外形
时钟主频指CPU的时钟频率,是计算机性能的一个重要指标,它的高低一定程度上决定了计算机运行速度的高低。主频以GHz为单位,一般来说,主频越高,速度越快。由于微处理器发展迅速,微机的主频也在不断提高。
1.4.1.3 存储器
存储器(memory)是计算机存储信息的“仓库”。所谓“信息”是指计算机系统所要处理的数据和程序。程序是一组指令的集合。存储器是有记忆能力的部件,用来存储程序和数据。从存储器中取出信息,不破坏原有的内容,这种操作称为存储器的读出;把信息写入存储器,原来的内容被抹掉,这种操作称为存储器的写入。存储器可分为内存储器和外存储器两大类。
内存储器简称内存(又称主存),是计算机中信息交流的中心,内存的存取速度和大小直接影响计算机的运算速度。内存条外形如图1-7所示。
图1-7 内存条外形
内存一般采用半导体存储器。根据工作方式的不同,内存又可分为随机存储器和只读存储器两部分。
随机存储器(RAM):在计算机运行过程中所储存内容可以随时读出,又可以随时写入新的内容或修改已存入的内容,断电后所储存的内容全部丢失。RAM又可以分为静态RAM和动态RAM两种。静态RAM的特点是只要不断电,信息就可长时间地保存,其优点是速度快,不需要刷新,工作状态稳定;缺点是功耗大,集成度低,成本高。动态RAM的优点是使用组件少,功耗低,集成度高;缺点是存取速度较慢且需要刷新。
只读存储器(ROM):所储存的内容只能读出,不能写入。只读存储器的内容不可随便改变,所以断电后所储存的内容不会丢失。
外储存器设置在主机外部,简称外存(又称辅助存储器,简称辅存),外存是内存的扩充,外存的存储容量大,存取速度慢,主要用来长期存放“暂时不用”的程序和数据。通常外存不和计算机的其他部件直接交换数据,只和内存交换数据。常见的外存有U盘、磁带、光盘等。
1.4.1.4 输入/输出设备
输入/输出设备(Input/Output Device,I/O设备,也称外部设备)是计算机系统不可缺少的组成部分,是计算机与外部进行信息交换的中介,也是人与计算机联系的桥梁。
1.输入设备
输入设备(Input Device)是向计算机输入数据和信息的设备,是计算机与用户或其他设备通信的桥梁。键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、游戏杆、语音输入装置等都属于输入设备。输入设备是人或外部与计算机进行交互的一种装置,用于把原始数据和处理这些数据的程序输入到计算机中。计算机能够接收各种各样的数据,既可以是数值型的数据,也可以是各种非数值型的数据,如图形、图像、声音等都可以通过不同类型的输入设备输入到计算机中,进行存储、处理和输出。
2.输出设备
输出设备(Output Device)是计算机的终端设备,用于把各种计算结果的数据或信息以数字、字符、图像、声音等形式表示出来。其主要功能是将内存中计算机处理后的信息以能为人或其他设备所接受的形式输出。输出设备种类有很多,常见的有显示器、打印机、绘图仪、影像输出系统、语音输出系统、磁记录设备等。打印机和显示设备已成为大多数计算机和终端所必需的设备。
3.其他输入/输出设备
目前,不少设备同时集成了输入/输出两种功能,例如,调制解调器(Modem),它是数字信号和模拟信号之间的桥梁。用一台调制解调器将计算机的数字信号转换成模拟信号,通过电话线传送到另一台调制解调器上,经过解调,再将模拟信号转化为数字信号送入计算机,实现两台计算机之间的数据通信。再比如,触摸屏既可以以“显示器”身份作为计算机输出设备,也可以以“键盘”的身份作为计算机输入设备。
1.4.1.5 计算机的结构
计算机硬件系统的五大部件并不是孤立存在的,它们在处理信息的过程中需要互相连接以传输数据。计算机的结构反映了计算机各个组成部件之间的连接方式。
1.直接连接
最早的计算机基本上都采用直接连接的方式。运算器、存储器、控制器和外部设备等组成部件之中的任意两个组成部件,相互之间基本上都有单独的连接线路。这样的结构可以获得最高的连接速度,但不易扩展。如由冯·诺依曼在1952年研制的计算机IAS,就采用了直接连接的结构。IAS是计算机发展史上重要的发明之一,它是世界上第一台采用二进制的存储程序计算机,也是第一台将计算机分成运算器、控制器、存储器、输入设备和输出设备等组成部分的计算机,后来把符合这种设计的计算机称为冯·诺依曼机。IAS是现代计算机的原型,大多数现代计算机仍在采用这样的设计。
2.总线结构
所谓总线(Bus)就是系统部件之间传送信息的公共通道,各部件由总线连接,并通过它传递数据和控制信号。总线经常被比喻为“高速公路”,它包含了运算器、控制器、存储器和I/O部件之间进行信息交换和控制传递所需要的全部信号。按照信号的性质划分,总线一般又分为以下三个部分。
(1)数据总线:一组用来在存储器、运算器、控制器和I/O部件之间传输数据信号的公共通道。一方面是用于CPU向主存储器和I/O接口传送数据,另一方面是用于主存储器和I/O接口向CPU传送数据,是双向的总线。数据总线的位数是计算机的一个重要指标,它体现了传输数据的能力,通常与CPU的位数相对应。
(2)地址总线:CPU向主存储器和I/O接口传送地址信息的公共通路。地址总线传送地址信息,地址是识别信息存放位置的编号,地址信息可能是存储器的地址,也可能是I/O接口的地址。它是自CPU向外传输的单向总线。由于地址总线传输地址信息,所以地址总线的位数决定了CPU可以直接寻址的内存范围。
(3)控制总线:一组用来在存储器、运算器、控制器和I/O部件之间传输控制信号的公共通路。控制总线是CPU向主存储器和I/O接口发出命令信号的通道,又是外界向CPU传送状态信息的通道。
3.总线标准
总线在发展过程中已逐步标准化,常见的总线标准有ISA总线、PCI总线、AGP总线和EISA总线等,分别简要介绍。
(1)ISA总线:采用了16位的总线结构,适用范围广,有一些接口卡就是根据ISA 标准产生的。
(2)PCI总线:采用了32位的高性能总线结构,可扩展到64位,与ISA总线兼容。目前,高性能微型计算机主板上都设有PCI总线。该总线标准性能先进、成本较低、可扩充性强,现已成为奔腾级以上计算机普遍采用的外设接插总线。
(3)AGP总线:随着三维图形的应用而发展起来的一种总线标准。AGP总线在图形与内存之间提供了一条直接的访问途径。
(4)EISA总线:ISA总线的扩展。
总线结构是当今计算机普遍采用的结构,其特点是结构简单清晰、易于扩展,尤其是在I/O接口的扩展功能方面,由于采用了总线结构和I/O接口标准,几乎可以随心所欲地在计算机中加入新的I/O接口卡。基于总线结构的计算机结构示意图如图1-8所示。
图1-8 基于总线结构的计算机结构示意图
1.4.2 计算机软件系统
软件系统是指使用计算机所运行的全部程序的总称。软件是计算机的灵魂,是发挥计算机功能的关键。有了软件,人们可以不必过多地去了解机器本身的结构与原理,就可以方便灵活地使用计算机,从而使计算机有效地为人类工作、服务。
1.4.2.1 软件系统概述
随着计算机应用的不断发展,计算机软件在不断积累和完善的过程中,形成了极为宝贵的软件资源。它在用户和计算机之间架起了桥梁,给用户的操作带来极大的方便。
在计算机系统中,硬件和软件之间并没有一条明确的分界线。一般来说,任何一个由软件完成的操作也可以直接由硬件来实现,而任何一个由硬件执行的指令也能够用软件来完成。硬件和软件有一定的等价性,例如图像的解压。以前低档计算机是用硬件解压,现在高档计算机则用软件来实现解压。
软件和硬件之间的界线是经常变化的,要从价格、速度、可靠性等多种因素综合考虑,来确定哪些功能用硬件实现合适,哪些功能用软件实现合适。
1.4.2.2 软件系统组成
软件是指程序、程序运行所需要的数据,以及开发、使用和维护这些程序所需要的文档的集合。计算机软件极为丰富,要对软件进行恰当的分类是相当困难的,通常的分类方法是将软件分为系统软件和应用软件两大类。软件系统的组成如图1-9所示。
图1-9 软件系统的组成
1.系统软件
系统软件是控制计算机的运行,管理计算机的各种资源,并为应用软件提供支持和服务的一类软件。在系统软件的支持下,用户才能运行各种应用软件。系统软件通常包括操作系统、程序语言处理系统和数据库管理系统。
(1)操作系统:为了使计算机系统的所有软/硬件资源协调一致、有条不紊地工作,就必须有一种软件来进行统一的管理和调度,这种软件就是操作系统。操作系统的主要功能就是管理和控制计算机系统的所有资源(包括硬件和软件资源)。
操作系统通常分成以下五类。
① 单用户操作系统。
② 批处理操作系统。
③ 分时操作系统。
④ 实时操作系统。
⑤ 网络操作系统。
(2)程序语言处理系统:软件经历了由机器语言、汇编语言到高级语言的发展阶段,计算机硬件唯一识别和执行的是由机器指令组成的机器语言程序。机器语言实际上就是一串串的二进制代码,它虽然能被计算机直接识别,但对使用计算机的人来说,这些代码难认、难记、难改,因此就产生了有利于人们编写程序的汇编程序设计语言和高级程序设计语言,比如常用的C语言、VB等就属于高级语言。
(3)数据库管理系统:专门用于管理大量数据和开发数据管理软件的系统软件,比如SQLServer、Oracle等。
2.应用软件
应用软件是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合,分为应用软件包和用户程序。应用软件包是利用计算机解决某类问题而设计的程序的集合,供多用户使用。应用软件是为了满足用户不同领域、不同问题的应用需求而提供的那部分软件。它可以拓宽计算机系统的应用领域,放大硬件的功能。应用软件具有无限丰富和美好的开发前景。
应用软件一般都具有特定应用目的。它往往是适用于某些用户、某些用途的应用程序,如管理软件、计算机辅助设计软件、游戏和教学软件等。一般说来,它有比较强的特定功能。
1.4.3 计算机操作系统
操作系统是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分,负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本任务。操作系统的种类很多,各种设备安装的操作系统可从简单到复杂,可从手机的嵌入式操作系统到超级计算机的大型操作系统。目前流行的现代操作系统主要有Android、BSD、iOS、Linux、Mac OS X、Windows、WindowsPhone和z/OS等。除了Windows和z/OS等少数操作系统外,大部分操作系统都为类UNIX操作系统。
1.4.3.1 操作系统简介
操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。操作系统相当于是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其他应用软件提供支持等。使计算机系统所有资源最大限度地发挥作用,提供了各种形式的用户界面,使用户有一个好的工作环境,为其他软件的开发提供必要的服务和相应的接口。
操作系统的种类相当多,各种设备安装的操作系统可从简单到复杂,可分为智能卡操作系统、实时操作系统、传感器节点操作系统、嵌入式操作系统、个人计算机操作系统、多处理器操作系统、网络操作系统和大型机操作系统。按应用领域划分主要有三种:桌面操作系统、服务器操作系统和嵌入式操作系统。
1.桌面操作系统
桌面操作系统主要用于个人计算机。个人计算机市场从硬件架构上来说主要分为两大阵营,PC与Mac机;从软件上可主要分为两大类,分别为类UNIX操作系统和Windows操作系统。
(1)UNIX和类UNIX操作系统:Mac OS X、Linux发行版(如Debian、Ubuntu、Linux Mint、openSUSE、Fedora等)。
(2)微软公司Windows操作系统:Windows XP、WindowsVista、Windows 7、Windows8、WindowsNT等。
2.服务器操作系统
服务器操作系统一般指的是安装在大型计算机上的操作系统,比如Web服务器、应用服务器和数据库服务器等。服务器操作系统主要集中在以下三大类。
(1)UNIX系列:SUN Solaris、IBM-AIX、HP-UX、FreeBSD等。
(2)Linux系列:Red Hat Linux、CentOS、Debian、Ubuntu等。
(3)Windows系列:WindowsServer 2003、WindowsServer 2008、WindowsServer 2008 R2等。
3.嵌入式操作系统
嵌入式操作系统是应用在嵌入式系统的操作系统。嵌入式系统广泛应用在生活的各个方面,涵盖范围从便携设备到大型固定设施,如数码相机、手机、平板电脑、家用电器、医疗设备、交通灯、航空电子设备和工厂控制设备等,越来越多的嵌入式系统安装有实时操作系统。
在嵌入式领域常用的操作系统有嵌入式Linux、WindowsEmbedded、VxWorks等,以及广泛使用在智能手机或平板电脑等消费电子产品的操作系统,如Android、iOS、Symbian、WindowsPhone和BlackBerry OS等。
1.4.3.2 操作系统组成部分
操作系统理论研究者有时把操作系统分成以下四大部分:
1.驱动程序
底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。
2.内核
操作系统内核部分,通常运行在最高特权级,负责提供基础性、结构性的功能。
3.接口库
接口库是一系列特殊的程序库,它们职责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口(API),是最靠近应用程序的部分。例如,GNU C运行期库就属于此类,它把各种操作系统的内部编程接口包装成ANSI C和POSIX编程接口的形式。
4.外围
外围是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及UNIX/Linux中各种守护进程都通常被划归此列。
并不是所有的操作系统都严格包括这四大部分。例如,在早期的微软视窗操作系统中,各部分耦合程度很深,难以区分彼此。而在使用外核结构的操作系统中,则根本没有驱动程序的概念。
1.4.3.3 操作系统主要功能
操作系统的主要功能是资源管理、程序控制和人机交互等。计算机系统的资源可分为设备资源和信息资源两大类。设备资源指的是组成计算机的硬件设备,如中央处理器、主存储器、磁盘存储器、打印机、磁带存储器、显示器、键盘输入设备和鼠标等。信息资源指的是存放于计算机内的各种数据,如文件、程序库、知识库、系统软件和应用软件等。
操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。以现代观点而言,一个标准个人计算机的操作系统应该提供以下的功能。
1.资源管理
系统的设备资源和信息资源都是操作系统根据用户需求按一定的策略来进行分配和调度的。操作系统的存储管理就负责把内存单元分配给需要内存的程序以便让它执行,在程序执行结束后将它占用的内存单元收回以便再使用。对于提供虚拟存储的计算机系统,操作系统还要与硬件配合做好页面调度工作,根据执行程序的要求分配页面,在执行中将页面调入和调出内存,以及回收页面等。
2.处理器管理
处理器管理是操作系统资源管理功能的另一个重要内容。在一个允许多道程序同时执行的系统里,操作系统会根据一定的策略将处理器交替地分配给系统内等待运行的程序。一道等待运行的程序只有在获得了处理器后才能运行。一道程序在运行中若遇到某个事件,例如启动外部设备而暂时不能继续运行下去,或一个外部事件的发生,等等。操作系统就要来处理相应的事件,然后将处理器重新分配。
3.操作系统的设备管理功能
操作系统的设备管理功能主要是分配和回收外部设备及控制外部设备按用户程序的要求进行操作等。对于非存储型外部设备,如打印机、显示器等,它们可以直接作为一个设备分配给一个用户程序,在使用完毕后回收,以便给另一个需求的用户使用。对于存储型的外部设备,如磁盘、磁带等,则是提供存储空间给用户,用来存放文件和数据。存储型外部设备的管理与信息管理是密切结合的。
4.信息管理
信息管理是操作系统的一个重要的功能,主要是向用户提供一个文件系统。一般来说,一个文件系统向用户提供创建文件、撤销文件、读写文件、打开和关闭文件等功能。有了文件系统后,用户可按文件名存取数据而无须知道这些数据存放在哪里。这种做法不仅便于用户使用而且还有利于用户共享公共数据。此外,由于文件建立时允许创建者规定使用权限,这就可以保证数据的安全性。
5.程序控制
一个用户程序的执行自始至终是在操作系统控制下进行的。一个用户将他要解决的问题用某一种程序设计语言编写了一个程序后就将该程序连同对它执行的要求输入到计算机内,操作系统就根据要求控制这个用户程序的执行直到结束。操作系统控制用户的执行主要有以下一些内容:调入相应的编译程序,将用某种程序设计语言编写的源程序编译成计算机可执行的目标程序,分配内存储等资源将程序调入内存并启动,按用户指定的要求处理执行中出现的各种事件,以及与操作员联系请示有关意外事件的处理等。
6.人机交互
操作系统的人机交互功能是决定计算机系统“友善性”的一个重要因素。人机交互功能主要靠可输入输出的外部设备和相应的软件来完成。可供人机交互使用的设备主要有键盘显示、鼠标、各种模式识别设备等。与这些设备相应的软件就是操作系统提供人机交互功能的部分。人机交互部分的主要作用是控制有关设备的运行和理解,并执行通过人机交互设备传来的有关的各种命令和要求。
7.进程管理
不管是常驻程序或者应用程序,它们都以进程为标准执行单位。当年运用冯·诺依曼架构建造计算机时,每个中央处理器最多只能同时执行一个进程。早期的OS(例如DOS)也不允许任何程序打破这个限制,且DOS同时只能执行一个进程(虽然DOS自己宣称它们拥有中止并等待驻留(TSR)能力,可以部分且艰难地解决这问题)。现代的操作系统,即使只拥有一个CPU,也可以利用多进程(multitask)功能同时执行复数进程。进程管理指的是操作系统调整复数进程的功能。
由于大部分的计算机只包含一颗中央处理器,在单内核(Core)的情况下多进程只是简单迅速地切换各进程,让每个进程都能够执行,在多内核或多处理器的情况下,所有进程通过许多协同技术在各处理器或内核上转换。越多进程同时执行,每个进程能分配到的时间比率就越小。很多OS在遇到此问题时会出现诸如音效断续或鼠标跳格的情况(称做崩溃,一种OS只能不停地执行自己的管理程序并耗尽系统资源的状态,其他使用者或硬件的程序皆无法执行)。进程管理通常实现了分时的概念,大部分的OS可以利用指定不同的特权等级(priority),为每个进程改变所占的分时比例。特权越高的进程,执行优先级越高,单位时间内占的比例也越高。交互式OS也提供某种程度的回馈机制,让直接与使用者交互的进程拥有较高的特权值。
8.内存管理
根据帕金森定律:“你给程序再多内存,程序也会想尽办法耗光”,因此程序员通常希望系统给他无限量且无限快的存储器。大部分的现代计算机存储器架构都是层次结构式的,最快且数量最少的暂存器为首,然后是高速缓存、存储器和最慢的磁盘存储设备。而操作系统的存储器管理提供查找可用的记忆空间、配置与释放记忆空间,以及交换存储器和低速存储设备的内含物等功能。此类又被称做虚拟内存管理的功能大幅增加每个进程可获得的记忆空间(通常是4GB,即使实际上RAM的数量远少于这数目)。然而这也带来了微幅降低运行效率的缺点,严重时甚至也会导致进程崩溃。
9.存储器管理
如果同时有许多进程存储于记忆设备上,操作系统必须防止它们互相干扰对方的存储器内容(除非通过某些协定在可控制的范围下操作,并限制可访问的存储器范围)。分区存储器空间可以达成目标。每个进程只会看到整个存储器空间(从0到存储器空间的最大上限)被配置给它自己(当然,有些位置被操作系统保留而禁止访问)。CPU事先存了几个表以比对虚拟位置与实际存储器位置,这种方法称为标签页(paging)配置。
借由对每个进程产生分开独立的位置空间,操作系统也可以轻易地一次释放某进程所占据的所有存储器。如果这个进程不释放存储器,操作系统可以退出进程并将存储器自动释放。
10.虚拟内存
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分割成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
在早期的单用户单任务操作系统(如DOS)中,每台计算机只有一个用户,每次运行一个程序,且程序不是很大,单个程序完全可以存放在实际内存中。这时虚拟内存并没有太大的用处。但随着程序占用存储器容量的增长和多用户、多任务操作系统的出现,在程序设计时,在程序所需要的存储量与计算机系统实际配备的主存储器的容量之间往往存在着矛盾。例如,在某些低档的计算机中,物理内存的容量较小,而某些程序却需要很大的内存才能运行;而在多用户多任务系统中,多个用户或多个任务更新全部主存,要求同时执行独断程序。这些同时运行的程序到底占用实际内存中的哪一部分,在编写程序时是无法确定的,必须等到程序运行时才动态分配。
为此,希望在编写程序时独立编址,既不考虑程序是否能在物理存储中存放得下,也不考虑程序应该存放在什么物理位置。而在程序运行时,则分配给每个程序一定的运行空间,由地址转换部件将编程时的地址转换成实际内存的物理地址。如果分配的内存不够,则只调入当前正在运行的或将要运行的程序块(或数据块),其余部分暂时驻留在辅存中。
在众多常用操作系统之中,除了QNX和基于Mach的UNIX等个别系统外,几乎全部采用单内核结构,例如大部分的UNIX、Linux,以及Windows(微软声称WindowsNT是基于改良的微内核架构的,尽管理论界对此存有异议)。微内核和超微内核结构主要用于研究性操作系统,还有一些嵌入式系统使用外核。
基于单内核的操作系统通常有着较长的历史渊源。例如,绝大部分UNIX的家族史都可上溯至20世纪60年代。该类操作系统多数有着相对古老的设计和实现(例如某些UNIX中存在着大量20世纪70年代、20世纪80年代的代码)。另外,往往在性能方面略优于同一应用领域中采用其他内核结构的操作系统(但通常认为此种性能优势不能完全归功于单内核结构)。
1.4.3.4 操作系统分类
操作系统种类繁多,很难用单一标准统一分类。常见的有以下几种。
根据应用领域来划分,可分为桌面操作系统、服务器操作系统、嵌入式操作系统。
根据所支持的用户数目,可分为单用户操作系统(如MSDOS、OS/2、Windows)、多用户操作系统(如UNIX、Linux、MVS)。
根据源码开放程度,可分为开源操作系统(如Linux、FreeBSD)和闭源操作系统(如Mac OS X、Windows)。
根据硬件结构,可分为网络操作系统(Netware、WindowsNT、OS/2 warp)、多媒体操作系统(Amiga)和分布式操作系统等。
根据操作系统的使用环境和对作业处理方式来考虑,可分为批处理操作系统(如MVX、DOS/VSE)、分时操作系统(如Linux、UNIX、XENIX、Mac OS X)、实时操作系统(如iEMX、VRTX、RTOS,RTWindows)。
根据存储器寻址的宽度可以将操作系统分为8位、16位、32位、64位、128位的操作系统。早期的操作系统一般只支持8位和16位存储器寻址宽度,现代的操作系统如Linux和Windows 7都支持32位和64位。
根据操作系统的技术复杂程度,可分为简单操作系统、智能操作系统(见智能软件)。所谓简单操作系统,指的是计算机初期所配置的操作系统,如IBM公司的磁盘操作系统DOS/360和微型计算机的操作系统CP/M等。这类操作系统的功能主要是操作命令的执行、文件服务、支持高级程序设计语言编译程序和控制外部设备等。