12.2 CD-ROM的逻辑格式(ISO 9660) 12.2.1 ISO 9660的重要性 CD-ROM物理格式的标准化意味着所有CD-ROM生产厂家都应遵循这种标准化格式,这也就 意味着,CD-ROM上的信息可以在不同的信息处理系统之间交换,但只能在这个物理层上 实现交换。由于CD-ROM面对用户的是文件,如文本文件、图像文件、声音文件、执行文 件等等,这就需要一个文件系统来管理,这样就可使用户把CD-ROM当成一个文件集来看 待,而不是让用户从物理层上去看待CD-ROM盘。因此,仅有物理格式标准化还不够,还 需要有一个如何把文件和文件目录放到CD-ROM盘上的逻辑格式标准,也就是文件格式格 式。 由于CD-ROM标准(Yellow Book)没有制定文件标准,所以计算机厂家不得不开发自己的C D-ROM逻辑格式。这些不统一的CD-ROM逻辑格式严重地影响了CD-ROM的推广应用。为了解 决这个问题,计算机工业界的代表聚集在美国内华达州的Del Webb’s High Sierra Ho tel & Casino,起草了一个CD-ROM文件结构的提案,叫做High Sierra文件结构,并把这 个提案提交给了国际标准化组织(International Standards Organization,ISO),ISO 作了少量修改后命名为ISO 9660。通过许多软硬件公司的共同的艰苦努力,尤其是John Einberger、Bill Zoellick等人作出的贡献,历时5年,终于在1988年正式公布了这个 标准,命名为“Information Processing��Volume and File Structure of CD- ROM for Information Interchange”,可译为“信息处理:用于信息交换的CD-ROM的卷 和文件结构”。 IBM PC及其兼容机的文件结构叫做MS-DOS文件结构,而Apple Macintosh计算机的文件结 构叫做分层结构文件系统(Hierarchical File System,HFS)。由于这两种文件结构不相 同,因此MS-DOS文件不能在Macintosh计算机上运行,而HFS文件不能在IBM PC机上运行 。ISO 9660标准既不是MS-DOS的文件结构标准,也不是HFS的文件结构标准,而只是一个 描述计算机用的CD-ROM文件结构标准。因此,计算机要能够读ISO 9660文件结构的盘, 它的操作系统就必需要有支持软件,这个软件通常是在现有操作系统上进行扩展(Exten sion)。Microsoft公司为读CD-ROM盘上的ISO 9660文件而开发的程序叫做MSCDEX(Micro soft CD-ROM Extension),它需要和CD-ROM驱动器带的设备驱动程序相联合,MS-DOS操 作系统才能读CD-ROM盘上的ISO 9660 文件。MSCDEX.EXE程序的主要功能就是把ISO 966 0文件结构转变成MS-DOS能识别的文件结构。 在MS-DOS和MS-Windows环境下,IBM PC及IBM兼容机计算机必需安装MSCDEX.EXE和CD-RO M驱动器带的设备驱动程序软件才能读CD-ROM盘上的文件。在MS-Windows 3.x环境下,设 备驱动程序要安装在CONFIG.SYS文件中,而MSCDEX.EXE文件要安装在AUTOEXEC.BAT文件 中。同样,其他的操作系统也需要开发类似于MSCDEX.EXE的软件,并且同样要与CD-ROM 驱动器带的设备驱动程序联合工作,这样才能读ISO 9660盘上的文件。 在Windows 95/98环境下不需要另外配置CONFIG.SYS和AUTOEXEC.BAT文件,它本身带有M SCDEX.EXE和设备驱动程序,在安装过程中会自动安装,因此用户自己也就不需要另外安 装MSCDEX.EXE和CD-ROM设备驱动程序。 12.2.2 逻辑结构的设计概要 文件系统是在应用软件和控制器之间的软件,它是操作系统的一部分。文件系统实际上 是组织数据的一种方法,使应用程序访问CD-ROM时不需要关心物理地址或数据结构。一 个完整的CD-ROM文件系统有三个主要部分组成: (1) 逻辑格式(logical format): 它是文件格式的同义词。逻辑格式是确定盘上的数据 应该如何组织,以及存放在什么地方。说得具体一点就是基本的识别信息放在何处,文 件目录应该如何构造,到何处去找盘上的目录,一个应用软件存放在几张光盘上等等。 由此也可以看到,逻辑格式与物理格式是不同的。 (2) 源软件(origination software): 它是把数据写到逻辑格式的软件,按逻辑格式把 要存到盘上的文件进行装配,所以源软件又称“写”软件。 (3) 目的软件(destination software): 它是把数据从逻辑格式读出来,并且把数据转 换成文件,因此目的软件又称为“读”软件。它在终端用户的机器上能够理解逻辑格式 ,并且使用逻辑格式来访问盘上的文件。 在上述三部分中,逻辑格式是文件系统的核心。逻辑格式标准统一后,盘上的信息就有 可能在不同的信息处理系统之间进行交换。 定义CD-ROM的逻辑格式与定义磁盘的逻辑格式有差别,这是由于这两种存储器的特性不 同。定义CD-ROM逻辑格式首先要考虑CD-ROM本身的特性。对定义CD-ROM逻辑格式产生较 大影响的因素有: CD-ROM是只读存储器,而磁盘是可读/写存储器,这就不需要添加、删除目录等功能。 CD-ROM的写入和读出是不对称的。 寻找数据的时间相对于20 ms左右的磁盘大得多,长到950 ms,平均也得几百毫秒。 存储容量大(650 MB/盘)。 这些因素关系到文件系统的性能。 CD-ROM的逻辑格式可归纳为两个部分: (1) 定义一套结构用来提供整片CD-ROM盘所含的信息,称卷结构。单片CD-ROM称一卷。 一个应用软件可有大、中、小之分,一个应用软件也可能有多个文件组成。对于小的应 用软件,一卷可能容纳好几个文件,而一卷中的文件数目也可能相当惊人;对于中等大 小的应用软件,一卷可能只容纳一个;对于一个大的应用软件,如百科全书,可能有好 几卷才能容纳得下;把存放单个应用软件的多片CD-ROM称为一个卷集,这与出版的书很 相似。在卷集中,一个文件可能要跨越好几卷,或者相反,一卷中有好多文件。因此, 必须要有一套规则和数据结构来表达这些错综复杂的关系,以便使用户有足够多的信息 来了解盘上的内容。这些关系是属于卷一级的逻辑格式。 (2) 定义一套结构用来描述和配置放到盘上的文件,称为文件结构。文件结构的核心是 目录结构。这个结构是文件一级的逻辑格式,采用什么样的逻辑格式对文件系统的性能 有很大的影响。一般来说,目录结构采用分层目录结构,并且有显式说明和隐式说明之 分。为CD-ROM提议的目录结构大体有五类: ① 多文件显式分层结构(multiple-file explicit hierarchies)。它的特点是把子目录 当作文件来处理,打开一个有长路途的文件需要较多的寻找次数。 ② 单文件显式分层结构(single-file explicit hierarchies)。它的特点是把整个目录 结构放在单个文件中,根目录和子目录都作为文件中的记录而不是作为文件来处理。 ③ 散列路径名目录(hashed path name directories)。它的特点是把整个路径名和文件 名拼凑成一个地址放在目录中,这是隐式目录结构。 ④ 索引路径名目录(indexed path name directories)。它的基本思想是把子目录的全 路径名转换成一个整数。这也是隐式目录结构。 ⑤ 组合前面4种结构中的2种或2种以上的混合结构。 由于CD-ROM有它自己的固有特性,因此围绕CD-ROM定义的卷和文件结构也有它自己的特 性。这些特性充分体现在ISO 9660标准文件中。为便于理解它们的结构,下面采用由底 层到顶层的思路来介绍。 12.2.3 逻辑扇区和逻辑块 CD-ROM的一个物理扇区除了扇区头信息之外还有2336字节。在2336字节中,有288字节可 以用来作错误检测和校正用,剩下的2048字节作为用户数据域。2048字节(2 KB)的数据 域定义为一个逻辑扇区(logical sector)。每个逻辑扇区都有一个唯一的逻辑扇区号(l ogical sector number,LSN)。CD-ROM的第一个逻辑扇区是从物理地址00∶02∶00开始 ,逻辑扇区号为LSN0。 逻辑扇区的大小也允许自定义,但要等于2n,n是一个正整数。 每个逻辑扇区可以分成一个或多个逻辑块。这样做对于在盘上存放大量的小文件是很有 用的。在一个由2048字节组成的逻辑扇区中,一个逻辑块的大小可以是512、1024或204 8字节。但一个逻辑块的大小不超过逻辑扇区的大小。每个逻辑块有一个逻辑块号(logi cal block number,LBN)。第一个逻辑块号(LBN 0)是第一个逻辑扇区(LSN 0)中的第一 块,依次为LBN1、2、3等等。在CD-ROM上,所有文件和其他重要的数据都按LBN寻址。 此外,还有一个记录的概念。一个记录由一系列连续字节组成,它作为信息单元。一个 记录的字节可多可少,少则几个,多则几十、几百个,视要表达的信息而定。记录有固 定字节长度和可变字节长度之分,分别称为固定长度记录和可变长度记录。 物理扇区、逻辑扇区、逻辑块之间的关系如图12-05所示。 图12-05 物理扇区与逻辑扇区、逻辑块的概念 12.2.4 文件 放到CD-ROM上的文件类型没有限制,可以是ASCII文本文件、索引结构文件、可执行文件 (如.COM文件,.EXE文件),压缩的或未压缩的图像文件、声音文件等,只要你想存的文 件都可以。 每个文件可分为一节或多个文件节(file section)。一个文件节放在由许多个逻辑块组 成的文件空间里。这些逻辑块是顺序编号的逻辑块,由它们组成的文件空间又称为文件 范围(extent)或文件域。一个大的文件可以分成多个文件节,存放在多片CD-ROM盘上的 文件域中;一个中等大小的文件也可以分成若干个文件节,存放在同一片CD-ROM盘上的 多个文件域中,这些文件域也不要求是连续的文件域; 小的文件可以不分域,存放在单 个文件域中。 文件的标识符(file identifier)可由三部分组成:文件名、文件扩展名和文件版本号组 成。但文件标识符必须要包含一个文件名,或者包含一个扩展名,其他可作为选择。文 件标识符中的字符通常采用ASCII字符,并且限定用其中的一部分: 数字0~9 大写英文字母A~Z 下划线(_) 文件名和文件扩展名之间用句点(.) 文件名或文件扩展名与文件版本号之间用分号(;)下面给出了一些合法文件标识符和不合 法文件标识符的例子。 ************************************************ 合法文件标识符: FILE.DAT FILE.DAT;1 DATA_FILE_FOR_INTERCHANG.DAT FILENAME_WITHOUT_AN_EXTENSION .NO_FILENAME_JUST_AN_EXTENSION -------------------------------------------------------------------------- 不合法文件标识符: file.dat;不允许小写字母 ONLY.ONE.PERIOD.ALLOWED;只允许一个句点 NO-HYPHENS-OR--SIGNS;没有规定用连字符(-)和 THIS_FILENAME_IS_LONGER_THAN_31_CHARACTERS ;多于31个字符 ************************************************ 在MS-DOS环境下,文件名的长度不超过8个字符,文件扩展名的长度不超过3个字符;在 其他环境下,文件标识符的总长度限制为不超过31个字符。 12.2.5 目录 大多数支持磁盘的文件系统都时兴用分层目录结构,CD-ROM也采用这种目录结构,并且 限定目录层次的深度为8级。用这种目录结构可以组织大数量的文件。大多数磁盘文件系 统把子目录作为一种特殊的文件进行显式处理,一层一层地打开子目录文件,以找到最 终的文件。这样做的好处是为增加或删除目录提供了很大的灵活性。但CD-ROM是只读, 无需这种灵活性,而且采用这种方法来找一个带有长路径名的文件,一次一次打开子目 录文件势必要化费很长的时间。因此,CD-ROM没有采用这种显式分层目录结构,而是采 用隐式分层目录结构,但也把目录当作文件看待,并且把整个目录包含在1个或少数几个 文件中。包含目录的文件称为目录文件。 目录文件与普通的用户文件相类似,但对CD-ROM采用的目录文件结构作了具体的规定。 目录文件由一系列可变长度的目录记录组成。每个目录记录的格式如表12-03所示。由表 12-03可以看到,一个目录记录包含有许多记录域。这些域中记录有文件标识符,以字节 计算的文件长度、文件域中的第一个逻辑块号(LBN),以及打开和使用这个文件所需要的 其他信息。当一个文件放在多个文件域中时,需要设置多个目录记录,每个目录记录中 给出相应文件域的地址,并由文件标志记录域来指明该文件域是不是最后一个。目录文 件、目录记录、记录域等之间的关系如图12-06所示。 表12-03 目录记录的格式 字节位置 记录域的名称 1 目录记录长度(LEN_DR) 2 扩展属性记录(XAR)长度 3~10 文件域地址 11~18 数据长度 19~25 日期和时间 26 文件标志 27 文件单元大小 28 交叉间隔大小 29~32 卷顺序号 卷顺序号 33 文件标识符长度(LEN_FI) 34-(33+LEN_FI) 文件标识符 34+LEN_FI 填充域 (34+LEN_FI+1)-LEN_DR 系统使用(保留) 图12-06 目录文件结构 文件的附加信息可以记录在一个命名为扩展属性记录(extended attribute record,XA R)的记录上,它放在文件的前面而不是放在目录记录上,这样做可以使目录记录变得较 小。附加信息包括文件作者、文件修改日期、访问文件的许可权等信息。凡是不常使用 的信息都放到扩展属性记录上。这也是CD-ROM目录结构的一个特点。 如果一个文件有多个文件域(如图12-06中的文件B),每个文件域都有XAR记录,在这些X AR记录上的信息可能会不相同,文件系统应认为最后一个XAR记录上的信息是有效的。这 个特性在卷集制作过程中很有用。 由于每个目录记录的长度不确定,因此在一个逻辑扇区中的目录记录的个数也不确定, 但必须要保证目录记录数的数目为整数。当一个目录在这个逻辑扇区中放不下的时候, 应移到后面的一个逻辑扇区。这样可以保证读到计算机内存中的目录不会出现支离破碎 的现象。 12.2.6 路径表 前面已经谈到,由于CD-ROM寻找时间很长,若采用磁盘的方式来处理目录,要打开一个 目录嵌套层次很深的文件,势必要化费很长的寻找时间。为解决这个问题,在1985年, J.D.Barnette、B.Zoellick和S.Stegner开发了一种名叫路径索引(path index)的一种隐 式分层目标结构,后来改名为路径表(path table)。这种结构的特点是利用索引值来访 问所有的目录,它的基本思想示于图12-07。 图12-07 目录结构与路径表 路径表由许多称为路径表记录组成,它对应于根目录和每个子目录,如图12-07中的ROO T(根)、A、B,…,等路径表记录。每个路径表记录具有如表12-04的格式。路径表中包 含有每一个子目录所在的开始地址,即逻辑块号LBN,这样就可以通过路径表直接访问任 何一个子目录。因此,如果一张完整的路径表能保存在计算机的RAM中,那末一次寻找就 可以访问盘上的任何一个子目录。 表12-04 路径表记录 字节位置 记录域的名称 1 目录标识符的长度(LEN_DI) 2 扩展属性记录(XAR)的长度 3~6 存放目录的地址 7~8 父目录号 9~(8+LEN_DI) 9~(8+LEN_DI) 目标标识符(不超过31个字符) (9+LEN_DI) 填充域 路径表只能保证访问目录的第一个物理扇区。如果有由成千个文件组成的大目录,那末 整个目录可能跨越盘上的好几个扇区。这么多的文件最好分散在各个子目录下,每个子 目录下分配约40个左右的文件。按每个目录记录的平均长度为50字节计算,差不多占据 单个物理扇区。如果在一个子目录下分配太多的文件数时,那末要找这个目录下的文件 时,需要顺序读和检查好几个物理扇区才能找到这个文件,这样就多化时间。 12.2.7 卷 CD-ROM盘上可以存放信息的区域称为卷空间(volume space)。卷空间分成两个区:从LS N 0到LSN 16称为系统区,它的具体内容没有规定。从LSN 16开始到最后一个逻辑扇区称 为数据区,它用来记录卷描述符(volume descriptors)、文件目录、路径表、文件数据 等内容。 每卷数据区的开头(LSN 16)是卷描述符。卷描述符实际上是一种数据结构,或者说是一 种描述表。其中的内容用来说明整个CD-ROM盘的结构、提供许多非常重要的信息,如盘 上的逻辑组织、根目录地址、路径表的地址和大小、逻辑块的大小等等。卷描述符的结 构如表12-05所示,它是一个由2048字节组成的固定长度记录。 表12-05 卷描述符的格式 字节位置 录域的名称 1 卷描述符的类型 2~6 标准卷标识符(用CD001表示) 7 卷描述符的版本号 8~2048 (取决于卷描述符的类型) 卷描述符有五种类型: 主卷描述符(primary volume descriptor) 辅助卷描述符(supplementary volume descriptor) 卷分割描述符(volume partition descriptor) 引导记录(boot record) 卷描述符系列终止符(volume descriptor set terminator) 上述五种描述符的结构分别示于表12-06~表12-09。 表12-06 主卷和辅助卷描述符 字节位置 主卷描述符记录域的名称 辅助卷描述符记录域的名称 1 卷描述符的类型 同左 2~6 标准卷标识符(CD001) 同左 7 卷描述符版本号 同左 8 未使用(00) 卷标志 9~40 系统标识符 同左 41~72 卷标识符 同左 73~80 未使用(00) 同左 81~88 卷空间大小 同左 89~120 未使用(00) 换码顺序 换码顺序 121~124 卷系列大小 同左 125~128 卷顺序号 同左 129~132 逻辑块大小 同左 133~140 路径表大小 同左 141~144L 型路径表值位置* 同左 145~148L 型路径表任选值位置 同左 149~152M 型路径表值位置** 同左 153~156M 153~156M 型路径表任选值位置 同左 157~190 根目录的目录记录 同左 191~318 卷集标识符 同左 319~446 出版商标识符 同左 447~574 数据准备者标识符 同左 575~702 应用软件标识符(如CD-I) 同左 703~739 版权文件标识符 同左 740~776 文摘标识符 文摘标识符 同左 777~813 文献目录文件标识符 同左 814~830 卷创作日期和时间 同左 831~847 卷修改日期和时间 同左 848~864 卷到期日期和时间 同左 865~881 卷有效日期和时间 同左 882 文件结构版本号 同左 883 (保留) 同左 同左 884~1395 应用程序使用 同左 1396~2048 (保留) 同左 * L型: 最低有效字节在先,**最高有效字节在先 表12-07 卷分割描述符 字节位置 记录域的名称 1 卷描述符的类型 2~6 标准卷标识符(CD001) 7 卷描述符版本号 8 未使用(00) 9~40 系统标识符 41~72 卷分割标识符 卷分割标识符 73~80 卷分割位置 81~88 卷分块大小 89~2048 系统使用 表12-08 引导记录 字节位置 记录域的名称 1 卷描述符的类型 2~6 标准卷标识符(CD001) 7 卷描述符版本号 8~39 引导系统标识符 40~71 引导标识符 72~2048 引导系统使用 表12-09 卷描述符系列终止符 字节位置 记录域的名称 1 卷描述符的类型 2~6 标准卷标识符(CD001) 7 卷描述符版本号 8~2048 保留(00) 五种描述符的前四种可以任意组合,组成卷描述符系列。这四个描述符可以在描述符系 列中出现不只一次。描述符系列有两个限制:主卷描述符至少要出现一次,卷描述符系 列终止符只能出现一次,而且只能出现在最后。卷描述符系列记录在从LSN 16开始的连 续逻辑扇区上。 以上简要介绍了CD-ROM的卷和文件结构的基本概念,没有对它的细节作一一解释,这对 一般读者就已经足够了。对想进一步深入理解CD-ROM逻辑格式的读者,以及想编写自己 的CD-ROM文件系统的读者,请参看ISO 9660标准文件。 ISO 9660标准的出现,对CD-ROM的推广应用产生了很大的推动作用。理论上说,CD-ROM 上的文件应该在哪种型号的机器上都可以读出。然而,事实并不完全是这样。它们各自 包含有自己的文件系统,有自己的专用格式及应用软件,同一片CD-ROM上的文件不一定 都能在不同的信息系统中读出。 |
|