预计阅读本页时间:-
5.4 盘
现在我们开始研究某些实际的I/O设备。我们将从盘开始,盘的概念简单,但是非常重要。然后,我们将研究时钟、键盘和显示器。
5.4.1 盘的硬件
盘具有多种多样的类型。最为常用的是磁盘(硬盘和软盘),它们具有读写速度同样快的特点,这使得它们成为理想的辅助存储器(用于分页、文件系统等)。这些盘的阵列有时用来提供高可靠性的存储器。对于程序、数据和电影的发行而言,各种光盘(CD-ROM、可刻录CD以及DVD)也非常重要。在下面各小节中,我们首先描述这些设备的硬件,然后描述其软件。
1.磁盘
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
磁盘被组织成柱面,每一个柱面包含若干磁道,磁道数与垂直堆叠的磁头个数相同。磁道又被分成若干扇区,软盘上大约每条磁道有8~32个扇区,硬盘上每条磁道上扇区的数目可以多达几百个。磁头数大约是1~16个。
老式的磁盘只有少量的电子设备,它们只是传送简单的串行位流。在这些磁盘上,控制器做了大部分的工作。在其他磁盘上,特别是在IDE(Integrated Drive Electronics,集成驱动电子设备)和SATA(Serial ATA,串行ATA)盘上,磁盘驱动器本身包含一个微控制器,该微控制器承担了大量的工作并且允许实际的控制器发出一组高级命令。控制器经常做磁道高速缓存、坏块重映射以及更多的工作。
对磁盘驱动程序有重要意义的一个设备特性是:控制器是否可以同时控制两个或多个驱动器进行寻道,这就是重叠寻道(overlapped seek)。当控制器和软件等待一个驱动器完成寻道时,控制器可以同时启动另一个驱动器进行寻道。许多控制器也可以在一个驱动器上进行读写操作,与此同时再对另一个或多个其他驱动器进行寻道,但是软盘控制器不能在两个驱动器上同时进行读写操作。(读写数据要求控制器在微秒级时间尺度传输数据,所以一次传输就用完了控制器大部分的计算能力。)对于具有集成控制器的硬盘而言情况就不同了,在具有一个以上这种硬盘驱动器的系统上,它们能够同时操作,至少在磁盘与控制器的缓冲存储器之间进行数据传输的限度之内是这样。然而,在控制器与主存之间可能同时只有一次传输。同时执行两个或多个操作的能力极大地降低了平均存取时间。
图5-18比较了最初的IBM PC标准存储介质的参数与20年后制造的磁盘的参数,从中可以看出过去20年磁盘发生了多大的变化。有趣的是,可以注意到并不是所有的参数都具有同样程度的改进。平均寻道时间改进了7倍,传输率改进了1300倍,而容量的改进则高达50 000倍。这一格局主要是因为磁盘中运动部件的改进相对和缓渐进,而记录表面则达到了相当高的位密度。

在阅读现代硬盘的说明书时,要清楚的事情是标称的几何规格以及驱动程序软件使用的几何规格与物理格式几乎总是不同的。在老式的磁盘上,每磁道扇区数对所有柱面都是相同的。而现代磁盘则被划分成环带,外层的环带比内层的环带拥有更多的扇区。图5-19a所示为一个微小的磁盘,它具有两个环带,外层的环带每磁道有32个扇区,内层的环带每磁道有16个扇区。一个实际的磁盘(例如WD 18300)常常有16个环带,从最内层的环带到最外层的环带,每个环带的扇区数增加大约4%。

为了隐藏每个磁道有多少扇区的细节,大多数现代磁盘都有一个虚拟几何规格呈现给操作系统。软件在工作时仿佛存在着x个柱面、y个磁头、每磁道z个扇区,而控制器则将对(x,y,z)的请求重映射到实际的柱面、磁头和扇区。对于图5-19a中的物理磁盘,一种可能的虚拟几何规格如图5-19b所示。在两种情形中磁盘拥有的扇区数都是192,只不过公布的排列与实际的排列是不同的。
对于PC机而言,上述三个参数的最大值常常是(65 535,16,63),这是因为需要与最初IBM PC的限制向后兼容。在IBM PC机器上,使用16位、4位和6位的字段来设定这些参数,其中柱面和扇区从1开始编号,磁头从0开始编号。根据这些参数以及每个扇区512字节可知,磁盘最大可能的容量是31.5GB。为突破这一限制,所有现代磁盘现在都支持一种称为逻辑块寻址(logical block addressing,LBA)的系统,在这样的系统中,磁盘扇区从0开始连续编号,而不管磁盘的几何规格如何。
2.RAID
在过去十多年里,CPU的性能一直呈现出指数增长,大体上每18个月翻一番。但是磁盘的性能就不是这样了。20世纪70年代,小型计算机磁盘的平均寻道时间是50~100毫秒,现在的寻道时间略微低于10毫秒。在大多数技术产业(如汽车业或航空业)中,在20年之内有5~10倍的性能改进就将是重大的新闻(想象300 MPG的轿车 [1] ),但是在计算机产业中,这却是一个窘境。因此,CPU性能与磁盘性能之间的差距随着时间的推移将越来越大。
正如我们已经看到的,为了提高CPU的性能,越来越多地使用了并行处理。在过去许多年,很多人也意识到并行I/O是一个很好的思想。Patterson等人在他们1988年写的文章中提出,使用六种特殊的磁盘组织可能会改进磁盘的性能、可靠性或者同时改进这两者(Patterson等人,1988)。这些思想很快被工业界所采纳,并且导致称为RAID的一种新型I/O设备的诞生。Patterson等人将RAID定义为Redundant Array of Inexpensive Disk(廉价磁盘冗余阵列),但是工业界将I重定义为Independent(独立)而不是Inexpensive(廉价),或许这样他们就可以收取更多的费用?因为反面角色也是需要的(如同RISC对CISC,这也是源于Patterson),此处的“坏家伙”是SLED(Single Large Expensive Disk,单个大容量昂贵磁盘)。
RAID背后的基本思想是将一个装满了磁盘的盒子安装到计算机(通常是一个大型服务器)上,用RAID控制器替换磁盘控制器卡,将数据复制到整个RAID上,然后继续常规的操作。换言之,对操作系统而言一个RAID应该看起来就像是一个SLED,但是具有更好的性能和更好的可靠性。由于SCSI盘具有良好的性能、较低的价格并且在单个控制器上能够容纳多达7个驱动器(对宽型SCSI而言是15个),很自然地大多数RAID由一个RAID SCSI控制器加上一个装满了SCSI盘的盒子组成,而对操作系统而言这似乎就是一个大容量磁盘。以这样的方法,不需要软件做任何修改就可以使用RAID,对于许多系统管理员来说这可是一大卖点。
除了对软件而言看起来就像是一个磁盘以外,所有的RAID都具有同样的特性,那就是将数据分布在全部驱动器上,这样就可以并行操作。Patterson等人为这样的操作定义了几种不同的模式,它们现在被称为0级RAID到5级RAID。此外,还有少许其他的辅助层级,我们就不讨论了。“层级”这一术语多少有一些用词不当,因为此处不存在分层结构,它们只是可能的六种不同组织形式而已。
0级RAID如图5-20a所示。它将RAID模拟的虚拟单个磁盘划分成条带,每个条带具有k个扇区,其中扇区0~k-1为条带0,扇区k~2k-1为条带1,以此类推。如果k=1,则每个条带是一个扇区;如果k=2,则每个条带是两个扇区;以此类推。0级RAID结构将连续的条带以轮转方式写到全部驱动器上,图5-20a所示为具有四个磁盘驱动器的情形。
像这样将数据分布在多个驱动器上称为划分条带(striping)。例如,如果软件发出一条命令,读取一个由四个连续条带组成的数据块,并且数据块起始于条带边界,那么RAID控制器就会将该命令分解为四条单独的命令,每条命令对应四块磁盘中的一块,并且让它们并行操作。这样我们就运用了并行I/O而软件并不知道这一切。
0级RAID对于大数据量的请求工作性能最好,数据量越大性能就越好。如果请求的数据量大于驱动器数乘以条带大小,那么某些驱动器将得到多个请求,这样当它们完成了第一个请求之后,就会开始处理第二个请求。控制器的责任是分解请求,并且以正确的顺序将适当的命令提供给适当的磁盘,之后还要在内存中将结果正确地装配起来。0级RAID的性能是杰出的而实现是简单明了的。
对于习惯于每次请求一个扇区的操作系统,0级RAID工作性能最为糟糕。虽然结果会是正确的,但是却不存在并行性,因此也就没有增进性能。这一结构的另一个劣势是其可靠性潜在地比SLED还要差。如果一个RAID由四块磁盘组成,每块磁盘的平均故障间隔时间是20 000小时,那么每隔5000小时就会有一个驱动器出现故障并且所有数据将完全丢失。与之相比,平均故障间隔时间为20 000小时的SLED的可靠性要高出四倍。由于在这一设计中未引入冗余,实际上它还不是真正的RAID。
下一个选择——1级RAID如图5-20b所示,这是一个真正的RAID。它复制了所有的磁盘,所以存在四个主磁盘和四个备份磁盘。在执行一次写操作时,每个条带都被写了两次。在执行一次读操作时,则可以使用其中的任意一个副本,从而将负荷分布在更多的驱动器上。因此,写性能并不比单个驱动器好,但是读性能能够比单个驱动器高出两倍。容错性是突出的:如果一个驱动器崩溃了,只要用副本来替代就可以了。恢复也十分简单,只要安装一个新驱动器并且将整个备份驱动器复制到其上就可以了。
0级RAID和1级RAID操作的是扇区条带,与此不同,2级RAID工作在字的基础上,甚至可能是字节的基础上。想象一下将单个虚拟磁盘的每个字节分割成4位的半字节对,然后对每个半字节加入一个汉明码从而形成7位的字,其中1、2、4位为奇偶校验位。进一步想象如图5-20c所示的7个驱动器在磁盘臂位置与旋转位置方面是同步的。那么,将7位汉明编码的字写到7个驱动器上,每个驱动器写一位,这样做是可行的。
Thinking Machine公司的CM-2计算机采用了这一方案,它采用32位数据字并加入6个奇偶校验位形成一个38位的汉明字,再加上一个额外的位用于汉明字的奇偶校验,并且将每个字分布在39个磁盘驱动器上。因为在一个扇区时间里可以写32个扇区的数据,所以总的吞吐量是巨大的。此外,一个驱动器的损坏不会引起问题,因为损坏一个驱动器等同于在每个39位字的读操作中损失一位,而这是汉明码可以轻松处理的事情。
不利的一面是,这一方案要求所有驱动器的旋转必须同步,并且只有在驱动器数量很充裕的情况下才有意义(即使对于32个数据驱动器和6个奇偶驱动器而言,也存在19%的开销)。这一方案还对控制器提出许多要求,因为它必须在每个位时间里求汉明校验和。
3级RAID是2级RAID的简化版本,如图5-20d所示。其中要为每个数据字计算一个奇偶校验位并且将其写入一个奇偶驱动器中。与2级RAID一样,各个驱动器必须精确地同步,因为每个数据字分布在多个驱动器上。
乍一想,似乎单个奇偶校验位只能检测错误,而不能纠正错误。对于随机的未知错误的情形,这样的看法是正确的。然而,对于驱动器崩溃这样的情形,由于坏位的位置是已知的,所以这样做完全能够纠正1位错误。如果一个驱动器崩溃了,控制器只需假装该驱动器的所有位为0,如果一个字有奇偶错误,那么来自废弃了的驱动器上的位原来一定是1,这样就纠正了错误。尽管2级RAID和3级RAID两者都提供了非常高的数据率,但是每秒钟它们能够处理的单独的I/O请求的数目并不比单个驱动器好。
4级RAID和5级RAID再次使用条带,而不是具有奇偶校验的单个字。如图5-20e所示,4级RAID与0级RAID相类似,但是它将条带对条带的奇偶条带写到一个额外的磁盘上。例如,如果每个条带k字节长,那么所有的条带进行异或操作,就得到一个k字节长的奇偶条带。如果一个驱动器崩溃了,则损失的字节可以通过读出整个驱动器组从奇偶驱动器重新计算出来。
这一设计对一个驱动器的损失提供了保护,但是对于微小的更新其性能很差。如果一个扇区被修改了,那么就必须读取所有的驱动器以便重新计算奇偶校验,然后还必须重写奇偶校验。作为另一选择,它也可以读取旧的用户数据和旧的奇偶校验数据,并且用它们重新计算新的奇偶校验。即使是对于这样的优化,微小的更新也还是需要两次读和两次写。
结果,奇偶驱动器的负担十分沉重,它可能会成为一个瓶颈。通过以循环方式在所有驱动器上均匀地分布奇偶校验位,5级RAID消除了这一瓶颈,如图5-20f所示。然而,如果一个驱动器发生崩溃,重新构造故障驱动器的内容是一个非常复杂的过程。

3.CD-ROM
最近几年,光盘(与磁盘相对应)开始流行。光盘比传统的磁盘具有更高的记录密度。光盘最初是为记录电视节目而开发的,但是作为计算机存储设备它们可以被赋予更为重要的用途。由于它们潜在的巨大容量,光盘一直是大量研究工作的主题,并且经历了令人难以置信的快速发展。
第一代光盘是荷兰的电子集团公司飞利浦为保存电影而发明的。它们的直径为30 cm并且以LaserVision的名字上市,但是它们没有流行起来(日本除外)。
1980年,飞利浦连同索尼开发了CD(Compact Disc,压缩光盘),它很快就取代了每分钟33 1/3转的乙烯树脂唱片来记录音乐(艺术鉴赏家除外,他们仍旧喜爱乙烯树脂唱片)。CD的准确技术细节以正式国际标准(IS 10149)的形式出版,由于其封面的颜色而通俗地被称为红皮书(Red Book)。(国际标准由国际标准化组织发布,国际标准化组织是诸如ANSI、DIN等国家标准团体的国际对等机构。每一个国际标准都有一个IS号码。)将光盘以及驱动器的规范作为国际标准出版,其目的在于让来自不同音乐出版商的CD和来自不同电子设备制造商的播放器能够一同工作。所有的CD都是直径120 mm,厚度1.2 mm,中间有一个15 mm的圆孔。音频CD是第一个成功的大众市场数字存储介质。它们被设想应该能够耐用100年。请在2080年进行核对,看一看第一批CD还能不能很好地工作。
一张CD的准备分成几个步骤,包括使用高功率的红外激光在具有涂层的玻璃母盘上烧出许多直径为0.8µm的小孔。从这张母盘可以制作出铸模,铸模在激光孔所在的位置具有突起。将熔化的聚碳酸酯树脂注入这一铸模,就可以形成具有与玻璃母盘相同小孔模式的一张CD。然后将一个非常薄的反射铝层沉积在聚碳酸酯上,再加上一层保护性的漆膜,最后加上一个标签。聚碳酸酯基片中的凹陷处称为凹痕(pit),凹痕之间未被烧的区域称为槽脊(1and)。
在回放的时候,低功率的激光二极管发出波长为0.78µm的红外光,随着凹痕和槽脊的通过照射在其上。激光在聚碳酸酯一面,所以凹痕朝着激光的方向突出,就像是另一侧平坦表面上的突起一样。因为凹痕的高度是激光波长的四分之一,所以从凹痕反射回来的光线与从周围表面反射回来的光线在相位上相差半个波长。结果,两部分相消干涉,与从槽脊反射回的光线相比只返回很少的光线到播放器的光电探测器。这样播放器就可以区分凹痕和槽脊。尽管使用凹痕记录0并且使用槽脊记录1看起来非常简单,但是使用凹痕/槽脊或槽脊/凹痕的过渡来记录1而用这种过渡的缺失来记录0却更加可靠,所以采用这一方案。
凹痕和槽脊写在一个连续螺旋中,该螺旋起源于接近中间圆孔的地方并且向边缘延伸出32 mm的距离。螺旋环绕着光盘旋转了22 188圈(大约每毫米600圈),如果展开的话,它将有5.6 km长。螺旋如图5-21所示。

为了以均匀的速度播放音乐,必须让凹痕和槽脊以恒定的线速度通过。因此,当CD的读出头从CD的内部向外部移动时,CD的旋转速度必须连续地降低。在内部,旋转速度是530rpm以便达到期望的每秒120 cm的流动速度;而在外部,旋转速度必须降到200rpm以便在激光头处得到相同的线速度。恒定线速度驱动器与磁盘驱动器存在相当大的区别,后者以恒定角速度操作,与磁头当前处于什么位置无关。此外,530rpm与大多数磁盘3600~7200rpm的旋转速度相比存在相当大的距离。
1984年,飞利浦和索尼认识到使用CD存放计算机数据的潜力,所以他们出版了黄皮书(Yellow Book),定义了现在称为CD-ROM(Compact Disc-Read Only Memory,压缩光盘-只读存储器)的光盘的确切标准。为了借助在当时已经十分牢固的音频CD市场,CD-ROM在物理尺寸上与音频CD相同,在机械上和光学上也与之兼容,并且使用相同的聚碳酸酯注模机器生产。这一决策的结果是,不但需要缓慢的可变速度的电机,而且在适度的销量下CD-ROM的制造成本将很好地控制在l美元以下。
黄皮书所定义的是计算机数据的格式化。它还改进了系统的纠错能力,这是一个必要的措施,因为尽管音乐爱好者并不介意在这里或那里丢失一位,但是计算机爱好者往往对此非常挑剔。CD-ROM的基本格式是每个字节以14位的符号进行编码。正如我们在前面看到的,14位足以对一个8位的字节进行汉明编码,并且剩下2位。实际上,CD-ROM使用的是功能更为强大的编码系统 [2] 。对于读操作而言,14到8映射是通过查找表由硬件实现的。
在下一个层次上,一组42个连续符号形成一个588位的帧(frame)。每一帧拥有192个数据位(24个字节),剩余的396位用于纠错和控制。在这396位中,252位是14位符号中的纠错位,而144位包含在8位符号的有效载荷中 [3] 。到目前为止,这一方案对于音频CD和CD-ROM是完全一致的。
黄皮书所增加的是将98帧编组为一个CD-ROM扇区(CD-ROM sector),如图5-22所示。每个CD-ROM扇区以一个16字节的前导码开始,其中前12个字节为00FFFFFFFFFFFFFFFFFFFF00(十六进制),以便让播放器识别一个CD-ROM扇区的开始。接下来的3个字节包含扇区号,这是必需的,因为在具有单个数据螺旋的CD-ROM上寻道比在具有均匀同心磁道的磁盘上寻道要困难得多。为了进行寻道,驱动器中的软件要计算出一个近似的位置,将激光头移动到那里,然后开始在四周搜索一个前导码来看一看猜测的如何。前导码的最后一个字节是模式。

黄皮书定义了两种模式。模式1使用图5-22的布局,具有16字节的前导码、2048个数据字节和一个288字节的纠错码(横交叉Reed-Solomon码)。模式2将数据和ECC域合并成一个2336字节的数据域,用于不需要纠错(或者抽不出时间执行纠错)的应用,例如音频和视频。注意,为了提供优异的可靠性,在符号内部、帧内部和CD-ROM扇区内部使用了三种独立的纠错方案。单个位的错误在最低的层次上纠正,短暂的突发错误在帧的层次上纠正,任何残留的错误在扇区的层次上捕获。为这一可靠性付出的代价是花费98个588位的帧(7203字节)来容纳2048字节的有效载荷,效率只有28%。
单速CD-ROM驱动器以75扇区/秒的速度工作,提供的数据率在模式1下是153 600字节/秒,在模式2下是175 200字节/秒。双速驱动器快两倍,以此类推,直到最高的速度。因此,一个40倍速的驱动器能够以40×153 600字节/秒的速度传递数据,假设驱动器接口、总线以及操作系统都能够处理这样的数据率。一个标准的音频CD具有存放74分钟音乐的空间,如果将其用于在模式1下存放数据,提供的容量是681 984 000字节。这一数字通常被报告为650MB,这是因为1MB是220 字节(1 048 576字节),而不是1 000 000字节。
注意,即使一个32倍速的CD-ROM驱动器(数据率为4 915 200字节/秒)也无法与速度为10MB/s的快速SCSI-2磁盘驱动器相配,尽管许多CD-ROM驱动器使用了SCSI接口(也存在IDE CD-ROM驱动器)。当你意识到寻道时间通常是几百毫秒时,就会清楚CD-ROM驱动器与磁盘驱动器在性能上不属于同样的范畴,尽管它们有非常大的容量。
1986年,飞利浦以绿皮书(Green Book)再度出击,补充了图形以及在相同的扇区中保存交错的音频、视频和数据的能力,这对于多媒体CD-ROM而言是十分必要的。
CD-ROM的最后一个难题是文件系统。为了使相同的CD-ROM能够在不同的计算机上使用,有关CD-ROM文件系统的协议是必要的。为了达成这一协议,许多计算机公司的代表相聚在加利福尼亚和内华达两州边界处Tahoe湖畔的High Sierra宾馆,设计了被他们称为High Sierra的文件系统,这一文件系统后来发展成为一个国际标准(IS 9660)。该文件系统有三个层次。第一层使用最多8个字符的文件名,可选地跟随最多3个字符的扩展名(MS-DOS的文件命名约定)。文件名只能够包含大写字母、数字和下划线。目录能够嵌套最多8层深度,但是目录名不能包含扩展名。第一层要求所有文件都是连续的,这对于只能写一次的介质来说并不是一个问题。符合IS 9660标准第一层的任何CD-ROM都可以使用MS-DOS、苹果计算机、UNIX计算机或者几乎任何其他计算机读出。CD-ROM出版商十分看重这一特性,视其为重大的有利因素。
IS 9660第二层允许文件名最多有32个字符,第三层允许文件是不连续的。Rock Ridge扩展允许非常长的文件名(针对UNIX)、UID、GID和符号连接,但是不符合第一层标准的CD-ROM将不能在所有计算机上可读。
对于出版各种游戏、电影、百科全书、地图集以及参考手册,CD-ROM已经变得非常流行。大多数商业软件现在也是通过CD-ROM发行的。巨大的容量和低廉的生产成本相结合,使得CD-ROM适合无数的应用。
4.可刻录CD
起初,制造一片CD-ROM母盘(或音频CD母盘,就此事而言)所需要的设备极其昂贵。但是按照计算机产业的惯例,没有什么东西能够长久地保持高价位。到20世纪90年代中期,尺寸不比CD播放器大的CD刻录机在大多数计算机商店中已经是可以买到的常见外部设备。这些设备仍然不同于磁盘,因为一旦写入,CD-ROM就不能被擦除了。然而,它们很快就找到了适当的位置,即作为大容量硬盘的备份介质,并且还可以让个人或刚起步的公司制造他们自己的小批量的CD-ROM,或者制作母盘以便递交给高产量的商业CD复制工厂。这些驱动器被称为是CD-R(CD-Recordable,可刻录CD)。
物理上,CD-R在开始的时候是像CD-ROM一样的120mm的聚碳酸酯空盘,不同的是CD-R包含一个0.6mm宽的凹槽来引导激光进行写操作。凹槽具有3mm的正弦振幅,频率精确地为22.05 kHz,以便提供连续的反馈,这样就可以正确地监视旋转速度并且在需要的时候对其进行调整。CD-R看上去就像是常规的CD-ROM,只是CD-R顶面是金色的而不是银色的。金色源于使用真金代替铝作为反射层。银色的CD在其上具有物理的凹陷,与此不同的是,在CD-R上,必须模拟凹痕和槽脊的不同反射率。这是通过在聚碳酸酯与反射金层之间添加一层染料而实现的,如图5-23所示。使用的染料有两种:绿色的花菁和淡橘黄色的酞菁。至于哪一种染料更好化学家们可能会无休止地争论下去。这些染料与摄影技术中使用的染料相类似,这就解释了为什么柯达和富士是主要的空白CD-R制造商。

在初始状态下,染料层是透明的,能够让激光透过并且从金层反射回来。写入时,CD-R激光提升到高功率(8~16mW)。当光束遇到染料时,将其加热,从而破坏其化学结合力,这一分子结构的变化造成一个暗斑。当读回时(以0.5mW),光电探测器会识别出已经被烧过的染料处的暗斑与完好的透明区域之间的区别。这一区别被解释为凹痕与槽脊之间的差别,即使在常规的CD-ROM阅读器甚至在音频CD播放器上读回时,也是如此。
如果没有一本“有色的”书,就没有CD的新类型能够骄傲地昂起头,所以CD-R具有橘皮书(Orange Book),出版于1989年。这份文档定义了CD-R和一个新格式CD-ROM XA,它允许CD-R被逐渐增长地写入,今天几个扇区,明天几个扇区,下个月几个扇区。一次写入的一组连续的扇区称为一个CD-ROM光轨(CD-ROM track)。
CD-R的最初应用之一是柯达PhotoCD。在这一系统中,消费者将一卷已曝光的胶片和老的PhotoCD带给照片加工者,并且取回同一个PhotoCD,其中新的照片已经添加到老的照片之后。新的一批照片是通过扫描底片创建的,它们作为单独的CD-ROM光轨写在PhotoCD上。逐渐增长式写入是需要的,因为在这一产品引入的时候,CD-R空盘还过于昂贵,以至于负担不起为每个胶卷提供一张盘。
然而,逐渐增长式写入造成一个新的问题。在橘皮书之前,所有的CD-ROM在开始处有一个VTOC(Volume Table of Contents,卷目录)。这一方法对于逐渐增长式(也就是多光轨)写入是行不通的。橘皮书的解决方案是给每个CD-ROM光轨提供自己的VTOC,在VTOC中列出的文件可以包含某些或者所有来自先前光轨中的文件。当CD-R被插入到驱动器之后,操作系统从头到尾搜索所有的CD-ROM光轨以定位最近的VTOC,它提供了光盘的当前状态。通过在当前VTOC包含来自先前光轨中的某些而不是全部文件,可能会引起错觉,即文件已经被删除了。光轨可以被分组成段(session),这样就引出了多段(multisession)CD-ROM。标准的音频CD播放器不能处理多段CD,因为它们要求在开始处有一个VTOC。可是,某些计算机应用程序可以处理它们。
CD-R使得个人和公司轻松地复制CD-ROM(和音频CD)成为可能,只是通常会侵犯出版商的版权。人们设计了几种方案使这种盗版行为更加困难,并且使除了出版商的软件以外的任何软件都难于用来读取CD-ROM。方案之一是在CD-ROM上将所有文件的长度记录为几吉字节,从而挫败任何使用标准复制软件将文件复制到硬盘上的企图。实际的文件长度嵌入在出版商的软件中,或者隐藏(可能是加密的)在CD-ROM上意想不到的地方。另一种方案是在挑选出来的扇区中故意使用错误的ECC,期望CD复制软件将会“修正”这些错误,而应用程序软件则核对ECC本身,如果是正确的就拒绝工作。使用光轨间非标准的间隙和其他物理“瑕疵”也是可能的。
5.可重写CD
尽管人们习惯于使用其他一次性写的介质,例如纸张和摄影胶片,但是却存在着对可重写CD-ROM的需求。目前可用的一个技术是CD-RW(CD-ReWritable,可重写CD),它使用与CD-ROM相同尺寸的介质。然而,CD-RW使用银、铟、锑和碲合金作为记录层,以取代花菁和酞菁染料。这一合金具有两个稳定的状态:结晶态和非结晶态,两种状态具有不同的反射率。
CD-RW驱动器使用具有三种不同功率的激光。在高功率下,激光将合金融化,将其从高反射率的结晶态转化为低反射率的非结晶态,代表一个凹痕。在中功率下,激光将合金融化并重构其自然结晶状态以便再次成为一个槽脊。在低功率下,材料的状态被感知(用于读取),但是不发生状态的转化。
CD-RW没有取代CD-R的原因是CD-RW空白盘比CD-R空白盘要昂贵得多。此外,对于涉及对硬盘进行备份的应用程序来说,实际情况就是一次性写入,CD-R不会被意外地擦除是一大好事。
6.DVD
基本CD/CD-ROM格式自1980年以来经受了考验。从那时起,技术在不断改进,所以更高容量的光盘现在在经济上是可行的,并且存在着对它们的巨大需求。好莱坞热切地希望用数字光盘来取代模拟录像磁带,因为光盘具有更高的容量,更低廉的制造成本,更长的使用时间,占用音像商店更少的货架空间,并且不必倒带。消费性电子公司正期待着一种新型的一鸣惊人的产品,而许多计算机公司则希望为他们的软件增添多媒体特性。
这三个极其富有并且势力强大的产业在技术与需求方面的结合引出了DVD,最初DVD是Digital Video Disk(数字视盘)的首字母缩写,但是现在官方的名称是Digital Versatile Disk(数字通用光盘)。DVD采用与CD同样的总体设计,使用120 mm的注模聚碳酸酯盘片,包含凹痕和槽脊,它们由激光二极管照明并且由光电探测器读取。新特性包括使用了:
1)更小的凹痕(0.4µm,CD是0.8µm)。
2)更密的螺旋(轨迹间距0.74µm,CD是1.6µm)。
3)红色激光(波长0.65µm,CD是0.78µm)。
综合起来,这些改进将容量提高了7倍,达到4.7GB。一个1倍速的DVD驱动器以1.4 MB/s的速率运转(CD是150 KB/s)。但是,切换到红色激光意味着DVD播放器需要第二个激光器或者价格高昂的光学转换器才能够读取现有的CD和CD-ROM。随着激光器价格的下降,现在大多数驱动器都有两种激光器,所以它们能够读取两种类型的介质。
是不是4.7GB就足够了?也许是。采用MPEG-2压缩(在IS 13346中标准化),一块4.7GB的DVD盘能够保存133分钟高分辨率(720×480)的全屏幕、全运动视频,以及最多8种语言的音轨和最多32种语言的字幕。好莱坞曾经制作的全部电影中大约92%在133分钟以下。然而,某些应用(例如多媒体游戏或者参考手册)可能需要更多的空间,并且好莱坞希望将多部电影放在同一张盘上,为此定义了四种格式:
1)单面单层(4.7GB)。
2)单面双层(8.5GB)。
3)双面单层(9.4GB)。
4)双面双层(17GB)。
为什么要如此多种格式?一句话:政治利益。飞利浦和索尼对于高容量的版本希望采用单面双层盘,而东芝和时代华纳则希望采用双面单层盘。飞利浦和索尼认为人们不会愿意将盘片翻面,而东芝和时代华纳则不相信将两层放在一面能够工作。妥协是支持全部组合,但是市场将决定哪些格式会生存下来。
双层技术在底部具有一个反射层,在上面加上一个半反射层。激光从一层还是从另一层反射回来取决于激光在何处汇聚。下面一层需要稍微大一些的凹痕和槽脊,以便可靠地读出,所以其容量比上面一层稍微小一些。
双面盘是通过采用两片0.6 mm的单面盘并且将它们背对背地粘合在一起做成的。为了使所有版本的厚度相同,单面盘包含一个0.6 mm的盘片,粘合在一片空白的基底上(或者也许在将来是粘合在一个包含133分钟广告的盘上,期望人们会好奇其中包含什么)。双面双层盘的结构如图5-24所示。

DVD是由10家消费性电子公司的联盟在主要的好莱坞制片厂的紧密协作下设计的,其中7家是日本公司,而其中一些好莱坞制片厂也是由联盟中的日本电子公司所拥有。计算机与电信产业未被邀请参加这一野餐会,导致的结果是注意力集中在将DVD用于电影租赁与营业性放映上。例如,标准特性包括实时跳过色情场景(使父母得以将一部等级为NCl7 [4] 的影片转变成对儿童安全的影片),包含六声道声音,并且支持摇摄及扫描。最后一个特性是允许动态地决定如何将电影(其宽高比为3:2)的左和右边缘修剪掉以便适合当前的电视机(其宽高比为4:3)。
另一个计算机业大概不会考虑的项目是在供应给美国的光盘与供应给欧洲的光盘以及适用于其他大陆的其他标准之间故意不兼容。因为新影片总是首先在美国发行,然后当视频产品在美国上市的时候再输出到欧洲,所以好莱坞需要这一“特性”。这一主意可以确保欧洲的音像商店不能过早地在美国买到视频产品,因而减少新电影在欧洲的票房收入。如果计算机产业是由好莱坞来运作的,那么就会在美国只能使用3.5英寸的软盘而在欧洲只能使用9厘米的软盘。
发明单面/双面和单层/双层DVD的那些人再一次陷入混战。由于产业界参与者政治上的争论,下一代DVD仍然缺乏单一的标准。一种新的设备是Blu-ray(蓝光光盘),它使用0.405(m(蓝色)激光将25 GB压入单层盘中,或者将50GB压入双层盘中。另一种设备是HD DVD [5] ,它使用相同的蓝色激光,但是容量只有15 GB(单层)或者30 GB(双层)。这种格式之战将电影制片厂、计算机制造商和软件公司割裂开来。缺乏标准的结果是,这一代DVD推广得非常慢,因为消费者在等待着尘埃落定,看哪一个格式胜出。产业界这些愚蠢的行为让人想起George Santayana [6] 的名言:“不能以史为鉴的人注定要重蹈覆辙”。