1、第02讲机器系统 导语 机器系统既是智能的载体,又是实现智能的工具。一般类似于我们人类智能系统的大脑与心智,任意一个机器系统分为硬件(含软件硬件化的固件)与软件两个方面。比较典型的机器系统就是我们最为常见的通用计算机系统。因此,我们以通用计算机系统为例来介绍机器系统及其基本工作原理。 Operating System Process Input ___ Storage Output 一般机器系统的构成原理图 我们日常使用的台式计算机或笔记本计算机就是一种典型的机器系统,可以接受数据(输入)、根据某些规则来处置这些数据(处理)、产生处理结
2、果(输出),并储存这些结果(存储)为以后所用。本讲就是为诸位介绍机器系统的一般功能实现原理。 自左顺时针依次是掌上机,小型机,大型机,超级机,专用机。 第2.1节数据存储 无论是人脑,还是机器,信息表征一直是一个关键问题。对于机器而言,信息表征就是数据存储问题。信息对于心智而言,主要是知识;信息对于机器而言,则就是数据。区分两者的主要标准就是意义解读。数据仅仅是对事物的一种编码形式,而知识则不仅仅是编码,其中对于主体而言,还有更加重要的“意义”。但对于机器而言,我们只能关心其中的编码形式与存放,这就是数据存储所关心的问题。 1、数字位及其存储 就像人脑神经系统通过基本单元神
3、经元来进行信息加工一样,机器系统也有自己的基本单元,那就是数字位。所谓数字位(binary digit),简称位,可以表示0或1中的一个数字,用以表征简单事物两种状态之一,比如神经元兴奋或抑制、开关的开或关、粒子自旋手性方向的上或下、易经卦象爻符的阳爻或阴爻、人类性别的男或女,如此等等。 当然,就一般情况而言,0或1仅仅看作是两个不同的符号,没有固定含义。但排列有序的系列数字位,却可以用来表征各种事物对象,比如可以表示数值(如整数)、编码符号(如字母)、刻画声音(一维数组)、描述图像(二维数组)等等,一切你需要表征的事物对象。下面给出的就是一种对八卦进行数字位的排列表征。 000
4、001 100 乾 兑 巽 010 离 坎 101 震 艮 坤 011 110 111 用数位来编码八卦,即用0编码阳爻,用1编码阴爻,并按照经卦构成规律来排列(从里向外排列),就可以形成左图的系统编码。当年莱布尼兹就是受到《易经》启发,才发明了二进制,只是对阳爻与阴爻的次序理解有误。 从物理上讲,存储一个数字位需要使用某种具有两种状态的介质,并能够对其进行某种变换操作,其中一个状态代表0,另一种
5、状态代表1。目前机器系统通行采用的物理介质是电磁介质,但从未来发展的趋势看,生物介质、量子介质可能是更好的选择。下面我们仅对其中电磁介质及其逻辑变换原理进行介绍。 这是目前机器系统中采用的主要存储方式,为了说明其中的原理,我们必须介绍逻辑门及其逻辑变换。在逻辑电路设计中,对数字位进行逻辑变换的最基本单元称为“门”(gate)的装置。每个门可以根据输入数字位来给出特定需要的输出数字位。不同的门往往根据其完成变换功能的不同加以命名,分别称为非门、与门、或门及异或门。非门完成非变换、与门完成与变换、或门完成或变换、异或门完成与或变换。各种逻辑门及其具体变换参见如下图表。从逻辑门的一头输入一个或两个
6、数字位,另一头输出一个数字位。 输 输 输入 输出 入 出 0 1 非门 1 0 输 输 输入 输出 入 出 0 0 0 与门 0 1 0 1 0 1 1 1 1 输 输 输入 输出 入 出 0 0 0 或门 0 1 0 1 0 0 1 1
7、 1 输 输 输入 输出 入 出 0 0 0 异或 0 1 1 1 0 1 1 1 0 基本逻辑门及其输入输出逻辑关系 逻辑门是电子计算机的基本模块,通过基本逻辑门还可以复合出一些复杂功能的组合门,加上非门的逻辑变换,采用不同的逻辑门(下面列表给出了常用的逻辑门),可以组合出各种不同的数字电路,完成更加复杂的逻辑变化功能。 常用逻辑门列表 若干更加复杂的逻辑门举例 特别是,采用一种称为触发器(flip-flog)电路装置就可
8、以实现一个数字位的存储。触发器的数字电路如下面给出示意图所示,其功能是输出0或1并保持其状态直到有新的电路脉冲改变其状态。当有新的输入脉冲(数字位值)输入时,上下数字位不同的加载,触发器将有不同反应,如下图所示。这样就可以实现一个数字位的存储。 触发器的工作原理 1 0 一个简单的触发器电路 将上边的输入置1 1 0 1 1 1 1 1 1 1 0
9、 0 1 这将使或门的输出变为1, 将上边的输入置为0,与 然后与门的输出变为1 门的1使或门不改变1 一种更加完善的触发器数字电路如图所示。触发器是构建数字电子存储器(也是其他复杂电路)的基础组件,采用相互关联的一排触发器,就可以构建任意存储n位数字位的存储单元。 一种更加完善的触发器原理图 除了触发器这种数字电路存储方式外,采用电磁介质存放数字位的存储技术还有磁芯存储器(core)。磁芯存储器采用电线环行缠绕磁性介质的方式来实现0或1数字位的表征存储,我们知道根据电磁学的知识,当电流从不同方向流经环行缠绕的电
10、线时,磁性介质(磁芯)会产生两种相反的磁化方向;反过来,当对已经磁化的磁芯通以电流时,则又可以探测所产生的电流效应来确定磁化方向。这样,如果两种磁化方向分别代表0与1,那么就可以利用这种磁芯装置来存储数字位。 还有一种更新的电磁存储技术,那就是利用电容的充电与未充电两种状态来表征0或1,从而实现数字位的存储。这种技术已经广泛应用于集成电路的设计之中,来生产大规模的存储器,在一块芯片上可以集成数百万个微小电容。这种电容存储器通过刷新电路技术,可以制作成动态存储器,使得保存的数据保持稳定。当然,不管哪种电磁性存储器,触发器、磁芯器,还是电容器,断电后保存的数据都将不复存在,这就是为什么每次机器启
11、动时,系统要重新读入数据到内存的缘故。 2、存储器及其容量 为了满足大规模数据存储与处理的需要,目前的机器均拥有十分庞大的主存储器,有数目庞大的电路组群构成,其中每一个电路都能单独存取数据。为了方便数据的存取,机器主存储器中的这些存储电路以可控单元(cell)排列而成。一般一个单元表征一个字(word),即占8个数字位。一个字也称为字节(byte,简称B)也是衡量存储器容量的基本单位。 因为存储器均按照二进制设计,所以机器存储容量均用2的幂次来计算,并以210=1024接近1000为单位,用kolibyte(KB)表示;以220=1048576为单位,用megabyte(MB)表示,以及
12、以230=1073741824为单位,用gigabyte(GB)。目前大型机器拥有的字节数可达数十亿之巨。 为了方便存取存储单元中的数据,在机器中每个存储单元均赋以一个唯一性的地址,系统可以通过存储地址来读取或存放数据。每个存储单元中的8个数字位也按照从高到低依次标记,如下图所示。这样,系统就可以存取到每一个数字位。 高端 0 1 0 1 1 0 1 0 低端 最高有效位 最低有效位 另外,需要占用超过一个字节的数据,则通过顺序或随机方式来加以组织。目前大多数机器的存储器采用的是随机存储方式组织数据的存取,所以目前机
13、器的存储器也称为随机访问存储器(random access memory, RAM)或动态随机访问存储器(DRAM)。存储单元按照固定的地址来访问,如本图所示。每一个存储单元都被赋予了一个唯一的“名字”,称为地址(address)。 主存储器的容量尽管十分巨大,但由于带电工作方式(离电后数据的易失性)以及不断增长的数据量存储需要,目前大多数机器除了主存储器外,一般都带有容量更大的外部存储设备,如磁盘(优盘、硬盘)、磁带和光盘等,存储容量以TB(1040)计。我们一般称其为大容量存储器。在大容量存储器中,数据往往以文件的单元进行存取。由于这些大容量存储器主要以扇区存放数据的,没有随机直接按地址
14、访问存储的内容,因此读取效率要远远低于主存储器。 ROM 散热风 扇下面 是CPU RAM 机器系统主板上的CPU、RAM 和ROM 可移动储存器 可扩展储存器 内置式储存器 非易失储存器 对于存储器容量的需求是没有止境的,人们总是希望用尽可能小的尺度内开发尽可能多的存储单元。因此,各种新型的存储技术一直在不断的开发之中。特别是随着量子计算、纳米技术、隧道扫描技术等的不断推进,采用新型超高密度存储技术开发的存储器会达到令人瞠目结舌的地步。比如,可以将1数字位(1 bit)的数据信息保存在一个原子上,而现有的存储器要保存等量的数据信息需要至少100
15、万个磁性原子。也就是说,同样尺度的存储器,这种新型超高密度存储器是目前存储器容量的100万倍。我们期待这一天的早日来临。 可以将1比特(1 bit)的数据信息保存在一个单独的原子上。而在此之前,要保存等量的数据信息需要至少100万个磁性原子 IBM苏黎世研究实验室 则研发出了分子开关 3、数据的二进制表示 归纳从上述数据存储技术可以看出,对于给定的数据,系统采用一串数字位,每个数字位有两种取值的可能选择,数据的这种表征方式,被称为二进制数据表示。不失一般性,对于任意M进制表示的一个n位数据,可以抽象为如下形式: XnXn-1…Xi…X2X1 其对应的十进制数值
16、M≥2)为: XnMn-1+Xn-1Mn-2+…+XiMi-1+…+X2M1+X1M0 其中Xi∈{0,1,……,n-1}表示第i位的取值。 按照这样的计算公式,我们可以非常容易地将一个给定数据在M进制与十进制之间做相互转换表示(如果是一进制表示的数值,直接计数出现0符号的个数,规定出现l个0代表数值l-1)。比如对于二进制表示的 1010110 对应的十进制数就是 1×26+0×25+1×24+0×23+1×22+1×21+0×20 结果就是86。 反之,将十进制数据转化为M进制表示,只需要不断用M除以该数的商数(初始商数为该数本数),依次记录下第i次(代表第i位)计算的余
17、数,就是第i数字位上的取值,直待当前商数为0终止。比如对于十进制数值123,经这样的计算可以得到二进制表示的1111011。类似地,也可以得到三进制表示的11120,如此等等。 将十进制数123转换成等值的二进制数: 除以2的商(取整) 余数 123/2 = 61 1 61/2 = 30 1 30/2 = 15 0 15/2 = 7 1 7/2 = 3 1 3/2 = 1 1 1/2 = 0 1 自下而上地依次将余数加以汇集,即得到对应的二进制数:1111011。 十六进制基
18、本数字的 二进制编码对应表 除了二进制与十进制,在数据处理与编码中为了弥补二进制表示的冗长与乏味,还经常用十六进制表示法。在十六进制表示中,表示十六个不同状态的数字分别是0、1、2、……、14、15,为了区分二位数10、11、……15不是1跟0、1、……5的组合,在十六进制中用A、B、C、D、E、F分别代表10、11、……15。比如86的十六进行表示就是56,如果是与二进制表示相互转化,则可以按照二进制编码,直接分段转换。比如,十六进制5的二进制是0101,6的二进制是0110,因此十六进制56的二进制就是01010110。反之也然。 至于任何进制数字的运算一如十进制,比如加法的“逢十进
19、一”就变成“逢M进一”,减法“借一得十”就成为“借一得M”,小数的表示从“1/10、1/100、……”变成了“1/M、1/M2、……”,如此等等。 既然表示数据的形式可以采用任意M进制,那么目前的机器系统中为什么偏偏要选择二进制,而不选择人们熟悉的十进制呢? 实际上从机器数制表示效率上,可以推导证明,采用e进制效率最高。这里e为自然底数,介于2与3之间,但更接近3。所以从这样的证明结果,我们可以得出这样的结论,采用三进制要比二进制更为理想。不过,就实现的方便而言,由于二进制仅需要设备单元两种状态,这样便于实现。而对于电子设备的实现而言,区分电位的高低又比较容易,因此采用二进制也就成为设计目
20、前机器系统的必然。 只要采用比较合适的编码技巧,运用二进制(任意进制都一样可以做到)可以对任意事物对象进行表征。对智能科学技术领域,比较重要的表征对象包括如下三个方面:(a)文本对象的表征(文字符号);(b)听觉对象的表征(音频信号);(c)视觉对象的表示(视频图像)。有关各种智能媒体数据的表示方法,可以参见智能多媒体处理技术方面的图书,这里不作深入介绍了。总之,二进制是目前机器系统的基本表征方法,掌握二进制表示方法对于进一步了解智能计算处理的特点有着十分重要的意义。 第2.2节数据处理 有了数据的机器存储表征,要对表征的数据对象进行处理加工,接下来机器需要解决的就是数据加工问题。数据加
21、工的机器实现涉及到更加复杂的机器系统组合结构,因此我们首先从目前机器的一般体系结构说起。 1、机器组成结构 作为一台完整的计算机器,一般有主存储器、中央处理器、输入输出设备,以及其他一些辅助装置组成(如图所示)。输入输出设备主要完成数据的输入与输出,主存储器就像上面介绍的那样主要存放数据,而中央处理器就是实现数据加工任务的。 控制器 运算器 内存储器 输入设备 输出设备 外存储器 数据的流动与流向 控制信号的流动与流向 机器组成结构示意图 控制器:统一指挥并控制机器各部件协调工作的中心部件,所依据的是机器指令。
22、 运算器:对数据进行算术运算和逻辑运算。 内存储器:存储现场待加工的信息与中间结果,包括机器指令和数据。 外存储器:存储需要长期保存的各种信息。 输入设备:接收外界向机器输送的信息。 输出设备:将机器中的信息向外界输送。 其中,控制器、运算器及其附属的各种寄存器构成机器系统的核心部分,称为中央处理器,其与内存一起构成系统单元;而外存、输入设备和输出设备,则称为的外部设备。 中央处理器、内存、外存之间的数据交换示意图 中央处理器(central processing unit),简称CPU,主要任务就是控制数据的操作,比如加法或减法操作,其电路设计并不与主存直接相连,而是相对独
23、立自成一体。CPU主要包括三个组成部分:(1)运算器(operator),由进行数据操作的电路构成,因此也称为算术逻辑单元;(2)控制器(controller),由协调数据操作动作的电路构成,因此也称为计算控制单元;(3)寄存器(register):有临时保存数据的电路构成,与主存单元很相似,分为通用寄存器和特殊寄存器两种,是属于CPU自己的存储单元。 通用寄存器主要作为临时存贮单元来存储CPU进行操作的数据,主要是保存运算器的输入输出数据。对主存存储数据的存取则通过控制器来完成,其主要任务包括:(1)将主存中的数据转移到通用寄存器中;(2)通知运算器数据所保存的具体寄存器;(3)开启运算器
24、中某个特定的运算电路完成运算;(4)通知运算器保存运算结果的具体寄存器。 CPU与主存、外设之间通过总线相互连接,如图所示。CPU可以通过提供的存储单元地址,利用总线来实现选择、读取或存放数据。在总线中能够同时传送的二进制位数,称为总线的宽度,一般为64 bits。 键盘 显示器 CPU 系统总线 CD-ROM 硬盘 RAM 这样,CPU完成主存中两个数据之间的加法运算,就需要通过如下五个步骤来完成: (a)根据提供的地址从主存中读取一个数值放入一个寄存器; (b)根据提供的地址
25、从主存中读取另一个数值放入另一个寄存器; (c)启动加法运算电路(运行加法器),以上述两个寄存器作为输入,并将计算结果存放在另一个指定的寄存器; (d)根据提供的地址将结果寄存器中的数据写入主存中; (e)结束CPU的运行。 上述加法运算,简单地说就是先将数据读入CPU,然后在CPU内部完成加法,最后再把结果保存到主存中。 除了从主存中读取数据进行操作运算外,也可以将程序命令存放在主存中,然后CPU从主存中依次读取这些程序指令,并按照程序指令来进行运算。这就是程控式计算的核心思想与实现方式。需要说明的是,随着集成电路规模的不断发展,现在的机器系统中往往拥有众多的CPU而不仅仅只有一个
26、CPU,这样的机器系统称为多核系统。在多核系统中,众多的CPU相互协调进行并行计算,可以使机器的运算速度达到惊人的程度。 2、机器指令语言 为了实现按照程序指令来进行运算,CPU必须具有识别程序指令的含义,这由控制器中的译码器完成,然后就可以按照指令的要求执行规定的任务。程序指令采用二进制编码,其编码系统在机器系统中统一称为机器语言(machine language),用机器语言描述的程序指令就是机器指令(machine instruction),这是机器可以直接执行的指令。 当然,作为机器直接执行的指令或者说是CPU能够直接译码并执行的指令,其形式应该是十分简单的,自然其数量也是十分有
27、限,都是一些非常基本的指令。一般,机器语言中的指令集分为数据传输、算术逻辑和控制操作三类指令(对比人类知识分为描述性知识、过程性知识与控制类知识)。 (1)数据传输类指令:要求完成的任务是将数据从一个地方复制到另一个地方。比如将主存中数据读取到寄存器的操作称为LOAD指令;相反,将寄存器中的数据写入主存中的操作称为STORE指令。如果存取的数据是源自外部设备(即CPU与外部设备进行数据传输),则称为I/O指令。 (2)算术逻辑类指令:此类指令主要用于控制器对运算器发出某一种运算的指令,常用的包括ADD(算术加法)、AND(逻辑与)、OR(逻辑或)、XOR(逻辑异或)、SHIFT(移位操作)
28、ROTATE(循环操作)等。 (3)控制操作类指令:该类指令的操作对象是程序本身的执行,而不是数据。比较常见的控制指令有HALT(停机)、JUMP(转移)。其中JUMP转移指令用来指引控制器执行规定的指令,而非按照顺序执行列表中的下一条指令。一般JUMP转移指令进一步分为无条件转移(跳到第5步)和有条件转移(如果值为0则跳到第5步)两种。 为了译码器处理,也为了人们可以运用机器指令有效进行编程,需要对机器指令进行统一编码,从而形成机器语言。首先,假设模型机的机器系统如图所示,其中通用寄存器共有16个,用十六进制编码为0、1、2、……、F;主存的存储单元有256个(每个单元8位),其地址也
29、用十六进制编码为0、1、2、……、FF。 一种设想的模型机器系统 所有的机器指令则统一编码如图所示的形式,包括两个部分:(1)操作码部分(opcode),占4位(十六进制占1位),表征进行的操作,如ADD、OR、JUMP、SHIFT等;(2)操作数部分(operand),占12位(十六进制占3位),提供指令操作数据的细节(内容或地址)。统一编码后,每一条指令均用4位十六进制的数值表示,模型机的全部指令清单如表A所示。 指令: 实际数位模式(16位) 十六进制形式(4个数字) 操作码3表示 把一个寄存 操作数的这 操作
30、数的这部分 器的内容存 部分标识哪 标识接收数据的 储到一个存 个寄存器的 存储单元的地址 储单元中 值需要存储 举例说明一条指令的组成及译码 表A 一种简单的机器语言 操作码 操作数 说明 1 RXY 以地址XY的存储单元中找到的位模式装载(LOAD)寄存器R 2 RXY 以位模式XY装载(LOAD)寄存器R 3 RXY 将寄存器R中的位模式存放(STORE)在地址为XY的存储单元中 4 ORS 将寄存器R中位模式移入(MOVE)寄存器S 5 RST 将寄存器S及寄存器T的位模式作为二进制补码表示相加(ADD),求和结果存放
31、在寄存器R 6 RST 将寄存器S及寄存器T的位模式作为浮点表示值相加(ADD),求和浮点结果存放在寄存器R 7 RST 将寄存器S及寄存器T的位模式做或(OR)操作,并将结果存放在寄存器R中 8 RST 将寄存器S及寄存器T的位模式做与(AND)操作,并将结果存放在寄存器R中 9 RST 将寄存器S及寄存器T的位模式进行异或(XOR)操作,并将结果存放在寄存器R中 A ROX 将寄存器R中的位模式循环(ROTATE)右移一位,进行X次。每次都把低位端开始的那个位放入高端 B RXY 如果寄存器R中的位模式等于寄存器0中的位模式,那么转移(JUMP)到位于地
32、址XY的存储单元中的指令。否则,继续正常的执行顺序(转移是通过在执行周期将XY复制到程序计数器来实现的) C 000 停止(HALT)执行 比如上图中所示的指令35A7表示将5号寄存器中的数据写入到地址为A7的主存单元中。 采用机器语言来描述两个数据的加法运算,我们可以得到如下的程序指令清单:156C 166D 5056 306E C000,请诸位对其进行解码,给出这段程序的含义。 3、机器程序执行 有了机器语言,就可以编制机器程序,那么机器系统是如何完成程序的执行的呢? 通常,机器首先按照指令顺序将程序指令从主存复制到控制器(这里顺序是指程序指令在主存中自然存放的地址顺利,除
33、非遇到JUMP指令,才会按照新指定地址进行新的顺序读取),然后在控制器中对每条指令进行解码,最后按照解码的结果执行指令。 为了能够顺利完成这样的任务,在控制器中有两个特殊用途的寄存器,即程序计数器(program counter)和指令寄存器(instruction register。程序计数器存放下一条指令的地址;指令寄存器存放当前正在执行的指令。 存储式程序执行原理示意图 控制器按照如图所示的循环周期不断重复执行其任务,循环周期分为这样三个环节:读取指令、解码指令、执行指令。读取指令,控制器按照程序程序计数器存放的下一条指令地址,从主存中读取下一条指令(注意,两个单元存放一条指令
34、存放到指令寄存器中,同时程序计数器加2(指向下一条指令地址)。 1. 根据程 2. 对 序计数器 指令 规定的地 寄存 址从存储 器中 器中取下 的位 一条指 模式 令,然后 进行 增加程序 译码 计算器的 值 3. 实现指令寄存器里指令所规定的动作 程序执行的循环周期示意图 解码指令,控制器根据指令寄存器中存放指令的操作码,将操作数进行分解,形成正确的部分,这样解码任务就完成了。接下来就是根据指令解码各部分的含义,启动对应的运算器电路来完成指令要求的任务。注意,如果是JUMP指令,则运算的结果会改变程序计数器中的地址,这样就可以达到JUMP
35、指令的目的。 举一个完整的程序执行例子,让我们再次回到两个数据的加法运算,其程序指令清单是:156C 166D 5056 306E C000。我们假定,这段程序代码依次存放在A0地址开始的主存中(如图所示),并且假定程序计数器初始内容就是A0。那么,根据上述控制器循环周期,我们不难得到这段程序代码的机器执行过程如下。 指令编码 翻译 156C 把地址为6C的存储单元里的位模式载入寄存器5 LOAD 166D 把地址为6D的存储单元里的位模式载入寄存器6 5056 把寄存器5和6的内容按二进制补码表示相加,结果存入寄存器0
36、 ADD 306E 把寄存器0的内容放到地址为6E的存储单元中 STORE C000 停止 程序计数器包含第一条指令的地址 程序存放在 从A0开始的 主存储器地 址里 a.起先程序存放在内存,程序计数器指向第一条指令地址 b.取指步骤开始时,取出从地址A0开始的指令,放在指令寄存器中 c.然后程序计数器增加,使它指向下一条指令 实际上,不同的程序代码存放在主存中的不同区域,只要告知机器系统某一程序的起始地址,机器就可以顺利执行这一程序。当然,程序指令与一般数据都是二进制编码,本身没有明显的不同,如果指定执行的起始地址不是存放程序
37、代码内容的地址,那么机器也会按照指令内容来解码,结果不可预料。 总之,按照这样的程序执行方式,机器系统就可以按照机器指令程序,实现人们希望机器所完成的计算任务,哪怕这一计算任务看起来十分复杂。当然此时,就需要对机器系统进行更加高级管理,这就是我们下面要介绍操作系统的功能之一。 第2.3节操作系统 实际机器系统要比我们上面模型机要复杂的多,不但主存空间要大得多,而且还有众多的输入输出设备要控制,甚至有些机器系统采用更为复杂的多处理机系统。因此,为了更加方便用户使用机器、让机器更加有效地完成各种计算任务,需要有专门的软件系统将所有这些资源,包括硬件(主存、CPU、外部设备)与软件(程序、数据
38、文件)有效管理起来,并为用户提供良好的机器使用界面,这就是所谓的操作系统(operate system)。 1、操作系统体系结构 为了更好地理解操作系统的工作原理,我们首先来分析一下机器系统不同的描述层次。如何理解一个机器系统呢?你可以将其看作是由一大堆晶体管构成的芯片,也可以看作是有门或触发器构成的集成电路,或者更高级地看作是由寄存器、控制器、运算器等构成的计算装置,当然掌握了机器语言的人们,自然还可以将其看作是有机器指令支配的运算系统,甚至是由高级语言支配的计算工具。最后,对于人工智能而言,机器系统可以看作是可以运行智能程序的载体,并表现各种智能行为。 应用软件 Hi,财务系统,
39、键 Hi,OS ,打印我 盘输入的是‘P’,看 送到你那里的工资 系统软件 着办吧! 报表文件! 机器硬件 Hi ,OS ,发生了 Hi,激光打印机, 一个事件:‘P’ 键 把我送给你的数据 被按下了! 打印出来! 用户按 激光打 下‘
40、P’键 机器系统的扩展体系印机开 始打印 如上图所示,甚至一个机器系统可以扩展成为加载众多系统软件和应用软件的复杂体系。面对这样复杂的机器系统,如何才能更好地把握并加以运用呢?我们需要屏除所有的具体细节,将机器系统看作是一个与所有硬件电路具体操作无关的抽象计算系统,为此我们给机器披上一件内衣,将机器数据存储与操作的具体细节遮盖起来,这就是操作系统。 从机器系统使用者的角度讲,操作系统的组成如图所示,其中与使用者接口部分称为shell程序,主要任务就是负责与一个或多个机器使用者进行交互。目前机器系统采用的shell程序主要通过图形用户接口(GUI)来完成这个任务,使用过电脑的人们都清楚,
41、使用者可以将被操作的对象,如文件、程序,以图标方式形象地展示在显示屏上,并通过点击这些图标与shell程序交互。 shell 内核 用户 操作系统 从机器系统开发者的角度讲,操作系统的核心并非是shell程序,而是指操作系统的内核(kernel)程序。内核程序通过有效组织机器系统的软硬件资源,来完成使用者提交的任务,而用户不必关心这些任务是如何具体实现的,这样就起到了前面我们所说的抽象计算的目的。一般内核程序需
42、要实现的功能模块包括文件管理模块、设备驱动模块、存储管理模块、任务调度模块以及进程控制模块。 文件管理模块的任务是协调外部大容量存储设备的使用,为此操作系统记录了所有外部存储文件以及动态变化状况。为了使得这项工作有效展开,方便机器使用者,大多数文件都是分类分组放置在树状目录之中。所有文件的操作最终都是通过shell程序调用文件管理模块来实施的。 操作系统按树(tree)型结构来组织目录与文件 设备驱动模块的任务是控制各种I/O设备的运行,完成数据的输入输出。一般每一种设备都配有特定的驱动程序,因此机器系统每增加一种设备均需安装对应配套的驱动软件。当然一些常用的设备如键盘、打印机、磁盘
43、磁带和显示器,一般操作系统备有相应的驱动程序,无须用户自己安装。操作系统对设备的响应与控制是通过中断响应来实现的。比如键盘上按下一个键,系统会自动中断目前处理的程序,并根据中断向量中的数据信息(状态说明与中断地址),转向处理键盘输入处理。 功能键 特殊功能键 数字键 打字机键 回车键 光标控制键 键盘与终端显示器 鼠标 触摸屏 游戏杆 手写输入 常见的输入输出设备 图像扫描仪 光学字符识别 数码相机 激光打印机 常见的输入输出设备 存储管理模块的任务是对主存储器进行管理,协调对主存的使用,以提高使用
44、效率。为此,该模块将整个主存划分为一个个页,并以页为单位进行分配与回收等管理。当需要主存空间保存程序或数据时,存储管理模块就根据需求进行分配。某个程序执行结束后,则回收废弃的内存。当所有运行的程序需要的总空间超出主存储器的容量时,为了不影响系统的正常运行,存储管理模块利用虚拟空间的方法,采用滚进滚出策略来实现所有程序的正常内容空间的需求。此时,实际的内存数据存放在外存中,只有当需要使用时才复制到内存,一旦暂时不用,就再复制回对应的外存中。 道(Tracks) 3.5 英吋软盘 写保护块 内置硬盘 移动硬盘 硬盘盘组
45、 磁带 移动闪盘光盘 存储设备 目前机器系统一般采用分时策略来使用中央处理器,如果是多核系统,还有需要在多个中央处理器中选择使用的问题,任务调度模块与进程控制模块就是为此专门设置的,其目的就是要高效使用中央处理器。因为涉及到复杂的进程及其调度问题,我们留在下面专门介绍。这里只需知道,任务调度模块的任务是决定当前执行哪个程序,而进程控制模块的任务是控制程序执行的过程,具体什么时间片段(分时)实际运行哪个程序某个阶段的工作。 除了外壳程序与内核程序外,操作系统还有一个自举问题。从操作系统本身的启动执行角度来看,操作系统又是一类非常特殊的程序,即具有
46、自举功能。从上面两个方面的介绍可知,一般的程序启动执行都依赖于操作系统的支持,那么这里就有一个问题,操作系统也是一个程序,他的执行又是如何进行的呢?为了解决这个问题,所有的操作系统都拥有一种特有的功能,就是自己引导自己的启动与执行。完成这一功能实现的就是操作系统中的引导程序(boot strapping)。 考虑到操作系统的自举功能的实现,需要说明的是,在大多数PC机中,引导程序优先从软盘驱动器0扇区0道首址读取操作系统,只有没有软盘时,才尝试从机器的硬盘读取操作系统。因此,第一次使用一台电脑,需要将操作系统复制安装在硬盘固定区域上(所谓的系统分区),然后以后每次开机就不需要依赖软盘了。
47、2、组织协调机器活动 操作系统最为核心,也是最基本的任务就是组织协调众多活动程序的执行。操作系统中,把执行活动中的程序称为进程(process)。如果说程序是指静态不变的一组指令,那么进程就是机器系统这组指令的动态活动,并随时间演化而变化。一个进程通常用其活动的当前状态来刻画,包括程序执行的当前位置(程序计数器的值)、有关CPU中寄存器中的值以及涉及到主存单元中的值。如果某一时刻终止机器的活动,那么该时刻所有机器系统中随时间变化的瞬间状态,就是当时执行即刻进程状态。 在OS中,所有的用户程序要完成的任务,均会分解为一个个相互关联的进程群来协同完成。比如某个程序代码中需要在打印数据,操作系统
48、会对此任务专门建立一个打印进程。而即使两个不同程序都需要打印数据,尽管打印程序代码是相同的,但操作系统会为每一次调用建立不同的进程(因为涉及的数据与打印进度会不同)。 目前大多数OS采用分时策略分配CPU,因此,就会有一个如何协调众多进程几乎同时使用机器系统资源的问题,并且给出一些意想不到意外情况出现的处理办法。首先就是对进程的管理,包括进程调度与控制。进程调度通过在内存保存所有进程状态表来进行。当创建一个进程时,就在这张表中增加一条记录;进程结束是则将相应的记录删除。除了创建与撤消外,进程可能的状态还有就绪(随时可以执行)、等待(等待其他进程的执行结果或等待使用被其他进程占据的资源)、执行
49、占据CPU)。 就绪或不同原因等待的进程往往不止一个,因此就会形成各种进程队列,比如就绪队列、打印机需求队列、内存需求队列等等。因此,影响进程调度的因素是非常复杂的,这就构成了非常复杂的进程调度策略。其中一个非常棘手的问题就是有关进程间的竞争处理问题,并且处理不好会产生所谓的死锁问题。 最后需要说明的是,操作系统本身的各个部分程序,也是作为进程来运行管理的,为了使得操作系统能够有效运行,系统进程的优先权最高,因此总能优先得到执行。另外,从组织协调机器活动的角度上看,你可以将系统进程类比为人类大脑的意识活动,可以反思监控所有其他有意识的思维活动。 3、网络操作系统概述 当机器之间组成通
50、信网络的时候,就需要网络操作系统来协调管理系统的资源。网络操作系统与前面介绍的操作系统没有本质上的差别,如果将机器之间的通信接口看作是新增加的一种外部输入输出“设备”端口的话,那么需要增加的无非就是这种特殊“设备”的驱动程序。 机器之间建立网络系统示意图 不过,考虑到机器之间通信的复杂性,为了有效构建机器之间的通信机制(除了网络通信驱动程序,还需要专门的网络通信协议处理软件),需要专门研究网络拓扑结构、网络协议以及机器通信实现程序。如果考虑到多智能机器系统之间的通信,还要考虑知识协议这样比较深入的课题。 机器网络一般分为局域网(local area networks,LAN)和广域网






