1.2 总线互连
总线是连接两个或多个设备的通信通路。总线的关键特征是,它是一条共享传输介质。 多个设备连接到总线上,任一个设备发出的信号可以为其他所有连接到总线上的设备所接收。如果两个设备同时传送,它们的信号将会重叠,引起混淆。因此,一次只能有一个设备成功地(利用总线)发送数据。 典型的情况是,总线由多条通信通路或线路组成,每条线(路)能够传送代表二进制1和0的信号。一段时间里,一条线能传送一串二进制数字。总线的几条线放在一起能同时并行传送二进制数字。例如, 一个8位的数据能在8条总线线上传送。
计算机系统包含有多种不同的总线,它们在计算机系统层次结构的各个层次提供部件之间的通路。连接主要计算机部件(处理机, 存储器, I/O)的总线称为系统总线。系统总线通常由50~100条分立的(导)线组成。每条线被赋予一个特定的含义或功能。虽然有许多不同的总线设计,但任何总线上的线都可以分成三个功能组:数据线、地址线和控制线。此外可能还有为连接的模块提供电源的电源线。
数据线提供系统模块间传送数据的路径,这些线组合在一起称为数据总线。典型的数据总线包含8、16或32根线,线的数量称为数据总线的宽度。因为每条线每次传送1位,所以线的数目决定了每次能同时传送多少位。数据总线的宽度是决定系统总体性能的关键因素。 地址线用于指定数据总线上数据的来源和去向。例如,如果处理机希望从存储器中读一个字的数据,它将所需要字的地址放在地址线上。显然,地址总线的宽度决定了系统最大可能的存储器容量。
控制线用来控制对数据线和地址线的访问和使用。由于数据线和地址线被所有部件共享,因此必须用一种方法来控制它们的使用。控制信号在系统模块之间传送命令和定时信息。定时信息指定了数据和地址信息的有效性,命令信号指定了要执行的操作。 大多数计算机系统使用多总线,这些总线通常设计成层次结构。图1.3显示了一个典型的高性能体系结构。一条局部总线把处理机连接到高速缓存控制器,而高速缓存控制器又连接到支持主存储器的系统总线上。高速缓存控制器集成到连接高速总线的桥中。这一总线支持连接到:高速LAN、视频和图形工作站控制器,以及包括SCSI 和FireWire的局部外设总线的接口控制器。低速设备仍然由分开的扩充总线支持,用一个接口来缓冲该扩充总线和高速总线之间的通信流量。
PCI
外部设备互连是流行的高带宽的、独立于处理机的总线,它能够作为中间层或外围设备总线。当前的标准允许在66MHz频率下使用多达64根数据线,其原始传输速率为528MB/s, 或4.224Gbps。PCI被设计成支持各种各样基于微处理机的配置,包括单处理机和多处理机的系统。因此,它提供了一组通用的功能。PCI使用同步时序以及集中式仲裁方案。
在多处理机系统中,一个或多个PCI配置可通过桥接器连接到处理机的系统总线上。
系统总线只支持处理机/高速缓存单元、主存储器以及PCI桥接器。使用桥接器使得PCI独立于处理机速度,又提供快速接收和传送数据的能力。
2.1 光存储介质:高密度存储器
2.1.1 光盘
光盘技术最终可能使磁盘和磁带存储淘汰。用这种技术,磁存储器所用的读/写头被两
束激光代替。一束激光通过在光盘上刻制微小的凹点,对记录表面进行写;而另一束激光用来从光敏感的记录表面读取数据。由于光束容易被偏转到光盘上所需要的位置,所以不需要存取臂。 对用户而言,光盘正成为最有吸引力的选择。它们(光盘)对环境变化不太敏感,并且它们以每兆字节比磁盘低得多的存储器价格提供更多的直接存取存储器。光盘技术仍在出现,并且还需要稳定;然而,目前有三种主要类型的光盘。它们是CD-ROM、WORM盘和磁光盘。
CD-ROM
1980年引入的,非常成功的CD,或紧密盘是设计来提高音乐的录音重放质量的光盘。为了制作一张CD,把音乐的模拟声音转换成等价的数字声音,并且存储在一张4.72英寸的光盘上。在每张光盘上可以用数字格式(用20亿数字位)记录74分钟的音乐。因为它的巨大存储容量,计算机工业的企业家们立刻认识到光盘技术的潜力。事实上,任何可以被数字化的东西都能存储在光盘上:数据、正文、声音、静止图象、音乐、图形和视频。 CD-ROM(读作C—D—ROM)是音频CD技术的副产品。CD-ROM代表紧密盘—只读存储器。该名字隐含了它的应用。只读光盘与 (能长期播放的) 唱片一样,在工厂里“压制”并带着预先录好的内容 (如莎士比亚全集,或电影“飘”的前30分钟部分),分发出去。一旦光盘插入光盘驱动器,正文、视频图像等等就能读入主存进行处理或显示;然而,在只读光盘上的数据是固定的—它们不能被改变。当然,这是与磁盘的读/写能力不同的。 大量的、低成本直接存取存储器(是光盘使之成为可能)已经打开了通向许多新应用的大门。
WORM盘(即,CD—R)
写一次,读多次或WORM光盘被那些面向最终用户的公司用来存储它们自己的专用信息。一旦数据已写到该介质,它们只能读,不能再更新或改变。
WORM盘有可能替代磁带作为档案存储器。
磁光盘
磁光盘有希望使得激光盘成为商业上可行的读/写存储技术。5*1/4英寸的磁光盘可以存储高达1000Mb。目前磁光盘太贵且根本未达到用户对磁介质所期望的那种可靠性。此外,存取时间相对而言比较慢,大约与低档温彻斯特盘相同。 随着光盘技术成熟到可靠,性能价格合算,可读/可写,将来它最终会象现在磁盘、磁带那样统治二级存储器。
2.1.2 数字视盘
DVD是新一代光盘存储技术。用数字视盘技术能把视频、音频和计算机数据都编码到一张紧密盘(CD)上。一张数字视盘能比传统的CD存储更多的数据。一张标准的单层、单面数字视盘能存储4.7GB数据;一张两层标准盘把单层、单面的盘增加到8.5GB。数字视盘可以是双面的,最大存储为17GB/张。需要一台数字视盘播放器来读数字视盘。这种播放器已配备成能读较老的光存储技术。数字视盘技术的提倡者企图用单一的数字视盘数字格式来代替当前的各种数字存储格式(诸如激光盘,CD-ROM,音频CD),所以也称为数字通用盘。
DVD论坛因建立下一代数字多媒体的统一规范而获得最高信息技术工业奖
DVD论坛今天宣布,因该论坛成功制定了DVD-ROM规范而获得1997年PC杂志的 (制
定标准的) 卓越技术奖。 “新的标准特别重要,因为它们承诺把更高级的技术革新和市场兼容性带给今天的技术用户,”PC杂志主编Michael J. Miller说,“DVD-ROM是被选出的激发兴趣的技术,因为它是一种熟悉的格式,它把大量的新计算、新教育、新游戏和新娱乐的可能性带给用户。” 在对DVD-ROM技术的颁奖词中, PC杂志称,DVD将会“代替CD-ROM作为PC内容 (即各种软件和资料) 传播的主要手段。”参加规范开发的三个公司的代表(日立,松下,东芝)代表DVD论坛在11月7日,Las Vegas COMDEX '97 举行的庆祝典礼上接受该项奖。 “基于DVD论坛定义的规范的产品现在正在大量运往世界各地的计算机和电子产品市场,并且卓越技术奖增加了市场对成功制定标准的认可,”东芝公司DVD产品部总经理和DVD论坛创办成员Koji Hase说,“我们非常高兴地看到DVD论坛的工作被公认为个人计算机工业中重要的技术成就之一,特别是在1998年因更大的,全球的会员,论坛扩大了它的工作范围。” “DVD论坛的成员把DVD-ROM规范开发作为最好的技术方法和对市场上客户的最好方法”松下有限公司的DVD商业开发办公室主任Sakon Nagasaki说,“该格式的接受说明了制定标准的努力如何提高整个电子工业的目标。” 除了论坛在开发DVD-ROM和DVD-Video标准的作用外,论坛也提出了可记录DVD的格式,称为DVD-R和可重写的DVD,称为DVD-RAM,并提交国际标准组织。定义DVD-Audio规范的工作也正在继续着。
“DVD论坛的任务是,在汇合计算机工业和消费电子产品工业中,通过与最广泛代表性的制造商与技术最终用户小组一起工作,确定从CD技术向DVD技术的平滑过渡的途径。”日立有限公司执行官之一和DVD论坛DVD-RAM工作组主席Yoshita Tsunoda博士说,“不同工作组已完成三个不同的DVD技术标准的定义,并且我们已开始开发下一代规范的工作,这些规范将很好地提供可兼容产品到下一世纪。” PC杂志的卓越技术奖的获得者是由编辑、捐助者和PC实验室全体成员组成的小组在几个月的评价和讨论后提名。PC杂志,卓越技术奖的主办者,是由Ziff-Davis公司出版、有1.175百万冊发行量的杂志。PC杂志一年印刷出版22次,每季度出CD,并且连续地在环球网上。
3.1 C++和面向对象的程序设计
一些面向对象的程序设计概念在语言间渗透。例如微软Quick Pascal是允许使用对象的第一批语言中的一个。C++有什么使得它是一种适合于开发面向对象程序的语言?如同先前所提到的,答案是类(class)数据类型。给该语言建立对象之能力的是建立在C结构类型之上的C++类(class)类型。还有,C++把另外几个特性引入面向对象的程序设计,这些特性并不包含在简单地利用对象的其他一些语言中。C++的优点包括强类型、运算符重载和较少地强调预处理。的确你能使用其他一些产品和采用其他一些语言来进行面向对象的程序设计,但是采用C++的众多好处是显著的。这是为面向对象的程序设计而设计的语言,并非(现有语言的)式样翻新。
面向对象的程序设计是一种程序设计技术,使得你能把一些概念看作各种各样的对象。通过使用对象,你能表示要被执行的任务、它们之间的相互作用和必须观察的某些给定的条件。一种数据结构经常形成某个对象的基础;因此,在C或C++中,结构类型能形成某种
基本对象。与对象的通信,如前提到的,能通过使用消息来完成。消息的使用类似于在面向过程的程序中对函数的调用。当某对象收到一个消息时,包含在该对象内的一些方法作出响应。方法类似于面向过程程序设计的函数。然而,方法是对象的一部分。
C++的类是对C和C++结构类型的扩充,并且形成了面向对象程序设计所需要的抽象数据类型。类能包含紧密相关的一些条目,它们共享一些属性。更正式地说,对象只不过是类的实例。
最终,应该出现包含很多对象类型的类库,你能使用这些对象类型的实例去拼合程序代码。
在你更详细地考察这些术语之前,一个好的主意是熟悉与C++和面向对象程序设计相关的另外几个概念,如同下面几节所述的。 封装
封装指的是每个对象把它的成员数据和成员函数(方法)组合成单个结构的方式。图3-1
举例说明了你如何能组合数据域和方法以建立对象。
数据域 方法
图3-1
数据 数据 数据 数据 成员函数 成员函数 成员函数 成员函数 成员函数 成员函数 为建立对象而组合的数据域和方法
典型地,一个对象的描述是一个C++类的一部分, 且包括对该对象内部结构的描述、该对象如何与其他对象相关,以及把该对象的功能细节和该类的外部相隔离的某种形式的保护。C++类结构做到了所有这些。
在一个C++类中,你使用私有的、公共的和/或受保护的描述符来控制对象的功能细节。在面向对象的程序设计中,公共(public)部分一般用于接口信息(方法),使得该类可在各应用中重用。如果数据或方法被包含在公共部分,它们在该类外部也可用。类的私有部分把数据或方法的可用性局限于该类本身。包含数据或方法的受保护部分被局限于该类和任何派生子类。 类层次结构
C++类实际上用作创建对象的模板或模式。从类描述形成的对象都是该类的实例。开发类层次结构是可能的,其中有一个主类和几个子类。在C++中, 做这事的基础是派生类。父类表示更一般化的任务,而派生子类执行一些特定的任务。例如,早先讨论的林肯类也许包含整个林肯系列公共的数据和方法,诸如引擎、检测仪表、电池、制动能力和操纵。从父类派生的子类,诸如Tour Car、Mark Ⅷ和Continental可能包含该类专用的一些款项。例如,1995 Continental是该系列中唯一具有主动悬架系统的汽车。 继承
面向对象程序设计中的继承使得一个类能继承某对象类的一些性质。父类用作派生类的
模式,且能以几种方式被改变(在下一章中你将了解成员函数能被重载、新的成员函数能被添加,并且成员存取特权能被改变)。如果某个对象从单个父类继承其属性,称为单继承。如果某个对象从多个父类继承属性,便称为多继承。继承是一个重要概念,因为它使得无须对代码做大的改变就能重用类定义。继承鼓励重用代码,因为子类是对父类的扩充。 多态性
与类层次结构相关的另一个重要的面向对象概念是公共消息能被发送到诸父类对象和所有派生子类对象。按正式的术语,这称为多态性。
多态性使每个子类对象能以一种对其定义来说适当的方式对消息格式作出响应。试设想收集数据的一个类层次结构。父类可能负责收集某个个体的姓名、社会安全号、职业和雇佣年数,那末你能使用子类来决定根据职业将添加什么附加信息。一种情况,一个管理职位会包括年薪,而另一种情况,销售员职位会包括小时工资和回扣信息。因此,父类收集一切子类公共的通用信息,而子类收集与特定工作描述相关的附加信息。多态性使得公共的数据收集消息能被发送到每个类。父类和子类两者都以对该消息是恰当的方式作出响应。多态性促进现有代码的可扩充性。
虚函数
多态性赋予对象以当对象的精确类型还未知时响应来自例行程序之消息的能力。在C++中这能力是迟绑定的结果。使用迟绑定,地址在运行时刻动态地确定,而不是如同传统的编译型语言在编译时刻静态地确定。这静态的(固定的)方法往往称为早绑定。函数名被替换为存储地址。你使用虚函数来完成迟绑定。在随后的派生类将通过重定义函数之实现而重载该函数时,在父类中定义虚函数。当你使用虚函数时,消息不是直接传给对象,而是作为指向对象的指针传送。
虚函数利用了地址信息表, 该表在运行时刻使用构造符而被初始化。一个构造符每当创建它的类的一个对象时被调用。这里构造符的工作是把虚函数与地址信息表链接,在编译运转期间虚函数的地址是未知的;相反,给出的是(在运行时刻确定的)地址表中将包含该函数(入口)地址的位置。
4.2 窗口管理程序
窗口管理程序管理那些用来交换应用程序和用户之间信息的设备。输出设备包括视频显示器和声音合成器。输入设备包括键盘和指点器,诸如鼠标、操纵杆、控制球、或光笔。窗口管理程序与输出设备的设备驱动程序交互把信息呈现给用户,与输入设备的设备驱动程序交互获取表示用户正在输入信息的消息。应用程序和脚本执行引擎把表示成位图或PostSript表示法的图像传给窗口管理程序,窗口管理程序把这些图像呈现给用户。窗口管理程序把用户通过输入设备输入的消息返回给应用程序和脚本执行引擎。
窗口管理程序已十分普及,因为它们支持许多对终端用户和应用程序开发者两者都十分有用的特性。
用户与多个进程交互。窗口管理程序把窗口分配给每个进程。如果每个进程与一个显示在显示屏上的窗口相关,那么多个进程可以共享一个视频显示屏。用户通过观看分配给进程的窗口之内容和向其窗口处于激活状态的进程发命令来观察进展 (即执行情况)和控制各进程。
用户容易在应用程序之间移动信息。 窗口给用户提供了一种在应用程序之间传送信息的方法。图4-1举例说明了一个有3个窗口的显示屏。一个窗口分配给正文编辑程序,另一个分配给电子表格程序,而第三个窗口分配给数据库程序。在这个例子中,用户首先用数据库应用程序从数据库检索某些数据。然后用户从检索得到的数据中选择某些,并把这些数据
相关推荐: