ECMA 167 - Volume Descriptor Sequence 卷描述符序列

来源:互联网 发布:淘宝商城怎么注册 编辑:程序博客网 时间:2024/06/08 09:46

1卷描述符序列内容

一个卷描述符序列必须包含一个或者多个主卷描述符。主卷描述符必须标识:

  • 一个卷以及这个卷所属的卷集合
  • 这个卷在卷集合中的序列号
  • 卷的属性
  • 记录主卷描述符中特定域内容所用的字符集

每一个主卷描述符必须有一个主卷描述符号,一个卷描述符序列里面只能有一个主卷描述符的主卷描述符号为0


一个卷描述符序列可以包含0或者更多的实现用卷描述符。一个实现用描述符标识一个实现并且包含这个实现所用的信息。

一个卷描述符序列可以包含零到多个分区描述符。一个分区描述符用来标识一个分区,分区的属性,分区的标识符(也就是分区号)。

一个卷描述符序列可以包含零到多个逻辑卷描述符。一个逻辑卷描述符用来标识一个逻辑卷,逻辑卷的逻辑块尺寸,标识组成逻辑卷的分区,以及逻辑卷的属性

一个卷描述符序列可以包含零到多个未分配空间描述符。一个未分配空间描述符用来标识可用的卷空间,这些可用空间可以分配给分区或者用来保存卷上的卷描述符序列。

每一个卷描述符应该有一个卷描述符序列号。具有相同卷描述符序列号的卷描述符内容必须相同。


2记录卷描述符序列

一个卷描述符序列必须记录在卷空间的连续逻辑扇区组成的extents上。任何后续扇区都可以用来记录描述符。

保存卷描述符序列的extent被记录在Anchor Volume Descriptor Pointer中,Anchor Volume Descriptor Pointer被记录在两个或者多个anchor描述符中。

一个Anchor Volume Descriptor Pointer可以标识主卷描述符序列,也可以用来标识预留卷描述符序列。Anchor Volume Descriptor pointers描述的所有卷描述符序列应该是相同的。

2.1Anchor points

Anchor points应该放在逻辑扇区号256, n-256, n之后的两个或者多个扇区

2.2Reserve Volume Descriptor Sequence Set

一个预留卷描述序列可以被记录在一个卷上。预留卷描述符序列也需要通过Anchor Volume Descriptor Pointer标识。如果任意一个Anchor Volume Descriptor pointer标识了一个预留卷描述符序列,那么卷上的所有Anchor volume Descriptor pointer都要标识这个预留卷描述符。如果预留卷描述符序列被标识了,那么要标识一个卷描述符序列等于主卷描述符序列。一个逻辑扇区不能同时属于主卷描述符序列的extent和预留卷描述符的extent

2.3卷描述符序列等价

判断两个卷描述符序列是否等价,可以先计算每个卷描述符序列的规范化形式,如果他们的规范化形式相同,那么这两个卷描述符序列描述的是相同的卷描述符集合。卷描述符的规范化可以通过以下步骤获得:

  • 丢弃所有卷描述符指针
  • 每个卷描述符序列号,仅保留一个描述符
  • 设置Tag checksum ,描述符CRC,描述符CRC长度, 描述符Tag位置成员为0
  • 把剩余的描述符按字节序列排序
  • 连接这些排好序的描述符。

3常用描述符

下面几类描述符:

  • 主卷描述符,每个主卷描述符都有相同的内容:卷标识符,卷集和标识符,描述符字符集
  • 分区描述符,有相同的分区号
  • 逻辑卷描述符,每一个都包含相同的逻辑卷标识符和字符集
  • 未分配空间描述符。

4描述符的保存

那些格式标识为Byte Positions - BP的描述符,描述符的第一个字节要放在逻辑扇区的地一个字节

那些格式标识为Releative Byte Positions - BP的描述符,不限制描述符在逻辑山区的起始位置,除非描述符内部的applicable描述符指定了特定的位置

当描述符保存在一个逻辑sectors中时,那么这个sector中除了保存逻辑描述符剩余的空间都应该是#00

本文所涉及的大部分描述符都是512字节





原创粉丝点击