硬碟資料救援,RAID快速急救
網址:www.fubjj.com
複合文檔二進位存儲結構通俗講義
首先,大家可以將複合文檔與FAT檔案系統對比起來學習,複合文檔和FAT檔案系統有許多相似之處。
1.
複合文檔類似於FAT檔案系統,大家在理解的時候可以把複合文檔和檔案系統放到同一個層次;
2.
FAT檔案系統有DBR
,FAT表目錄。那麼對應的複合文檔就是檔頭,主磁區配置表(MSAT),磁區配置表(SAT),短磁區配置表(SSAT)和複合文檔的目錄;
3.
在FAT檔案系統中,檔採用磁區為單位存储数据,多个扇区组成簇,文件占用多少个簇,占用了哪些簇,簇链是怎样的这个就是由FAT表记录的。相对应的复合文档中,数据也采用扇区来存储数据,只是复合文档中的扇区有基本扇区和短扇区之分。在文件系统中一个扇区占用512个字节,在复合文档中,扇区的大小在文件头中有规定,不过基本都是512个字节。短扇区的大小也在文件头中作出了规定。一般是64个字节。
4.
在复合文档中,数据信息被叫做流,按照流的大小有基本流和短流之分,按照功能来分,有控制流和数据流之分;流相当于文件系统中的文件,文件系统中的文件夹在复合文档中就对应仓库。那么流存在哪里呢?文件系统中数据以扇区来存储,在复合文档中,基本流以扇区来存储,短流由短扇区来存储。而多个短流就组成短路存放流,而且短流存放流是以扇区来存储的;这里给大家总结一下:

流以扇区来存储;

短流以短扇区来存储;

短流组成短流存放流,短流存放流也是以扇区来存储的;

在文件系统中文件以簇来管理,多少个扇区组成一个簇,在DBR中有记录,相应的在复合文档中,基本流的大小也是在文件头中记录的,一般是8个扇区,也就是说基本流的大小相当于簇的大小一样;
5.
在文件系统中,FAT表管理文件的簇链,而在复合文档中,这个工作交给了主扇区配置表,扇区配置表,短扇区配置表这三个配置表。

上述三个配置表记录的和FAT表记录的都是表明扇区或者簇的占用情况的;只是在复合文档中区分的更细致;

MAST记录的是SAT的占用扇区情况,也就是说,MAST的功能就是记录SAT占用了哪些扇区,哪些扇区的编号是多少,只是我们这里叫做SID;

SAT记录的就是一个流占用扇区的情况,一个流占用哪些扇区,哪些扇区的SID是多少;

SSAT记录的就是短流占用扇区的情况;

这些配置表的大小,起始扇区在文件头中都有记录的就像文件系统的DBR记录FAT表的大小一样。

6.
目录(directory)就是一种控制流,由一些列的目录入口(directory
entry)组成,每一个目录入口就指向一个流或者仓库。
7.
下面给出复合文档的大概存储结构的实例分析:
这个就是复合文档的文件头,我们逐一分析
1.
DO
CF
11
E0
A1
B1
1A
E1
复合文档的文件标示;
2.
接下来的16个字节表示此文件的唯一标识(不重要,可以全为0;
3.
接着的两个字节表示文件格式修订号3E
00;
4.
接着的是文件格式版本号
03
00;
5.
接着是字节顺序规则标识FE
FF
表示字节按小头排序,FF
FE表示按大头排序;
6.
接着的四个字节表示复合文档扇区的字节数
以2的冥形式表示
这里是09
00
那么扇区的字节数就是
2的9次方也就是512个字节;
7.
接下来的四个字节表示短扇区的字节数,同上,这里是06
00
也就是2的6次方个字节,这里就是64个字节;
8.
接下来的10个字节没有使用,全是0;
9.
接着的4个字节表示SAT配置表占用的扇区数,这里是
01
00
00
00
也就是说扇区配置表占用1个扇区;
10.
接着的4个字节表示存放目录流的第一个扇区的扇区ID
也就是SID;
11.
接着的4个字节没有使用;
12.
接着的4个字节表示标准流的最小大小,小于这个值的就是短流;
13.
接着的4个字节表示存放短扇区表(SSAT)的起始扇区号。如果不存在短扇区配置表则此处值为
FE
FF
FF
FF;
14.
接着的4个字节表示存放短扇区配置表的扇区总数;
15.
在往下的4个字节表示存放主扇区配置表(MSAT)的起始扇区号,如果没有则为FE
FF
FF
FF;这里说明一下,这里说的存放主扇区配置表的扇区,因为主扇区配置表的前109个SID是存储在文件头中的,如果主扇区配置表内容太多,文件头中存放不下,那么系统会为主扇区配置表分配其他扇区来存放它。这里的4个字节所指的扇区就是额外扇区。这里的实例是
FE
FF
FF
FF
说明主扇区配置表的内容在文件头中就能存储下了,不需要分配额外的扇区来存储了,所以这里就是
FE
FF
FF
FF

16.
接下来的4个字节表示存放主扇区配置表的扇区数,这里所指的扇区也是上述的额外扇区;
17.
在往下就是主扇区配置表存储在文件头中的SID了。一个SID占用4个字节,这个和FAT表中一个FAT项占用4个字节一样;这个实例中,因为前面已经得出SAT只占用1个扇区,所以这里就只有一个SID了。这里是
29
00
00
00
也就是说SAT从41+1号扇区开始,占用1个扇区。我们的42号扇区存放的就是SAT的内容。为什么是41+1呢?因为29
00
00
00
用十进制表示就是41,而我们的文件头要占用一个扇区,所以我们的SAT就从41+1号扇区开始了;
好的,当我们的复合文档文件头受损时,我们就只需要复制一个正常复合文档的文件头,然后修改上述参数就行了。
下面我们来逐个分析上述参数。
1.
主扇区配置表,这里已经分析过来,这里的主扇区配置表就只有一个SID,就没必要其他的扇区来存放它的内容了,MSAT的前109个项存放在文件头中,如果MSAT有大于109个项的内容,系统才会分配其他扇区来存放多出来的项。
2.
扇区配置表(SAT),我们从文件头中看到SAT占用一个扇区,起始扇区记录在MAST中,这里就是MAST的第一个项,29
00
00
00
也就是41+1
,为什么要加1,我前面已经说过了。我们就转到42号扇区看看扇区配置表(SAT)长什么样。
看到了吗,这个就是42号扇区的内容,是不是和FAT表很像啊!SAT表项和FAT表项一样,从0号开始编号,我们以这里为例子说明;在FAT文件系统中,我们可以根据FAT表构造文件存储的簇链,复合文档中我们同样可以构造出流存储的扇区链。
0号表项
1号
2号
3号
4号
5号
6号
7号
是不是很熟悉,这个和FAT表一样,表项中存储的是下一个扇区的扇区号。和FAT表链一样的,如果扇区链结束了,也就是说那个流占用的扇区结束了,那么就在以FE
FF
FF
FF最为结束标志。跟FAT文件系统完全一样。如果那个扇区没有使用那么就用FF
FF
FF
FF标示出来,说明这个是个空闲扇区;
4.
下面我们接着分析短扇区配置表(SSAT),这里我们从文件头中分析出我们的短扇区配置表开始于2C
00
00
00
也就是44+1号扇区,占用一个扇区。我们转到45号扇区看看短扇区配置表长什么样;
这个就是我们的短扇区配置表的内容了,短扇区配置表就相当于短流的FAT表,我们前面说过,短流存储在短扇区中,那么短流的存储情况就在短扇区配置表中记录。这里我们构造出我们实例中的短扇区扇区链;
0号表项
1号表项
01000000
FEFFFFFF
剩下的表项内容都是
FFFFFFFF
也就是处于空闲状态;
5.
接着分析复合文档的目录结构,看看和我们的FAT文件系统有哪些相似之处:
我们从文件头中分析出,我们的目录流的起始扇区是
2A
00
00
00
也就是
42+1号扇区。先说明一下,一个目录入口严格的占用128个字节。好的我们先转到43号扇区看看:
基隆市,台北市,台北縣,桃園縣,新竹縣,新竹市,苗栗縣,台中縣,台中市,彰化縣,南投縣,雲林縣,嘉義縣,嘉義市,台南縣,台南市,高雄縣,高雄市,屏東縣,澎湖,金門,馬祖,中國大陸,From InToHard
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 硬碟救資料,高雄 的頭像
    硬碟救資料,高雄

    硬碟資料救援,RAID快速急救,高雄,台南,屏東,台北,台中,電話:0931-273295,網址:www.fubjj.com

    硬碟救資料,高雄 發表在 痞客邦 留言(0) 人氣()