什么是分区表?
3个回答
2013-09-24
展开全部
硬盘分区表可以说是支持硬盘正常工作的骨架.操作系统正是通过它把硬盘划分为若干个分区,然后再在每个分区里面创建文件系统,写入数据文件.本文主要讲述的是分区表的位置,结构以及各个分区表是如何链接起来的.当掌握了这些知识后,即使分区表受到破坏,一样也可以根据残存的数据手工修复分区表,从而修复分区。
一.分区表的位置及识别标志
分区表一般位于硬盘某柱面的0磁头 1扇区.而第1个分区表(也即主分区表)总是位于
(0柱面,1磁头,1扇区),剩余的分区表位置可以由主分区表依次推导出来.分区表有64个字节,占据其所在扇区的[441-509]字节.要判定是不是分区表,就看其后紧邻的两个字节(也即[510-511])是不是 '55AA',若是,则为分区表.
二.分区表的结构
分区表由4项组成,每项16个字节.共4×16 = 64个字节.每项描述一个分区的基本信息.每个字节的含义如下:
分区表项含义 字节含义0Activeflag.活动标志.若为0x80H,则表示该分区为活动分区.若为0x00H,则表示该分区为非活动分区.1,2,3该分区的起始磁头号,扇区号,柱面号磁头号 -- 1字节, 扇区号 -- 2字节低6位,柱面号 -- 2字节高2位 + 3字节4分区文件系统标志:
分区未用: 0x00H.
扩展分区: 0x05H, 0x0FH.
FAT16分区: 0x06H.
FAT32分区: 0x0BH, 0x1BH, 0x0CH, 0x1CH.
NTFS分区: 0x07H.5,6,7该分区的结束磁头号,扇区号,柱面号,含义同上.8,9,10,11逻辑起始扇区号。表示分区起点之前已用了的扇区数.12,13,14,15该分区所占用的扇区数.
分区表项有几个字节比较重要,下面分别阐述之: 1、(1,2,3)字节 磁头号由(1)字节8位表示,其范围为(0 -- 28 - 1),也即(0 磁头-- 254磁头)。 扇区号由(2)字节低6位表示,其范围为(0 -- 26 - 1),由于扇区号从1开始,所以其范围是(1扇区-- 63扇区)。 柱面号由(2)字节高2位 + (3)字节,共10位表示,其范围为(0 --2 10 - 1),也即(0 柱面-- 1023柱面)。 当柱面号超过1023时,这10位依然表示成1023,需要注意。 (5,6,7)字节含义同上。 2、(8, 9, 10, 11)字节 如果是主分区表,则这4 个字节表示该分区起始逻辑扇区号与逻辑0扇区(0柱面,0磁头,1扇区)之差。如果非主分区表, 则这4 个字节要么表示该分区起始逻辑扇区号与扩展分区起始逻辑扇区号之差,要么为63。详细情况在后面有所阐述。 注意: 1、扇区上的字节是按左边低位,右边高位的顺序排列的。所以在取值时,需要把字节再反一下,让高位字节在左边,低位字节在右边, 这一点在读取逻辑起始扇区号和分区大小时需要注意。举个例子:第一项的逻辑起始扇区为(3F 00 00 00),转换为十进制前要先反一下字 节顺序,为(00 00 00 3F)然后在转换为十进制,即63 .同理分区大小为(3F 04 7D 00),先反为(00 7D 04 3F)再转换为十进制, 即8193087。 2、逻辑扇区号与(柱面,磁头,扇区)的相互转换: 令L = 逻辑扇区号,C = 柱面号,H = 磁头号,S = 扇区号。 每道扇区数 = 63 每柱面磁头数 = 255 每柱面扇区数 = 每道扇区数* 每柱面磁头数 = 63 × 255 = 16065 柱面号下标从0开始。磁头号[0 -- 254],扇区号[1 -- 63]。 逻辑扇区号下标也从0开始。 (柱面,磁头,扇区)转换成逻辑扇区号的公式为: L = C×16065 + H ×63 + S - 1 ; 比如(1柱面,1磁头,1扇区),其逻辑扇区号为: L = 1×16065 + 1×63 + 1 - 1 = 16128 逻辑扇区号转换成(柱面,磁头,扇区) 公式为: C = L / 16065 H = (L % 16065) / 63 S = (L % 16065) % 63 + 1 比如逻辑扇区号 16127: C = 16127 / 16065 = 1 H = (16127 % 16065) / 63 = 0 S = (16127 % 16065) % 63 + 1 = 63 即(1柱面,0磁头,63扇区) 3、分区表上有四项,每一项表示一个分区,所以一个分区表最多只能表示4个分区。主分 区表上的4项用来表示主分区和扩展分区的信息。因为扩展分区最多只能有一个,所以硬盘 最多可以有四个主分区或者三个主分区,一个扩展分区。余下的分区表是表示逻辑分区的。 这里有必要阐述一点:逻辑区都是位于扩展分区里面的,并且逻辑分区的个数没有限制。 4、分区表所在扇区通常在(0磁头,1扇区),而该分区的开始扇区通常位于(1磁头,1扇区),中间隔了63 个隐藏扇区。 三.分区表链的查找
分区表链实际上相当于一个单向链表结构。第一个分区表,也即主分区表,可以有一项 描述扩展分区。而这一项就相当于指针,指向扩展分区。然后我们根据该指针来到扩展分 区起始柱面的0头1扇区,找到第二个分区表。对于该分区表,通常情况下:第一项描述了 扩展分区中第一个分区的信息,第二项描述下一个分区,而这第二项就相当于指向第二个分 区的指针,第三项,第四项一般均为0。我们可以根据该指针来到扩展分区中第二个分区起 始柱面的0头1扇区,找到第三个分区表。以此类推,只到最后一个分区表。而最后一个分 区表只有第一项有信息,余下三项均为0.相当于其指针为空.所以只要找到了一个分区表就可 以推导找出其后面所有分区表。不过该分区表前面的分区表就不好推导出来了。但令人高兴 的是这个链表的头节点,也即主分区表的位置是固定的位于(0柱面, 0磁头, 1扇区)处, 我们可以很轻易的找到它,然后把剩下的所有分区表一一找到。
以笔者的硬盘为例:一个主分区(C盘), 一个扩展分区.扩展分区中有两个逻辑分区(D盘,E盘)其分区表链示意图如下:
图一 分区表链示意图
(一).读取(0柱面,0磁头,1扇区)处C盘的主分区表: [80 01 01 00 0B FE 7F FD 3F 00 00 00 3F 04 7D 00 ] [00 00 41 FE 0F FE FF FF 7E 04 7D 00 1F 2C B4 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ]第一项: (80)(01 01 00)(0B)(FE 7F FD )(3F 00 00 00 )(3F 04 7D 00) 描述的是C盘的情况。 1.(80):表示C盘为活动分区。即系统会从C盘启动。 2.(01 01 00):表示C盘的起始扇区为(0柱面,0磁头,1扇区)。 3.(0B):表示C盘的文件系统为FAT32。 4.(FE 7F FD): (FE) 16 = (254) 10 (7F) 16 = (0111 1111) 2 (FD) 16 = (1111 1101) 2 磁头号:(254) 10; 扇区号:(11 1111) 2 = (63) 10. 柱面号:(01 1111 1101) 2 = (509) 10 故C盘结束扇区为(509柱面,254磁头,63扇区)。 5.(3F 00 00 00): 反向,(00 00 00 3F) 16 = (63) 10,为C盘起始逻辑扇区号与逻辑0扇区号之差。表示C盘前面已有63个扇区,这63个扇区为系统隐藏扇区。 6. (3F 04 7D 00): 反向,(00 7D 04 3F) 16 = (8193087) 10。表明C盘有8193087个扇区。即(0柱面,1磁头,1扇区)至(509柱面,254磁头,63扇区) 共有8193087个扇区。 第二项: (00)(00 41 FE)(0F)(FE FF FF)(7E 04 7D 00)(1F 2C B4 00) 描述的是扩展分区的情况。 1. (00): 表示该分区不是活动分区。 2. (00 41 FE): (00) 16 = (0) 10 (41) 16 = (0100 0001) 2 (FE) 16 = (1111 1110) 2 磁头号:(0) 10; 扇区号:(00 0001) 2 = (1) 10. 柱面号:(01 1111 1110) 2 = (510) 10 所以扩展分区的起始扇区为(510柱面,0磁头,1扇区)。 3. (0F): 表示该分区为扩展分区。 4. (FE FF FF): (FE) 16 = (254) 10 (FF) 16 = (1111 1111) 2 (FF) 16 = (1111 1111) 2; 磁头号:(254) 10; 扇区号:(11 1111) 2 = (63) 10. 柱面号:(11 1111 1111) 2 = (1023) 10 但这是不准确的,因为当柱面号的真实值超过1023时,表示柱面号的10位也依然是1023。 5. (7E 04 7D 00): 反向,(00 7D 04 7E) 16 = (8193150) 10. 表示扩展分区的起始扇区号为8193150,即(510 柱面,0磁头,1扇区)。这是真实准确的, 我一般都用这一项来定位分区起点。 6. (1F 2C B4 00): 反向, (00 B4 2C 1F) 16 = (11807775) 10. 表示扩展分区共有11807775个扇区。通过上面得到的起点和分区的大小, 可以推导出扩展分区的结束位置:8193150 + 11807775 = 20000925号扇区,即(1244 柱面,254磁头,63扇区)。 二.查找D盘分区表 根据上面的信息,第二个分区表,也即D盘分区表在(510柱面,0磁头,1扇区)处。读取该扇区,得到分区表如下: [00 01 41 FE 0B FE FF 7B 3F 00 00 00 BF A3 5D 00 ] [00 00 C1 7C 05 FE FF FF FE A3 5D 00 21 88 56 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] 第一项: (00)(01 41 FE)(0B)(FE FF 7B)(3F 00 00 00 )(BF A3 5D 00) 描述的是D盘的情况。 1.(00):表示D盘不是活动分区。 2.(01 41 FE): (01) 16 = (1) 10 (41) 16 = (0100 0001) 2 (FE) 16 = (1111 1110) 2. 磁头号:(1) 10; 扇区号:(00 0001) 2 = (1) 10. 柱面号:(01 1111 1110) 2 = (510) 10; 故D盘开始扇区为(510柱面,1磁头,1扇区)。 3.(0B):表示D盘的文件系统为FAT32。 4.(FE FF 7B): (FE) 16 = (254) 10 。 (FF) 16 = (1111 1111) 2 (7B) 16 = (0111 1011) 2. 磁头号:(254) 10; 扇区号:(11 1111) 2 = (63) 10. 柱面号:(11 0111 1011) 2 = (891) 10 故D盘结束扇区为(891柱面,254磁头,63扇区)。 5.(3F 00 00 00): 反向,(00 00 00 3F)16 = (63)10,为D盘起始逻辑扇区号(510柱面,1磁头,1扇区)与扩展分区起始逻辑扇区号 (510柱面,0磁头,1扇区)之差。表示D盘前面已有63个扇区,这63个扇区为系统隐藏扇区。 6. (BF A3 5D 00): 反向,(00 5D A3 BF) 16 = (6136767) 10。表明D盘有6136767个扇区。 通过上面得到的起点和分区的大小,可以推导出D盘的结束位置:8193150 + 63 + 6136767 = 14329980号扇区。 即(891柱面,254磁头,63扇区)。与上面的正好吻合。 第二项: (00)(00 C1 7C)(05)(FE FF FF)(FE A3 5D 00)(21 88 56 00) 描述的是E盘的情况。 1. (00): 表示E盘不是活动分区。 2. (00 C1 7C): (00) 16 = (0) 10 (C1) 16 = (1100 0001) 2 (7C) 16 = (0111 1100) 2 磁头号:(0) 10 扇区号:(00 0001) 2 = (1) 10 柱面号:(11 0111 1100) 2 = (892) 10 所以E盘的起始扇区为(892柱面,0磁头,1扇区)。 3. (05): 表示E盘的在扩展分区里面。 4.(FE FF FF): (FE) 16 = (254) 10 (FF) 16 = (1111 1111) 2 (FF) 16 = (1111 1111) 2 磁头号:(254) 10 扇区号:(11 1111) 2 = (63) 10 柱面号:(11 1111 1111) 2 = (1023) 10 但这是不准确的,原因同上。 5.(FE A3 5D 00): 反向,(00 5D A3 FE) 16 = (6136830) 10. 这一项非常重要,它定位了E盘分区表所在扇区。其值为E盘分区表所在扇区号 与扩展分区起始扇区号之差。所以,E盘分区表所在扇区号为: 8193150 + 6136830 = 14329980。即(892柱面,0磁头,1扇区)。 6.(21 88 56 00): 反向,(00 56 88 21) 16 = (5670945) 10.表示E盘共有11807775个扇区。通过上面得到的起点和分区的大小,可以推导出E 盘的结束位置:14329980 + 5670945 = 20000925号扇区,即(1244 柱面,254磁头,63扇区)。 三.查找E盘分区表 根据上面的信息,第三个分区表,也即E盘分区表在(892柱面,0磁头,1扇区)处。读取该扇区,得到分区表如下: [00 01 C1 7C 0B FE FF FF 3F 00 00 00 E2 87 56 00] [ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] 该分区表第二项全为0,说明没有下一个分区表了。该分区表就是分区表链的最后一个节点。 第一项: (00)(01 C1 7C)(0B)(FE FF FF)(3F 00 00 00 )(E2 87 56 00) 该项与D盘分区表的第二项描述的都是E盘的情况,但它们在某些细节上又有所区别。 1.(00):表示E盘不是活动分区。 2.(01 C1 7C): (01) 16 = (1) 10 (C1) 16 = (1100 0001) 2 (7C) 16 = (0111 1100) 2. 磁头号:(1) 10 扇区号:(00 0001) 2 = (1) 10 柱面号:(11 0111 1100) 2 = (892) 10 故E盘起始扇区为(892柱面,1磁头,1扇区)。 3.(0B):表示E盘的文件系统为FAT32。 4.(FE FF FF): (FE) 16 = (254) 10 。 (FF) 16 = (1111 1111) 2 (FF) 16 = (1111 1111) 2. 磁头号:(254) 10; 扇区号:(11 1111) 2 = (63) 10. 柱面号:(11 1111 1111) 2 = (1023) 10 但这是不准确的,原因同上。 5.(3F 00 00 00): 反向,(00 00 00 3F) 16 = (63) 10.这一项与D盘分区表相应项有所不同.为E盘起始逻辑 扇区号(892柱面,1磁头,1扇区)与(892柱面,0磁头,1扇区)之差。表示E盘前面已有63个扇区, 这63个扇区为系统隐藏扇区。 操作系统无法对这些扇区进行读写,所以可以把自己的秘密信息写在这里. 6. (E2 87 56 00): 反向,(00 56 87 E2) 16 = (5670882) 10。表明E盘有5670882个扇区。而D盘分区表相应项为5670945. 5670945 - 5670882 = 63. 正好等于63个隐藏扇区.这是因为D盘分区表描述的是(892柱面,0磁头,1扇区) 到 (1244 柱面,254磁头,63扇区) 之间的扇区数。 而E盘分区表描述的是(892柱面, 1磁头,1扇区) 到 (1244 柱面,254磁头,63扇区) 之间的扇区数。(转载的希望对你有用)
一.分区表的位置及识别标志
分区表一般位于硬盘某柱面的0磁头 1扇区.而第1个分区表(也即主分区表)总是位于
(0柱面,1磁头,1扇区),剩余的分区表位置可以由主分区表依次推导出来.分区表有64个字节,占据其所在扇区的[441-509]字节.要判定是不是分区表,就看其后紧邻的两个字节(也即[510-511])是不是 '55AA',若是,则为分区表.
二.分区表的结构
分区表由4项组成,每项16个字节.共4×16 = 64个字节.每项描述一个分区的基本信息.每个字节的含义如下:
分区表项含义 字节含义0Activeflag.活动标志.若为0x80H,则表示该分区为活动分区.若为0x00H,则表示该分区为非活动分区.1,2,3该分区的起始磁头号,扇区号,柱面号磁头号 -- 1字节, 扇区号 -- 2字节低6位,柱面号 -- 2字节高2位 + 3字节4分区文件系统标志:
分区未用: 0x00H.
扩展分区: 0x05H, 0x0FH.
FAT16分区: 0x06H.
FAT32分区: 0x0BH, 0x1BH, 0x0CH, 0x1CH.
NTFS分区: 0x07H.5,6,7该分区的结束磁头号,扇区号,柱面号,含义同上.8,9,10,11逻辑起始扇区号。表示分区起点之前已用了的扇区数.12,13,14,15该分区所占用的扇区数.
分区表项有几个字节比较重要,下面分别阐述之: 1、(1,2,3)字节 磁头号由(1)字节8位表示,其范围为(0 -- 28 - 1),也即(0 磁头-- 254磁头)。 扇区号由(2)字节低6位表示,其范围为(0 -- 26 - 1),由于扇区号从1开始,所以其范围是(1扇区-- 63扇区)。 柱面号由(2)字节高2位 + (3)字节,共10位表示,其范围为(0 --2 10 - 1),也即(0 柱面-- 1023柱面)。 当柱面号超过1023时,这10位依然表示成1023,需要注意。 (5,6,7)字节含义同上。 2、(8, 9, 10, 11)字节 如果是主分区表,则这4 个字节表示该分区起始逻辑扇区号与逻辑0扇区(0柱面,0磁头,1扇区)之差。如果非主分区表, 则这4 个字节要么表示该分区起始逻辑扇区号与扩展分区起始逻辑扇区号之差,要么为63。详细情况在后面有所阐述。 注意: 1、扇区上的字节是按左边低位,右边高位的顺序排列的。所以在取值时,需要把字节再反一下,让高位字节在左边,低位字节在右边, 这一点在读取逻辑起始扇区号和分区大小时需要注意。举个例子:第一项的逻辑起始扇区为(3F 00 00 00),转换为十进制前要先反一下字 节顺序,为(00 00 00 3F)然后在转换为十进制,即63 .同理分区大小为(3F 04 7D 00),先反为(00 7D 04 3F)再转换为十进制, 即8193087。 2、逻辑扇区号与(柱面,磁头,扇区)的相互转换: 令L = 逻辑扇区号,C = 柱面号,H = 磁头号,S = 扇区号。 每道扇区数 = 63 每柱面磁头数 = 255 每柱面扇区数 = 每道扇区数* 每柱面磁头数 = 63 × 255 = 16065 柱面号下标从0开始。磁头号[0 -- 254],扇区号[1 -- 63]。 逻辑扇区号下标也从0开始。 (柱面,磁头,扇区)转换成逻辑扇区号的公式为: L = C×16065 + H ×63 + S - 1 ; 比如(1柱面,1磁头,1扇区),其逻辑扇区号为: L = 1×16065 + 1×63 + 1 - 1 = 16128 逻辑扇区号转换成(柱面,磁头,扇区) 公式为: C = L / 16065 H = (L % 16065) / 63 S = (L % 16065) % 63 + 1 比如逻辑扇区号 16127: C = 16127 / 16065 = 1 H = (16127 % 16065) / 63 = 0 S = (16127 % 16065) % 63 + 1 = 63 即(1柱面,0磁头,63扇区) 3、分区表上有四项,每一项表示一个分区,所以一个分区表最多只能表示4个分区。主分 区表上的4项用来表示主分区和扩展分区的信息。因为扩展分区最多只能有一个,所以硬盘 最多可以有四个主分区或者三个主分区,一个扩展分区。余下的分区表是表示逻辑分区的。 这里有必要阐述一点:逻辑区都是位于扩展分区里面的,并且逻辑分区的个数没有限制。 4、分区表所在扇区通常在(0磁头,1扇区),而该分区的开始扇区通常位于(1磁头,1扇区),中间隔了63 个隐藏扇区。 三.分区表链的查找
分区表链实际上相当于一个单向链表结构。第一个分区表,也即主分区表,可以有一项 描述扩展分区。而这一项就相当于指针,指向扩展分区。然后我们根据该指针来到扩展分 区起始柱面的0头1扇区,找到第二个分区表。对于该分区表,通常情况下:第一项描述了 扩展分区中第一个分区的信息,第二项描述下一个分区,而这第二项就相当于指向第二个分 区的指针,第三项,第四项一般均为0。我们可以根据该指针来到扩展分区中第二个分区起 始柱面的0头1扇区,找到第三个分区表。以此类推,只到最后一个分区表。而最后一个分 区表只有第一项有信息,余下三项均为0.相当于其指针为空.所以只要找到了一个分区表就可 以推导找出其后面所有分区表。不过该分区表前面的分区表就不好推导出来了。但令人高兴 的是这个链表的头节点,也即主分区表的位置是固定的位于(0柱面, 0磁头, 1扇区)处, 我们可以很轻易的找到它,然后把剩下的所有分区表一一找到。
以笔者的硬盘为例:一个主分区(C盘), 一个扩展分区.扩展分区中有两个逻辑分区(D盘,E盘)其分区表链示意图如下:
图一 分区表链示意图
(一).读取(0柱面,0磁头,1扇区)处C盘的主分区表: [80 01 01 00 0B FE 7F FD 3F 00 00 00 3F 04 7D 00 ] [00 00 41 FE 0F FE FF FF 7E 04 7D 00 1F 2C B4 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ]第一项: (80)(01 01 00)(0B)(FE 7F FD )(3F 00 00 00 )(3F 04 7D 00) 描述的是C盘的情况。 1.(80):表示C盘为活动分区。即系统会从C盘启动。 2.(01 01 00):表示C盘的起始扇区为(0柱面,0磁头,1扇区)。 3.(0B):表示C盘的文件系统为FAT32。 4.(FE 7F FD): (FE) 16 = (254) 10 (7F) 16 = (0111 1111) 2 (FD) 16 = (1111 1101) 2 磁头号:(254) 10; 扇区号:(11 1111) 2 = (63) 10. 柱面号:(01 1111 1101) 2 = (509) 10 故C盘结束扇区为(509柱面,254磁头,63扇区)。 5.(3F 00 00 00): 反向,(00 00 00 3F) 16 = (63) 10,为C盘起始逻辑扇区号与逻辑0扇区号之差。表示C盘前面已有63个扇区,这63个扇区为系统隐藏扇区。 6. (3F 04 7D 00): 反向,(00 7D 04 3F) 16 = (8193087) 10。表明C盘有8193087个扇区。即(0柱面,1磁头,1扇区)至(509柱面,254磁头,63扇区) 共有8193087个扇区。 第二项: (00)(00 41 FE)(0F)(FE FF FF)(7E 04 7D 00)(1F 2C B4 00) 描述的是扩展分区的情况。 1. (00): 表示该分区不是活动分区。 2. (00 41 FE): (00) 16 = (0) 10 (41) 16 = (0100 0001) 2 (FE) 16 = (1111 1110) 2 磁头号:(0) 10; 扇区号:(00 0001) 2 = (1) 10. 柱面号:(01 1111 1110) 2 = (510) 10 所以扩展分区的起始扇区为(510柱面,0磁头,1扇区)。 3. (0F): 表示该分区为扩展分区。 4. (FE FF FF): (FE) 16 = (254) 10 (FF) 16 = (1111 1111) 2 (FF) 16 = (1111 1111) 2; 磁头号:(254) 10; 扇区号:(11 1111) 2 = (63) 10. 柱面号:(11 1111 1111) 2 = (1023) 10 但这是不准确的,因为当柱面号的真实值超过1023时,表示柱面号的10位也依然是1023。 5. (7E 04 7D 00): 反向,(00 7D 04 7E) 16 = (8193150) 10. 表示扩展分区的起始扇区号为8193150,即(510 柱面,0磁头,1扇区)。这是真实准确的, 我一般都用这一项来定位分区起点。 6. (1F 2C B4 00): 反向, (00 B4 2C 1F) 16 = (11807775) 10. 表示扩展分区共有11807775个扇区。通过上面得到的起点和分区的大小, 可以推导出扩展分区的结束位置:8193150 + 11807775 = 20000925号扇区,即(1244 柱面,254磁头,63扇区)。 二.查找D盘分区表 根据上面的信息,第二个分区表,也即D盘分区表在(510柱面,0磁头,1扇区)处。读取该扇区,得到分区表如下: [00 01 41 FE 0B FE FF 7B 3F 00 00 00 BF A3 5D 00 ] [00 00 C1 7C 05 FE FF FF FE A3 5D 00 21 88 56 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] 第一项: (00)(01 41 FE)(0B)(FE FF 7B)(3F 00 00 00 )(BF A3 5D 00) 描述的是D盘的情况。 1.(00):表示D盘不是活动分区。 2.(01 41 FE): (01) 16 = (1) 10 (41) 16 = (0100 0001) 2 (FE) 16 = (1111 1110) 2. 磁头号:(1) 10; 扇区号:(00 0001) 2 = (1) 10. 柱面号:(01 1111 1110) 2 = (510) 10; 故D盘开始扇区为(510柱面,1磁头,1扇区)。 3.(0B):表示D盘的文件系统为FAT32。 4.(FE FF 7B): (FE) 16 = (254) 10 。 (FF) 16 = (1111 1111) 2 (7B) 16 = (0111 1011) 2. 磁头号:(254) 10; 扇区号:(11 1111) 2 = (63) 10. 柱面号:(11 0111 1011) 2 = (891) 10 故D盘结束扇区为(891柱面,254磁头,63扇区)。 5.(3F 00 00 00): 反向,(00 00 00 3F)16 = (63)10,为D盘起始逻辑扇区号(510柱面,1磁头,1扇区)与扩展分区起始逻辑扇区号 (510柱面,0磁头,1扇区)之差。表示D盘前面已有63个扇区,这63个扇区为系统隐藏扇区。 6. (BF A3 5D 00): 反向,(00 5D A3 BF) 16 = (6136767) 10。表明D盘有6136767个扇区。 通过上面得到的起点和分区的大小,可以推导出D盘的结束位置:8193150 + 63 + 6136767 = 14329980号扇区。 即(891柱面,254磁头,63扇区)。与上面的正好吻合。 第二项: (00)(00 C1 7C)(05)(FE FF FF)(FE A3 5D 00)(21 88 56 00) 描述的是E盘的情况。 1. (00): 表示E盘不是活动分区。 2. (00 C1 7C): (00) 16 = (0) 10 (C1) 16 = (1100 0001) 2 (7C) 16 = (0111 1100) 2 磁头号:(0) 10 扇区号:(00 0001) 2 = (1) 10 柱面号:(11 0111 1100) 2 = (892) 10 所以E盘的起始扇区为(892柱面,0磁头,1扇区)。 3. (05): 表示E盘的在扩展分区里面。 4.(FE FF FF): (FE) 16 = (254) 10 (FF) 16 = (1111 1111) 2 (FF) 16 = (1111 1111) 2 磁头号:(254) 10 扇区号:(11 1111) 2 = (63) 10 柱面号:(11 1111 1111) 2 = (1023) 10 但这是不准确的,原因同上。 5.(FE A3 5D 00): 反向,(00 5D A3 FE) 16 = (6136830) 10. 这一项非常重要,它定位了E盘分区表所在扇区。其值为E盘分区表所在扇区号 与扩展分区起始扇区号之差。所以,E盘分区表所在扇区号为: 8193150 + 6136830 = 14329980。即(892柱面,0磁头,1扇区)。 6.(21 88 56 00): 反向,(00 56 88 21) 16 = (5670945) 10.表示E盘共有11807775个扇区。通过上面得到的起点和分区的大小,可以推导出E 盘的结束位置:14329980 + 5670945 = 20000925号扇区,即(1244 柱面,254磁头,63扇区)。 三.查找E盘分区表 根据上面的信息,第三个分区表,也即E盘分区表在(892柱面,0磁头,1扇区)处。读取该扇区,得到分区表如下: [00 01 C1 7C 0B FE FF FF 3F 00 00 00 E2 87 56 00] [ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] 该分区表第二项全为0,说明没有下一个分区表了。该分区表就是分区表链的最后一个节点。 第一项: (00)(01 C1 7C)(0B)(FE FF FF)(3F 00 00 00 )(E2 87 56 00) 该项与D盘分区表的第二项描述的都是E盘的情况,但它们在某些细节上又有所区别。 1.(00):表示E盘不是活动分区。 2.(01 C1 7C): (01) 16 = (1) 10 (C1) 16 = (1100 0001) 2 (7C) 16 = (0111 1100) 2. 磁头号:(1) 10 扇区号:(00 0001) 2 = (1) 10 柱面号:(11 0111 1100) 2 = (892) 10 故E盘起始扇区为(892柱面,1磁头,1扇区)。 3.(0B):表示E盘的文件系统为FAT32。 4.(FE FF FF): (FE) 16 = (254) 10 。 (FF) 16 = (1111 1111) 2 (FF) 16 = (1111 1111) 2. 磁头号:(254) 10; 扇区号:(11 1111) 2 = (63) 10. 柱面号:(11 1111 1111) 2 = (1023) 10 但这是不准确的,原因同上。 5.(3F 00 00 00): 反向,(00 00 00 3F) 16 = (63) 10.这一项与D盘分区表相应项有所不同.为E盘起始逻辑 扇区号(892柱面,1磁头,1扇区)与(892柱面,0磁头,1扇区)之差。表示E盘前面已有63个扇区, 这63个扇区为系统隐藏扇区。 操作系统无法对这些扇区进行读写,所以可以把自己的秘密信息写在这里. 6. (E2 87 56 00): 反向,(00 56 87 E2) 16 = (5670882) 10。表明E盘有5670882个扇区。而D盘分区表相应项为5670945. 5670945 - 5670882 = 63. 正好等于63个隐藏扇区.这是因为D盘分区表描述的是(892柱面,0磁头,1扇区) 到 (1244 柱面,254磁头,63扇区) 之间的扇区数。 而E盘分区表描述的是(892柱面, 1磁头,1扇区) 到 (1244 柱面,254磁头,63扇区) 之间的扇区数。(转载的希望对你有用)
2013-09-24
展开全部
定义分区表是将大表的数据分成称为分区的许多小的子集。分区方法9i提供四种分区方法:范围分区,列表分区,哈希分区和混合分区;
· 范围分区是根椐分区键的不同取值范围来划分子集的,关键字RANGE, VALUES LESS THAN;
· 列表分区是根椐分区键的一些离散的取值来划分子集的,关键字LIST, VALUES;
· 哈希分区是应用哈希算法将分区键对应到某个子集中去,关键字HASH, PARTITIONS;
· 混合分区只能有两层,第一层是范围分区,第二层可以是列表分区或者哈希分区;
· 范围分区和列表分区中,如果插入记录的分区键没有对应的容纳分区,会产生ORA-14400;
· update操作如果会使记录从一个分区迁移到另一个分区,且分区表的ROW MOVEMENT属性是DISABLE,会产ORA-14402;
· 分区表上的索引有两大类:普通的二叉树索引,分区索引,下面讲到的都是分区索引:
· 按索引分区和表分区间的对应关系可以分为局部索引和全局索引;
Ø 局部索引的索引分区和表分区间是一一对应的,全局索引则相反;
Ø 局部索引的分区方法可以用上面提到四种的任何一种,全局索引的分区方法只有范围分区(而且最高的分区必须用MAXVALUE来定义);
Ø ORACLE自动维护局部索引的分区,当表分区被合并,分裂或删除时,关联的索引分区也会被合并,分裂或删除;对分区表执行管理操作时会使其上的全局索引失效;
Ø 建在分区表的位图索引必须是局部分区索引;
Ø ORACLE推荐尽可能地使用局部索引;
· 按索引栏位和分区键间的关系分为前缀索引和非前缀索引;
Ø 前缀索引最前面的栏位是分区键栏位,非前缀索引相反;
· 在这两种分类方法的四种组合中,只有三种有效(局部前缀索引,局部非前缀索引,全局前缀索引),不存在全局非前缀索引;
· 分区表给CBO带来很多选项,如分区排除,并行分区连接等。
一个硬盘经过FDISK的划分和高级格式化以后,会在所属的操作系统中建立分区表,记录一些有关硬盘给哪一种操作系统使用,硬盘的容量大小以及开始磁柱面和结束磁柱面的分配,哪一个硬盘启动,引导区(Boot Sector),文件分配表(FAT)、根目录和数据区等一系列数据。现将分区表内的内容归纳如下:
A、分区表是创建在硬盘的第0磁柱面、第0磁道,第1个扇区上。
B、记录操作系统的数据(DOS,OS2或其他OS)。
C、记录分区硬盘的C(磁柱面)、H(磁头),S(扇区)的数量。
D、记录分配的磁柱面(Cylinder)的开始。结束和容量。
E、记录可启动的硬盘(Active)。
F、建立引导区(Boot Sector)。
G、建立文件分配表(FAT)。
H、建立根目录。
I、建立数据存储区。分区表的分区类型 分区的类型:范围、散列、列表、组合
A、如果需要将行映射到基于列值范围的分区时,就使用范围分区方法--条件是数据可以被划分成逻辑范围;当数据在整个范围内能被均等地划分时性能最好,明显不能均分时须使用其他分区方式。Partition By RANGE(columns) (partition partition name Values Less Then (value) Tablespace tbsname,......);
B、如果数据不那么容易进行范围分区,但为了性能和管理的原因又想分区时,就使用散列分区方法--散列分区方法提供了在指定数量的分区中均等地划分数据的方法。基于分区键的散列值将行映射到分区中。Partition By HASH(columns) Partitions sums Store In (tbsname list);
C、当需要明确地控制如何将行映射到分区时,就使用列表分区方法--每个分区的描述中为该分区列制定一列离散值。是特意为例三支的模块化数据划分而设计的,可以将无序的和不相关的数据集进行分组和组织到一起。不支持多列分区;Partition By LIST (column) (Partition partition name> Values (value list),......);
D、组合分区方法是在分区中使用范围分区方法分区数据,而在子分区中使用散列分区方法--适合于历史数据和条块数据两者,改善了范围分区及其数据防止的管理型,并提供了散列分区的秉性机制的优点;PARTITION BY RANGE(columns 1)SUBPARITION By HASH(columns 2) SUBPARTITIONS sums STORE IN (tbsname list) (PARTITION partition name VALUES LESS THAN (value) TABLESPACE tbsname,......);实际数据存储在自分区,分区只是个逻辑属性
文件分配表FAT(File Allocation Table)用来记录文件所在位置的表格.它对于硬盘的使用是非常重要的,假若丢失文件分配表,那么硬盘上的数据就会因无法定位而不能使用了。不同的操作系统所使用的文件系统不尽相同,在个人计算机上常用的操作系统中,DOS 6.x及以下版本和Windows 3.x使用FAT16;OS/2使用HPFS;Windows NT则使用NTFS;而MS-DOS7.10/8.0(Windows 95 OSR2及Windows 98自带的DOS)及ROM-DOS 7.x同时提供了FAT16及FAT32供用户选用。其中我们接触最多的是FAT16、FAT32文件系统。
Windows95 OSR2和Windows 98开始支持FAT32 文件系统,它是对早期DOS的FAT16文件系统的增强,由于文件系统的核心--文件分配表FAT由16位扩充为32位,所以称为FAT32文件系统。在一逻辑盘(硬盘的一分区)超过 512 兆字节时使用这种格式,会更高效地存储数据,减少硬盘空间的浪费,一般还会使程序运行加快,使用的计算机系统资源更少,因此是使用大容量硬盘存储文件的极有效的系统。
(一)FAT32 文件系统将逻辑盘的空间划分为三部分,依次是引导区(BOOT区)、文件分配表区(FAT区)、数据区(DATA区)。引导区和文件分配表区又合称为系统区。
(二)引导区从第一扇区开始,使用了三个扇区,保存了该逻辑盘每扇区字节数,每簇对应的扇区数等等重要参数和引导记录。之后还留有若干保留扇区。而FAT16文件系统的引导区只占用一个扇区,没有保留扇区。
(三)文件分配表区共保存了两个相同的文件分配表,因为文件所占用的存储空间(簇链)及空闲空间的管理都是通过FAT实现的,FAT如此重要,保存两个以便第一个损坏时,还有第二个可用。文件系统对数据区的存储空间是按簇进行划分和管理的,簇是空间分配和回收的基本单位,即,一个文件总是占用若干个整簇,文件所使用的最后一簇剩余的空间就不再使用,而是浪费掉了。
从统计学上讲,平均每个文件浪费0.5簇的空间,簇越大,存储文件时空间浪费越多,利用率越低。因此,簇的大小决定了该盘数据区的利用率。FAT16系统簇号用16位二进制数表示,从0002H到FFEFH个可用簇号(FFF0H到FFFFH另有定义,用来表示坏簇,文件结束簇等),允许每一逻辑盘的数据区最多不超过FFEDH(65518)个簇。FAT32系统簇号改用32位二进制数表示,大致从00000002H到FFFFFEFFH个可用簇号。FAT表按顺序依次记录了该盘各簇的使用情况,是一种位示图法。
每簇的使用情况用32位二进制填写,未被分配的簇相应位置写零;坏簇相应位置填入特定值;已分配的簇相应位置填入非零值,具体为:如果该簇是文件的最后一簇,填入的值为FFFFFF0FH,如果该簇不是文件的最后一簇,填入的值为该文件占用的下一个簇的簇号,这样,正好将文件占用的各簇构成一个簇链,保存在FAT表中。0000000H、00000001H两簇号不使用,其对应的两个DWORD位置(FAT表开头的8个字节)用来存放该盘介质类型编号。FAT表的大小就由该逻辑盘数据区共有多少簇所决定,取整数个扇区。
(四)FAT32系统一簇对应8个逻辑相邻的扇区,理论上,这种用法所能管理的逻辑盘容量上限为16TB(16384GB),容量大于16TB时,可以用一簇对应16个扇区,依此类推。FAT16系统在逻辑盘容量介于128MB到256MB时,一簇对应8个扇区,容量介于256MB到512MB时,一簇对应16个扇区,容量介于512MB到1GB时,一簇对应32个扇区,容量介于1GB到2GB时,一簇对应32个扇区,超出2GB的部分无法使用。显然,对于容量大于512MB的逻辑盘,采用FAT32的簇比采用FAT16的簇小很多,大大减少了空间的浪费。
但是,对于容量小于512MB的盘,采用FAT32虽然一簇8个扇区,比使用FAT16一簇16个扇区,簇有所减小,但FAT32的FAT表较大,占用空间较多,总数据区被减少,两者相抵,实际并不能增加有效存储空间,所以微软建议对小于512M的逻辑盘不使用FAT32。
另外,对于使用FAT16文件系统的用户提一建议,硬盘分区时,不要将分区(逻辑盘)容量正好设为某一区间的下限,例:将一逻辑盘容量设为1100M(稍大于1024M),则使用时其有效存储容量比分区为950M的一般还少,因其簇大一倍,浪费的空间较多。还有,使用FDISK等对分区指定容量时,由于对1MB的定义不一样(标准的二进制的1MB为1048576B,有的系统将1MB理解为1000000B,1000KB等),及每个分区需从新磁道开始等因素,实际分配的容量可能稍大于指定的容量,亦需注意掌握。
(五)根目录区(ROOT区)不再是固定区域、固定大小,可看作是数据区的一部分。因为根目录已改为根目录文件,采用与子目录文件相同的管理方式,一般情况下从第二簇开始使用,大小视需要增加,因此根目录下的文件数目不再受最多512的限制。FAT16文件系统的根目录区(ROOT区)是固定区域、固定大小的,是从FAT区之后紧接着的32个扇区,最多保存512个目录项,作为系统区的一部分。
(六)目录区中的目录项变化较多,一个目录项仍占32字节,可以是文件目录项、子目录项、卷标项(仅跟目录有)、已删除目录项、长文件名目录项等。目录项中原来在DOS下保留未用的10个字节都有了新的定义,全部32字节的定义如下:
(1) 0-- 7字节 文件正名。
(2) 8--10字节 文件扩展名。
(3) 11字节 文件属性,按二进制位定义,最高两位保留未用,0至5位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位。
(4) 11--13字节 仅长文件名目录项用,用来存储其对应的短文件名目录项的文件名字节校验和等。
(5) 13--15字节 24位二进制的文件建立时间,其中的高5位为小时,次6位为分钟。
(6) 16--17字节 16位二进制的文件建立日期,其中的高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期。
(7) 18--19字节 16位二进制的文件最新访问日期,定义同(6)。
(8) 20--21字节 起始簇号的高16位。
(9) 22--23字节 16位二进制的文件最新修改时间,其中的高5位为小时,次6位为分钟,后5位的二倍为秒数。
(10)24--25字节 16位二进制的文件最新修改日期,定义同(6)。
(11)26--27字节 起始簇号的低16位。
(12)28--31字节 32位的文件字节长度。
其中第(4)至(8)项为以后陆续定义的。 对于子目录项,其(12)为零;已删除目录项的首字节值为E5H。在可以使用长文件名的FAT32系统中,文件目录项保存该文件的短文件名,长文件名用若干个长文件名目录项保存,长文件名目录项倒序排在文件短目录项前面,全部是采用双字节内码保存的,每一项最多保存十三个字符内码,首字节指明是长文件名的第几项,11字节一般为0FH,12字节指明类型,13字节为校验和,26--27字节为零。
(七)以前版本的 Windows 和DOS与 FAT32 不兼容,不能识别FAT32分区,有些程序也依赖于 FAT16 文件系统,不能和 FAT32 驱动器一道工作。将硬盘转换为 FAT32,就不能再用双引导运行以前版本的 Windows(Windows 95 [Version 4.00.950]、Windows NT 3.x、Windows NT 4.0 和 Windows 3.x)。常见的两大类 (1)FAT32
一种从文件分配表(FAT)文件系统派生而来的文件系统。与FAT相比,FAT32能够支持更小的簇以及更大的容量,从而能够在FAT32卷上更为高效的分配磁盘空间。
(2)一种能够提供各种FAT版本所不具备的性能、安全性、可靠性与先进特性的高级文件系统。NTFS能够使用日志文件与检查点信息来恢复文件系统的一致性。在Windows 2000和Windows XP中,NTFS还能提供诸如文件与文件夹权限、加密、磁盘配额以及压缩之类的高级特性。
区别如下:
(1)Win 2000可以同时支持FAT32和NTFS两种文件系统,FAT32长于与Win 9X的兼容性,NTFS长于系统安全性。
(2) FAT32文件系统可以重新定位根目录和使用FAT的备份副本。另外FAT32分区的启动记录被包含在一个含有关键数据的结构中,减少了计算机系统崩溃的可能性。 NTFS分区上的压缩文件进行读写时不需要事先由其他程序进行解压缩,当对文件进行读取时,文件将自动进行解压缩;文件关闭或保存时会自动对文件进行压缩。
· 范围分区是根椐分区键的不同取值范围来划分子集的,关键字RANGE, VALUES LESS THAN;
· 列表分区是根椐分区键的一些离散的取值来划分子集的,关键字LIST, VALUES;
· 哈希分区是应用哈希算法将分区键对应到某个子集中去,关键字HASH, PARTITIONS;
· 混合分区只能有两层,第一层是范围分区,第二层可以是列表分区或者哈希分区;
· 范围分区和列表分区中,如果插入记录的分区键没有对应的容纳分区,会产生ORA-14400;
· update操作如果会使记录从一个分区迁移到另一个分区,且分区表的ROW MOVEMENT属性是DISABLE,会产ORA-14402;
· 分区表上的索引有两大类:普通的二叉树索引,分区索引,下面讲到的都是分区索引:
· 按索引分区和表分区间的对应关系可以分为局部索引和全局索引;
Ø 局部索引的索引分区和表分区间是一一对应的,全局索引则相反;
Ø 局部索引的分区方法可以用上面提到四种的任何一种,全局索引的分区方法只有范围分区(而且最高的分区必须用MAXVALUE来定义);
Ø ORACLE自动维护局部索引的分区,当表分区被合并,分裂或删除时,关联的索引分区也会被合并,分裂或删除;对分区表执行管理操作时会使其上的全局索引失效;
Ø 建在分区表的位图索引必须是局部分区索引;
Ø ORACLE推荐尽可能地使用局部索引;
· 按索引栏位和分区键间的关系分为前缀索引和非前缀索引;
Ø 前缀索引最前面的栏位是分区键栏位,非前缀索引相反;
· 在这两种分类方法的四种组合中,只有三种有效(局部前缀索引,局部非前缀索引,全局前缀索引),不存在全局非前缀索引;
· 分区表给CBO带来很多选项,如分区排除,并行分区连接等。
一个硬盘经过FDISK的划分和高级格式化以后,会在所属的操作系统中建立分区表,记录一些有关硬盘给哪一种操作系统使用,硬盘的容量大小以及开始磁柱面和结束磁柱面的分配,哪一个硬盘启动,引导区(Boot Sector),文件分配表(FAT)、根目录和数据区等一系列数据。现将分区表内的内容归纳如下:
A、分区表是创建在硬盘的第0磁柱面、第0磁道,第1个扇区上。
B、记录操作系统的数据(DOS,OS2或其他OS)。
C、记录分区硬盘的C(磁柱面)、H(磁头),S(扇区)的数量。
D、记录分配的磁柱面(Cylinder)的开始。结束和容量。
E、记录可启动的硬盘(Active)。
F、建立引导区(Boot Sector)。
G、建立文件分配表(FAT)。
H、建立根目录。
I、建立数据存储区。分区表的分区类型 分区的类型:范围、散列、列表、组合
A、如果需要将行映射到基于列值范围的分区时,就使用范围分区方法--条件是数据可以被划分成逻辑范围;当数据在整个范围内能被均等地划分时性能最好,明显不能均分时须使用其他分区方式。Partition By RANGE(columns) (partition partition name Values Less Then (value) Tablespace tbsname,......);
B、如果数据不那么容易进行范围分区,但为了性能和管理的原因又想分区时,就使用散列分区方法--散列分区方法提供了在指定数量的分区中均等地划分数据的方法。基于分区键的散列值将行映射到分区中。Partition By HASH(columns) Partitions sums Store In (tbsname list);
C、当需要明确地控制如何将行映射到分区时,就使用列表分区方法--每个分区的描述中为该分区列制定一列离散值。是特意为例三支的模块化数据划分而设计的,可以将无序的和不相关的数据集进行分组和组织到一起。不支持多列分区;Partition By LIST (column) (Partition partition name> Values (value list),......);
D、组合分区方法是在分区中使用范围分区方法分区数据,而在子分区中使用散列分区方法--适合于历史数据和条块数据两者,改善了范围分区及其数据防止的管理型,并提供了散列分区的秉性机制的优点;PARTITION BY RANGE(columns 1)SUBPARITION By HASH(columns 2) SUBPARTITIONS sums STORE IN (tbsname list) (PARTITION partition name VALUES LESS THAN (value) TABLESPACE tbsname,......);实际数据存储在自分区,分区只是个逻辑属性
文件分配表FAT(File Allocation Table)用来记录文件所在位置的表格.它对于硬盘的使用是非常重要的,假若丢失文件分配表,那么硬盘上的数据就会因无法定位而不能使用了。不同的操作系统所使用的文件系统不尽相同,在个人计算机上常用的操作系统中,DOS 6.x及以下版本和Windows 3.x使用FAT16;OS/2使用HPFS;Windows NT则使用NTFS;而MS-DOS7.10/8.0(Windows 95 OSR2及Windows 98自带的DOS)及ROM-DOS 7.x同时提供了FAT16及FAT32供用户选用。其中我们接触最多的是FAT16、FAT32文件系统。
Windows95 OSR2和Windows 98开始支持FAT32 文件系统,它是对早期DOS的FAT16文件系统的增强,由于文件系统的核心--文件分配表FAT由16位扩充为32位,所以称为FAT32文件系统。在一逻辑盘(硬盘的一分区)超过 512 兆字节时使用这种格式,会更高效地存储数据,减少硬盘空间的浪费,一般还会使程序运行加快,使用的计算机系统资源更少,因此是使用大容量硬盘存储文件的极有效的系统。
(一)FAT32 文件系统将逻辑盘的空间划分为三部分,依次是引导区(BOOT区)、文件分配表区(FAT区)、数据区(DATA区)。引导区和文件分配表区又合称为系统区。
(二)引导区从第一扇区开始,使用了三个扇区,保存了该逻辑盘每扇区字节数,每簇对应的扇区数等等重要参数和引导记录。之后还留有若干保留扇区。而FAT16文件系统的引导区只占用一个扇区,没有保留扇区。
(三)文件分配表区共保存了两个相同的文件分配表,因为文件所占用的存储空间(簇链)及空闲空间的管理都是通过FAT实现的,FAT如此重要,保存两个以便第一个损坏时,还有第二个可用。文件系统对数据区的存储空间是按簇进行划分和管理的,簇是空间分配和回收的基本单位,即,一个文件总是占用若干个整簇,文件所使用的最后一簇剩余的空间就不再使用,而是浪费掉了。
从统计学上讲,平均每个文件浪费0.5簇的空间,簇越大,存储文件时空间浪费越多,利用率越低。因此,簇的大小决定了该盘数据区的利用率。FAT16系统簇号用16位二进制数表示,从0002H到FFEFH个可用簇号(FFF0H到FFFFH另有定义,用来表示坏簇,文件结束簇等),允许每一逻辑盘的数据区最多不超过FFEDH(65518)个簇。FAT32系统簇号改用32位二进制数表示,大致从00000002H到FFFFFEFFH个可用簇号。FAT表按顺序依次记录了该盘各簇的使用情况,是一种位示图法。
每簇的使用情况用32位二进制填写,未被分配的簇相应位置写零;坏簇相应位置填入特定值;已分配的簇相应位置填入非零值,具体为:如果该簇是文件的最后一簇,填入的值为FFFFFF0FH,如果该簇不是文件的最后一簇,填入的值为该文件占用的下一个簇的簇号,这样,正好将文件占用的各簇构成一个簇链,保存在FAT表中。0000000H、00000001H两簇号不使用,其对应的两个DWORD位置(FAT表开头的8个字节)用来存放该盘介质类型编号。FAT表的大小就由该逻辑盘数据区共有多少簇所决定,取整数个扇区。
(四)FAT32系统一簇对应8个逻辑相邻的扇区,理论上,这种用法所能管理的逻辑盘容量上限为16TB(16384GB),容量大于16TB时,可以用一簇对应16个扇区,依此类推。FAT16系统在逻辑盘容量介于128MB到256MB时,一簇对应8个扇区,容量介于256MB到512MB时,一簇对应16个扇区,容量介于512MB到1GB时,一簇对应32个扇区,容量介于1GB到2GB时,一簇对应32个扇区,超出2GB的部分无法使用。显然,对于容量大于512MB的逻辑盘,采用FAT32的簇比采用FAT16的簇小很多,大大减少了空间的浪费。
但是,对于容量小于512MB的盘,采用FAT32虽然一簇8个扇区,比使用FAT16一簇16个扇区,簇有所减小,但FAT32的FAT表较大,占用空间较多,总数据区被减少,两者相抵,实际并不能增加有效存储空间,所以微软建议对小于512M的逻辑盘不使用FAT32。
另外,对于使用FAT16文件系统的用户提一建议,硬盘分区时,不要将分区(逻辑盘)容量正好设为某一区间的下限,例:将一逻辑盘容量设为1100M(稍大于1024M),则使用时其有效存储容量比分区为950M的一般还少,因其簇大一倍,浪费的空间较多。还有,使用FDISK等对分区指定容量时,由于对1MB的定义不一样(标准的二进制的1MB为1048576B,有的系统将1MB理解为1000000B,1000KB等),及每个分区需从新磁道开始等因素,实际分配的容量可能稍大于指定的容量,亦需注意掌握。
(五)根目录区(ROOT区)不再是固定区域、固定大小,可看作是数据区的一部分。因为根目录已改为根目录文件,采用与子目录文件相同的管理方式,一般情况下从第二簇开始使用,大小视需要增加,因此根目录下的文件数目不再受最多512的限制。FAT16文件系统的根目录区(ROOT区)是固定区域、固定大小的,是从FAT区之后紧接着的32个扇区,最多保存512个目录项,作为系统区的一部分。
(六)目录区中的目录项变化较多,一个目录项仍占32字节,可以是文件目录项、子目录项、卷标项(仅跟目录有)、已删除目录项、长文件名目录项等。目录项中原来在DOS下保留未用的10个字节都有了新的定义,全部32字节的定义如下:
(1) 0-- 7字节 文件正名。
(2) 8--10字节 文件扩展名。
(3) 11字节 文件属性,按二进制位定义,最高两位保留未用,0至5位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位。
(4) 11--13字节 仅长文件名目录项用,用来存储其对应的短文件名目录项的文件名字节校验和等。
(5) 13--15字节 24位二进制的文件建立时间,其中的高5位为小时,次6位为分钟。
(6) 16--17字节 16位二进制的文件建立日期,其中的高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期。
(7) 18--19字节 16位二进制的文件最新访问日期,定义同(6)。
(8) 20--21字节 起始簇号的高16位。
(9) 22--23字节 16位二进制的文件最新修改时间,其中的高5位为小时,次6位为分钟,后5位的二倍为秒数。
(10)24--25字节 16位二进制的文件最新修改日期,定义同(6)。
(11)26--27字节 起始簇号的低16位。
(12)28--31字节 32位的文件字节长度。
其中第(4)至(8)项为以后陆续定义的。 对于子目录项,其(12)为零;已删除目录项的首字节值为E5H。在可以使用长文件名的FAT32系统中,文件目录项保存该文件的短文件名,长文件名用若干个长文件名目录项保存,长文件名目录项倒序排在文件短目录项前面,全部是采用双字节内码保存的,每一项最多保存十三个字符内码,首字节指明是长文件名的第几项,11字节一般为0FH,12字节指明类型,13字节为校验和,26--27字节为零。
(七)以前版本的 Windows 和DOS与 FAT32 不兼容,不能识别FAT32分区,有些程序也依赖于 FAT16 文件系统,不能和 FAT32 驱动器一道工作。将硬盘转换为 FAT32,就不能再用双引导运行以前版本的 Windows(Windows 95 [Version 4.00.950]、Windows NT 3.x、Windows NT 4.0 和 Windows 3.x)。常见的两大类 (1)FAT32
一种从文件分配表(FAT)文件系统派生而来的文件系统。与FAT相比,FAT32能够支持更小的簇以及更大的容量,从而能够在FAT32卷上更为高效的分配磁盘空间。
(2)一种能够提供各种FAT版本所不具备的性能、安全性、可靠性与先进特性的高级文件系统。NTFS能够使用日志文件与检查点信息来恢复文件系统的一致性。在Windows 2000和Windows XP中,NTFS还能提供诸如文件与文件夹权限、加密、磁盘配额以及压缩之类的高级特性。
区别如下:
(1)Win 2000可以同时支持FAT32和NTFS两种文件系统,FAT32长于与Win 9X的兼容性,NTFS长于系统安全性。
(2) FAT32文件系统可以重新定位根目录和使用FAT的备份副本。另外FAT32分区的启动记录被包含在一个含有关键数据的结构中,减少了计算机系统崩溃的可能性。 NTFS分区上的压缩文件进行读写时不需要事先由其他程序进行解压缩,当对文件进行读取时,文件将自动进行解压缩;文件关闭或保存时会自动对文件进行压缩。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2018-03-20
展开全部
分区表就是记录硬盘文件的地址的,我来和你解释一下吧,硬盘不是按照扇区储存文件的吗,当系统提出要求需要访问某一个文件的时候,首先访问分区表,如果分区表里面有这个文件的名称,然后就可以直接访问它的的地址,如果分区表里面没有这个文件,那就无法访问,系统删除文件的时候,并不是删除文件本身,而是在分区表里面删除,所以,删除以后的文件还是可以恢复的,因为分区表的特性,系统可以很方便的知道硬盘的使用情况,而不必为了一个文件,而搜索整个硬盘,大大提高了系统的运行能力,我想应该表达的差不多了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询