




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、硬盘的物理构造:盘片以及盘片两面所安装的磁头和相应的把握电路组成(图1),其中盘片和磁头密封在无尘的金属壳中。硬盘工作时,盘片以设计转速高速旋转,设置在盘片外表的磁头则在电路把握下径向移动到指定位置然后将数据存储或读取出来。当系统向硬盘写入数据时,磁头中“写数据”电流产生磁场使盘片外表磁性物质状态发生转变,并在写电流磁场消逝后仍能保持,这样数据就存储下来了;当系统从硬盘中读数据时,磁头经过盘片指定区域,盘片外表磁场使磁头产生感应电流或线圈阻抗产生变化,经相关电路处理后复原成数据。因此只要能将盘片外表处理得更平滑、磁头设计得更周密以及尽量提高盘片旋转速度,就能造出容量更高读、写灵敏度和速度;磁头设计越小越周密就能使磁头在盘片上占用空间越小,使磁头在一张盘片上建立更多的磁道以存储更多的数据。二、硬盘的规律构造。(platter)N2N个0、1、2开头编号。每个盘片被划分成假设干个同心圆磁道(规律上的,)R的同心圆再规律上1、2、3……Cylinde个扇区。这三个参数即是硬盘的物理参数。我们下面的很多实践需要深刻理解这三个参数的意义。三、磁盘引导原理。MBR(masterbootrecord)扇区:bios程序。进展完一系列检测和配置以后。开头按biosBios执行完自己的程序后如何把执行权交给硬盘呢。交给硬盘后又执行存储在哪里的程序呢。其实,称为mbr的一段代码起着举足轻重的作用。MBR(maste001扇区(可以看作是中的第一条指令。将系统的把握1FEH~1FFH)是分区有效完毕标志。MBR,即使不同,MBR也不会夹带操作系统的性质。具有公共引导的特性。mbr。下面是120GBmbr。系统ID(System系统ID(SystemID)定义了分区的类型,具体定义,请参阅图4完毕磁头(EndingHead)完毕扇区(EndingSector)只使用了0~5位。最终两位(第6、7位)被完毕柱面字段所使用完毕柱面(EndingCylinder除了完毕扇区字段最终的两位外,还使用了1位,以组成该柱面值。完毕柱面是一个101023相对扇区数(RelativeSectors从该磁盘的开头到该分区的开头的位移量,以扇区来计算总扇区数(TotalSectors该分区中的扇区总数ck关于磁盘mbr的反编译,已加了具体的注释,感兴趣可以细细争论一下。C~ZDPT64个字节中如何表其次个分区表项描述除根本分区外的其余空间,一般而言,就是我们所说的扩展分区。这局部的大体说明1。移值12分区表第一字段字段名和定义EBYTE0引导指示符(BootIndicator)指明该分区是否是活动分区。(00为非活动分区)FBYTE1开头磁头(StartingHead)0x01C00x01C16位10位10开头扇区(StartingSector)0~5位。后面的两位(6位和7位)被开头柱面字段所使用开头柱面(StartingCylinder) 除了开头扇区字段的最终两位外,还使用了1位来组成该柱面值。开头柱面是一个10位数,最大值为10230x01C2BYTE0x070x01C3BYTEE0x01C46位F0x01C510位B0x00x01CDWO0006RD003F0x00x01CDWO0DAARDA83Dwinhex中看到这些参数的意义:0334同3。。80H为活动,00Hmicrosoft而言为非法值。(littleendianformat)或称反字节挨次保存下来。低字节在前的格式是一种保存数的方法,这样,最低位的字节最先出现在十六进制数符号中。例如,相对扇区数字段的值为0x3F000000,低字节在前,0x0000003F63。3、系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。有时候7000M,分出来却是6997M2H6H的扇区10位(bit)6H6位用作扇区数的二进制表107H8108位。由此可知,实际上用这种方式表示的分区容量是有限的,柱面和磁头从0开头编号,扇区从1开头编号,所以最多只能8.4GB(实际上应当255个(由汇编语言的寻址存放器打算),3个42^32个扇区,即2TB=2048GB,目前对于大多数计算机而言,这已经是个天8.4GB的分区上,C/H/S的表示方法和线性扇区的表示方法所表示的分区大小是全都(可能在某些系统中会提示出FEHFFHFFHC/H/S所能表示的最大值。有时候1024的模来填充。不过这几个字节是什么其实都无关紧要了。(保存扇区中的第一个扇区就是第一个分区,保存扇区是本分区前的全部扇区。4扩展分区:MBR的扩展引导记录(ExtendedBootRecord,E标签。扩展引导记录将记录只包含扩展分区中每个规律驱动器的第一个柱面的第一面的信息。一个规律驱3263。但是,假设磁盘上没有扩展分区,那么就不会有扩展引导记录和规律驱动器。第一个规律驱动器的扩展分区表中的第一项指向它自身的引导扇区。其次项指向下一个规律驱动器的EBR。假设不存在进一步的规律驱动器,其次项就不会使用,而且被记录成一系列零。如果有附加的规律驱动器,那么其次个规律驱动器的扩展分区表的第一项会指向它本身的引导扇区。其次个果有附加的规律驱动器,那么其次个规律驱动器的扩展分区表的第一项会指向它本身的引导扇区。其次个会被使用。45:关于扩展分区,如图6所示,扩展分区中规律驱动器的扩展引导记录是一个连接表。该图显示了一个扩除了扩展分区上最终一个规律驱动器外,表2中所描述的扩展分区表的格式在每个规律驱动器中都是重EBR。最终一个规律驱动器的扩展分区表只会列出它本身的分区项。最终一个扩展分区表的其次个项到第四个项未被使用。22扩展分区表项的内容扩展分区表项分区表项的内容第一个项包括数据的开头地址在内的与扩展分区中当前规律驱动器有关的信息其次个项有关扩展分区中的下一个规律驱动器的信息,包括包含下一EBR的扇区的地址。假设不存在进一步的规律驱动器的话,该字段不会被使用第三个项未用第四个项未用扩展分区表项中的相对扇区数字段所显示的是从扩展分区开头到规律驱动器中第一个扇区的位移的字定义的引导扇区到规律驱动器末尾的扇区数。有时候在磁盘的末尾会有剩余空间,剩余空间是什么呢?我们前面说到,分区是以1柱面的容量为分区粒度的,那么假设磁盘总空间不是整数个柱面的话,不够一个柱面的剩下的空间就是剩余空间了,这局部空般在物理上并不是依据外围的扇区大于里圈的扇区这种治理方式,只是为了与操作系统兼容而抽象出来CHS。可能其实际空间容量不愿定正好为整数个柱面的容量吧。关于这点,如有高见,请告知“://ww/“://ww“mailto:zymail@vip.sina“。先来一幅构造图:FATMICROSOFT最早支持的分区(有关概念,后面会讲到)fat12、fat16、fat32三种格式“变种“,但其根本存储方式是相像的。DBR、FAT1、FAT2、根名目、数据区、剩余扇区的概念。提到的地址如无特别提示均为分区内部偏移。DBR.RECORD)0512个字节(特别状况也要占用其它保存扇区,我们先说第0扇)。在这512个字节中,其实又是由跳转指令,厂ParameterBlock)BPB,os引导程序,完毕标志几局部FAT32DBR8。3DBR3DBR中各局部的位置划分8DBR的相关参数解释:DBR各字节的参数意义。x86的到操作系统引导代码局部。字节位移0x000x03字段长度3个字节8个字节字段名 跳转指令os版本号0x0B个字节BPB0x40个字节0x5A个字节引导程序代码0x01FE2个字节有效完毕标志OEMOEMID标识了格式化该分区的操作系统的名称和版本号。为了保存与MS-DOS的兼容性,通常Windows2023格式化该盘是在FAT16和FAT3ID字段消灭Windows95OSR2Windows98格式化的磁盘上OEMID字段消灭“MSWIN4.1”。接下来的从偏移0x0B开头的是一段描述能够使可执行引导代码找到相关参数的信息。通常称之为BPB(BIOSParameterBlock),BPB一般开头于一样的位移量,因此,标准的参数都处于一个的位置。BPBx86通过在BPB末端附加的信息,可以对BPB进展扩展。只需要对该跳转指令作一个小的调整就可以适应9FAT32分区格式的BPB45。字段字节长度8对位移(字应取值字段字节长度8对位移(字应取值节)名称和定义0x0 B0x0
0x0200
扇区字节数(BytesPerSector制值有512、1024、2048和4096。对大多数磁盘来说,本字段的512每簇扇区数(SectorsPerCluster),FAT32文件系统只能跟踪有限个簇(4294967296个),因此,通过增加每簇扇区数,可以使FAT32文件系统支持最大分区数。一个分区1 0x08 缺省的簇大小取决于该分区的大小。本字段的合法十进制值有1、2、D 4、8、16、32、64和128。Windows2023的FAT32实现只能创32GB的分区。但是,Windows2023能够访问由其他操作系统(Windows95、OSR2及其以后的版本)所创立的更大的分区0x0e20x1010x1120x1320x1510x0020x0e20x1010x1120x1320x15100x02
括引导扇区。本字段的十进制值一般为32FAT数(NumberofFAT)FAT的副本数。本字段的值一般20x000根名目项数(RootEntries)FAT12/FAT16FAT0 32分区而言,本字段必需设置为00x000小扇区数(SmallSector)(FAT12/FAT16使用此字段)FAT30 20媒体描述符(MediaDescriptor)供给有关媒体被使用的信息。值0x0xF8 F8表示硬盘,0xF0表示高密度的3.5寸软盘。媒体描述符要用于MS-DOSFAT16Windows2023中未被使用0x16 2
0x000FAT扇区数(SectorsPerFAT)FAT12/FAT16所使用,FA0 T3200x18 2
0x003每磁道扇区数(SectorsPerTrack)INT13h的磁盘的“每A
F2 0x00FF
道扇区数”几何构造值。该分区被多个磁头的柱面分成了多个磁道磁头数(NumberofHead)INT13h的磁盘的“磁头数”几何构造值。例如,在一张1.44MB3.5英寸的软盘上,本字段2隐蔽扇区数(HiddenSector该分区上引导扇区之前的扇区数。在引C
4 0x000导序列计算到根名目的数据区确实定位移的过程中使用了该值。本字0003F13h上可见的媒体有意义。在没有分区的媒体上它必需总是为00x20 4
0x007D043F
总扇区数(LargeSector)本字段包含FAT32分区中总的扇区数FAT扇区数(SectorsPerFAT)(FAT32使用)FA0x24 4
0x000TFAT数以及隐蔽扇区数(本表中01F32所描述的)来打算根名目从哪里开头。该计算机还可以从名目中的项数打算该分区的用户数据区从哪里开头扩展标志(ExtendedFlag)(只被FAT32使用)该两个字节构造中各位的值为:0-3FAT数(01).0x28 2 0x000 只有在不使用镜像时才有效0 4-6:保存7:0值意味着在运行时FAT被映射到全部的FAT1FAT是活动的8-15:保存文件系统版本(FileystemVersion)FAT32使用,高字节是主要AC
2 0x000的修订号,而低字节是次要的修订号。本字段支持将来对该FAT32媒0 Windows版本将不支持这样的分区4 0x000根名目簇号(RootClusterNumber)(只供FAT32使用)根名目第一00002 簇的簇号。本字段的值一般为2,但不总是如此文件系统信息扇区号(FileSystemInformationSectorNumber)(FAT32使用)FAT32分区的保存区中的文件系统信息(FileSy0x30 2 10x000
stemInformation,FSINFO)1引导扇区(BackupBootSector)FSINFO构造的一个副本,但是这个副本不保持更备份引导扇区(只供FAT32使用)0x34 2
6 区保存引导扇区的副本的保存区中的扇区号。本字段的值一般为6,建议不要使用其他值0x36 12 12个保存(FAT32使用)供以后扩大使用的保存空间。本字段的值总为表表5 FAT32分区的扩展BPB字段字节位移字段长度(字节)8对应取值字段名称和定义0x4010x800x000x291CFE“NONAME““物理驱动器号(PhysicalDriveNumber)BIOS物理驱动器号有关。软盘驱动器被标识为0x00,物理硬盘被标识为0x80,而与物理磁盘驱动器无关。一般地,在发出一个INT13hBIOS调用之前设置该值,具体指定所访问的设备。只有当该设备是一个引导设备时,这个值才有意义保存(Reserved)FAT32分区总是将本字段的值设置为0扩展引导标签(ExtendedBootSignature)本字段必需要有能被Windows20230x280x29分区序号(VolumeSerialNumber在格式化磁盘时所产生的一个随机序号,它有助于区分磁盘卷标(VolumeLabel在,卷标被作为一个特别文件保存在根名目中ID(SystemID)FAT32文件系统中一般取为“FAT32“字节均000x4110x4210x4340x47110x528DBRDBR0x5A开头的数据为操作系统引导代码。这是由偏移0x00开头的跳转指令所指向的。在0x5A。此段指令在不同的操作系统上和不同的引导方式上,其内容也是不同的。大多数的资料上都说win98,fatwin2023,winxpDB0fat32320扇区是win98,02扇区存win2023winxp,0扇区00xAB偏移指出)os引导代码。DBR2扇区(win98系统)0xC扇区(wNTLDR双系统,必需知道这一点。66FAT16分区上的引导扇区段字节位字段长度FE4扇区完毕标识符(0x55AA)DBR扇区的最终两个字节一般存储值为0x55AA的DBR有效标志,对于其他的取值,系统将不会执os0x55AA为合法完毕标志。FAT16DBR:如此,对于FAT12和FAT16其根本意义类似,只是相关偏移量和参数意来因,以后会说到,此处不在多说FAT12与FAT16。我将FAT16的意义列表。感兴趣的朋友自己争论一下,和FAT32大同小异的。 DBR图移0x00(字节)3字段名称跳转指令(JumpInstruction)0x038OEMID0x0B25BPB0x2426BPB0x3E448引导程序代码(BootstrapCode)77FAT16BPB字段字节位移字段长度(字节)例值名称和定义0x0B200x0D1扇区字节数(BytesPerSector硬件扇区的大小。本字段合法的十进制值有512、1024、2048和4096。对大多数磁盘来说,本字段的值512每簇扇区数(SectorsPerCluster)一个簇中的扇区数。由于FAT16文件系统只能跟踪有限个簇(最多为65536个)小。本字段合法的十进制值有1、2、4、8、16、32、64和128。导致簇大于32KB(每扇区字节数*每簇扇区数)的值会引起磁盘错误和软件错误0x0e20x1010x000保存扇区数(ReservedSector)FAT开头之前的扇区数,包括1 引导扇区。本字段的十进制值一般为10x02 FAT数(NumberofFAT)FAT的副本数。本字段的值一般为0x11 20x13 2
0x02000x0000
2根名目项数(RootEntries)能够保存在该分区的根名目文件夹中的32个字节长的文件和文件夹名称项的总数。在一个典型的硬盘上,本字段的值为512。其中一个项常常被用作卷标号(VolumeLabel),长名称的文件和文件夹每个文件使用多个项。文件和文件夹项的最大数一般为511,但是假设使用的长文件名,往往都达不到这个数小扇区数(SmallSector)该分区上的扇区数,表示为16位(<65536)。对大于65536个扇区的分区来说,本字段的值为0,而使用大扇区数来取代它媒体描述符(MediaDescriptor)供给有关媒体被使用的信息。值0xF0x15 1 0xF8 8表示硬盘,0xF03.5寸软盘。媒体描述符要用于MS-DOSFAT16Windows2023中未被使用FAT扇区数(SectorsPerFAT)FAT所占用的扇区0x16 2
0x00FFAT数以及隐蔽扇区数来打算根名目在哪里开C0x1820x1A20x1820x1A20x1C40x2040x0040
始。计算机还可以依据根名目中的项数(512)打算该分区的用户数据区从哪里开头每道扇区数(SectorsPerTrark)磁头数(Numberofhead)0x000隐蔽扇区数(HiddenSector0x003
序列计算到根名目和数据区确实定位移的过程中使用了该值大扇区数(LargeSector)假设小扇区数字段的值为0,本字段就包含该FAT16分区中的总扇区数。假设小扇区数字段的值不为0,那么本字0字段字节长度8对
表8 FAT16分区的扩展BPB字段位移
应取值
字段名称和定义物理驱动器号(PhysicalDriveNumber)BIOS物理驱动器号有关。软盘驱动器被标识为0x00,物理硬盘被标识为0x80,而与物理磁0x24 10x25 10x26 1
0x80 INT13hBIOS调用之前设置该值,具体指定所访问的设备。只有当该设备是一个引导设备时,这个值才有意义0x00 保存(Reserved)FAT1600x29 扩展引导标签(ExtendedBootSignature)本字段必需要有能被Win0x2740x2B110x368dows2023dows20230x280x290x523卷序号(VolumeSerialNumber在格式化磁盘时所产生的一个随机68BA8 序号,它有助于区分磁盘“NON卷标(VolumeLabel本字段只能使用一次,它被用来保存卷标号。现AME“6“在,卷标被作为一个特别文件保存在根名目中文件系统类型(FileSystemType依据该磁盘格式,该字段的值可以FAT、FAT12FAT16DBR0x0E处,用2个字节存储保存扇区的数目。所谓保存扇区(有时候)DBRDBRFAT1DBRFAT32中,保存扇区的数据通PartitionMagicFAT3236个保存扇区,有的工具可能会设置个保存扇区。DBR2扇区(win98系统)0xC扇区(wiOS引导代码扩展部格外,其余扇区都不参与操作系统治理与磁盘数据治理,通常情FAT32DBR作备份或留待以后升级时用。FAT32中,DBR0x342DBR0x06,即第6扇区。当FAT32分区DBR扇区被破坏导致分区无法访问时。可以用第6扇区的原备份替换第0扇区来找回数据。FAT表和数据的存储原则FAT文件系统中用于磁盘数据(文件)FAT表可以认为相当于书中的名目,而文件就FAT表的表示方法却与名目有很大的不同。FAT文件系统将组织数据时使用的名目也抽象为文件,以简化对数据的治理。★存储过程假想:FAT文件系统中数据的存储原则。100KB,我们将其想象为线形的空间地址。为了存储治理上的便利,我们人为的将这100KB100份,每份1KB。我们来依次存储这样几20.5KB)。100KB3个文件。同时不要忘了,我们还要登记1(属性)1KB,所以,A.TXT10个存“簇”吧。也能少打点字,呵呵。),B.TXT54个簇,C.文件大小文件名(占开头簇(4(10个字创立日期、时间修改日期((占保存(12节)B.TXTC.TXT1簇的空间吗?干嘛不让他们紧挨着,不是省地方吗?我的答复是,假设依据这样的方式存储,名目中原本只需要登记簇号,现在还需要登记簇内的偏移,这样会增加名目的存储量,而且存取没有了规章,读取也不太便利,是得不偿失的。依据上面所说的思想,我们设计了这样的图4.3.1所示的存储方式。4.3.14.3.1整个100KB空间目录A.TXTB.TXTC.TXT占1簇10簇54簇21簇剩余14簇我们再考虑如何来写这三个文件的名目。对于每个文件而言,确定要记录的有:文件名,开头簇,大小,创立日期、时间,修改日期、时间,文件的读写属性等。这里大小能不能用完毕簇来计算呢?确定不不行,可多了也是不行的。那么我们怎么记录呢?可以想象一下。为了治理上的便利,我们用数据库的1KB100100B的各个位置的代表含义如图4.3.24.3.2每行100B10行(这是例子,非Fat系统)A.TXT1102023.3.2210:41 2023.3.2210:41只读B.TXT1153.61949:10:112:0 2023.8.2220:40隐蔽有效记录C.TXT6520.52023:3:821:11 2023:3:89:11系统10行记录。。。内容留空这样设计的构造确定可以对文件进展正确的读写了。接着让我们设计的文件系统工作吧。先改动个文件,这样设计的构造确定可以对文件进展正确的读写了。接着让我们设计的文件系统工作吧。先改动个文件,B.TXT决不了。b.txt4.3.34.3.44.3.44.3.4每行100B10行(这是例子,非Fat系统)A.TXT1102023.3.2210:412023.3.2210:41只读C.TXT6520.52023:3:821:112023:3:89:11系统10行记录。。。空文件名(占开头簇(4(10个字(10修改日期、时间(4字文件大小读写属性节)节)4.3.34.3.3整个100KB空间目录A.TXTC.TXT占1 簇空白54簇21簇剩余14簇这个操作看来还可以,我们接着做,在存入一个文件这个操作看来还可以,我们接着做,在存入一个文件D.txt(60.3KB),100簇的空间只用了361个连续的空间了,名目行没方法写了,看来无连续块存储临时也不行。出空间来,但我要问你,那不是成天啥也不要干了,就是倒腾东西了吗?看来我们设计的文件系统有致命的漏洞,怎么解决呢?。。。。。。。。。。其实可以这样解决:文件名(占文件名(占50开头簇(4(1(占保存(12字个字节) 节)4.3.7文件安排表簇号12 3 ... 111213 ... 656667 ... 8687... 99...A.TXT(10)B.TXTB.TXT...B.TXT(54)C.TXTC.TXT...C.TXT(21)...(1)(2)(1)(2)个存储空间的前部留下几簇来记录数据区中数据与簇号的关系。对于上例由于总空间也不大,所以用前部33.64.3.54.3.5整个100KB空间表名目A.TXTB.TXTC.TXT0簇第1簇簇12~6566~86簇87~99簇4.3.6每行100B10行(这是例子,非Fat系统)A.TXT2102023.3.2210:41 2023.3.2210:41只读B.TXT1253.61949:10:112:0 2023.8.2220:40隐蔽有效记录C.TXT6620.52023:3:821:11 2023:3:89:11系统10行记录。。。内容留空第一簇用来记录数据区中每一簇的被占用状况,临时称其为文件安排表。结合文件安排表和文件名目就可第一簇用来记录数据区中每一簇的被占用状况,临时称其为文件安排表。结合文件安排表和文件名目就可4.3.7的形式记录簇与数据的对应。对A.A.应目TXTX数据录T(1)T(2)4.3.84.3.8改进后的文件安排表簇号对应表中记录太多,铺张空间,而实际上在名目中已经记录了文件的开头簇了。所以可以改进一下,用链的方123 ... 111213 ... 656667 ... 8687 ... 99名目34 ... FF1314 ... FF6768 ... FF00 ... 00下文件安排表的意义下文件安排表的意义如文件a.txt我们依据名目项中指定的a.txt的首簇为2,然后找到文件安排表的第2簇记录,上面登记的是3,我们就能确定下一簇是3。找到文件安排表的第3记录,上面登记的是4,我们就能确定下一簇是4. 第11簇,觉察下一个指向是FF,就是完毕。文件便丝毫无误读取完毕。b.txt60.3KBd.txt。利用簇4.3.94.3.104.3.114.3.9整个100KB空间划分文件安排表名目A.TXTD.TXTC.TXTD.TXT空0簇1簇第2~1112~6566~8687~93簇94~99簇4.3.10文件安排表簇号123 ... 11 12 13 ... 65 66 67 ... 868788 ... 93 94 ... 99对应数据目录34 ... FF 13 14 ...8767 68 ... FF 88 89 ... FF 00 ... 004.3.11名目每行100B10行(这是例子,非Fat系统)共10A.TXT2102023.3.2210:412023.3.2210:41只读行行记录C.TXT6620.52023:3:821:112023:3:89:11系统D.TXT1260.31999:5:18:002023:3:2014:0存档。。。内容留空读写属性保存(12(4字字节)节)(占创立日期、时间修改日期、时间fatfat文件系统的思想下边)。存储原理:文件系统时,fat文件系统就将这个分区当成整块可安排的区域进展7FAT16局部提取出来,具体描述一下:较早推出的文件系统,具有高度兼容性,目前照旧广泛应用于个人电脑尤其是移FATFATFAT16用来记FAT将磁盘空间按确定数目的扇区为单位进展划5122n(n为整数)32K512Bfat表94.3.12Fat16的组织形式引导扇区FAT1的)根文件夹其他文件夹及全部文件(2开头)剩余扇区1扇区实际状况取大小32个扇区缺乏一簇分区空间大小分区大小与对应簇大小每个簇的扇区簇空间大小0MB-32MB1个字节33MB-64MB21k65MB-128MB42k129MB-225MB84k256MB-511MB168k512MB-1023MB3216k1024MB-2047MB6432k2048MB-4095MB12864k326808个扇区。不管用户是使用磁盘治理format12FAT。12FAT,FAT12FAT的初始实现形式,是针对小FAT16FAT32FAT125.251.44MB3.56均一样,不再单独解释。。。分区时,格式化程序依据分区的大小确定簇的大小,然后依据保存扇区的数目、根名目FAT表所需的扇区数目,然后将计算后的DBR的相关位置。FAT16DBR0x110x16记录了FAT表所占扇区的数据。偏移0x10记录了FAT表的副本数目。系统在得到这几项参数以后,就可以确定数据区的开头扇区偏移了。32个扇区之后的第一个扇区开头以簇为单位进展数据的处理,这之01(可能是留作关键字的)212簇。FAT12,16,32FAT表用来记录任意一簇链接的二16位)。所以,FAT16最大可以表示可以治理的最大磁盘空间为:32FAT162GB分区的缘由。FATFAT表实际上是一个数据表,以2个字节为单位,我们暂将这个单位称为FAT记录项,通常状况其第链状况。依据簇的表现状况FAT用相应的取值来描述,见表10FAT16记录项的取值00000002~FFEFFFF0~FFF6FFF7FFF8~FFFF
10FAT16记录项的取值含义(16进制)对应簇的表现状况系统保存坏簇文件完毕簇FAT1610:FFFFFF“2FAT表簇链关系。小红字FAT2字节对应的簇号。(1簇)FF,2簇上的文件(名目)是个1个簇便完毕了。第3簇中存放的数据是0x0005,这是一个文件或文件夹的首簇。其内容为第5簇,就是说接下来的簇FAT5簇指向,上面写的数据是“FFFF“,意即此文件到此簇已至结尾。第4簇中存放的数据是0x0006,这又是一个文件或文件夹的首簇。其内容为第6簇,就是说接下来的〉FATFAT60x0007,就是说接下〉FATFAT7簇指向……FAT链读取到扇区相对14簇——〉14簇的内容为“FFFF“,意即此文件到此簇已至结尾。FAT表数据与上面的道理一样。不再分析。Microsoft为其。FAT2FAT1的内容通常是FAT1FAT2也同样被更。假设从这个角度来看,系统的这个功能在数据恢复时是个天灾。FAT分区内的任一文件(包括文件夹),均需从根名目寻址来找到。可以这样认为:名目存储构造的入口就是根名目。T文件系统依据根名目来寻址其他文件包括文件夹DBRDBRFAT表(2份)的大小表表11 FAT16名目项32个字节的表示定义字节偏移(16进制)0x0~0x70x8~0xA字节数83定义文件名扩展名属0xB1性字00000000(读写)00000001(只读)00000010(隐蔽)00000100(系统)00001000(卷标)来确定的。格式化以后,根名目的大小和位置其实都已经确定下来了:位置紧随FAT2之后,大小通常为FAT文件系统的另一个重要思想是把名目(文件夹)当作一个特别的文件来处理,FAT32甚至将根名目当作文件处理(旁:NTFS将分区参数、安全权限等好多东西抽象为文件更是这个思想的升华),在FAT16中,虽然根名目地位并不等同于一般的文件或者说是名目,但其组织形式和一般的名目(文件夹)并没有不同。FAT分区中全部的文件夹(名目)文件,实际上可以看作是一个存放其他文件(文件夹)入口参数的数据0。通常是占很小的空间的,可以看作名目文件是一个简洁的二维表文件。其具体存储原理是:不管名目文件所占空间为多少簇,一簇为多少字节。系统都会以32个字节为单位进展名目文件所占簇的安排。这32个字节以确定的偏移来定义本名目下的一个文件(或文件夹)的属性,实际上是一个简洁的二维表。节00010000(子名目)0xC~0x151000100000(归档)系统保存0x16~0x172文件的最近修改时间0x18~0x192文件的最近修改日期0x1A~0x1B2表示文件的首簇号0x1C~0x1F4表示文件的长度11中的一些取值进展说明:字节记录文ASCII码值。不记录主文件名与扩展名之间“.“(20H)填充3个字符同样以空白符(20H)填充。0x000H,说明名目项为空;假设为E5H,说明名目项曾被使用,但对应的文件或文件夹已被删除。(这也是误删除后恢复的理论依据)。文件名中的第一个字符假设为“.”或“..”表示这个簇记录的是一个假设磁盘数据被破坏,就可以通过这两个名目项的具体参数推算磁盘的数据区的起始位置,猜测簇的大小等等,故而是比较重要的)0xB8位,用其中的一位代表某种属性的有00000101就表示这是个文件,属性是只读、系统。WINDOWS系统中有时也用它来FAT32FAT32。中的时间=小时*2048+分钟*32+秒/2。得出的结果换算成16进制填入即可。也2位是分钟;0x173~7位是小时。月份*32+16进制填入即1980~2099Windows0~127,即年2107年。FAT表中找到入口,0x1C~0x1F(名目)了。(指非名目文件)不同0xB410。假设簇的大小设定为2扇区,就会有1个扇区无法安排给任何一个簇。这就是分区的剩余扇区,位于分区DBR,这也是一种好的备份方法。WindowsFAT16上的长文件名了。FAT32FAT32局部再具体作解释。存储原理:MicrosoftNTFS铺天盖地袭FAT16FAT32还是成功的。4.3.13FAT32分区的根本构成。引导引导扇区其余保存扇区4.3.13Fat32的组织形式FAT21扇区31个扇区(重复的)实际状况取大同FATFAT1根文件夹首簇其他文件夹及全部文件剩余扇区小12簇缺乏一簇保存扇区BPB参数是很重要的,可以回过头来看一下表4和表5。首先FAT32保存扇区的数目默认为32个,而不是FAT16的仅仅一个。这样的好处是有助于磁盘DBR指令的长度扩展,而且可以为DBR扇区留有备份空间。上面我们已经提到,构建在FAT32上的win98或win2023、winXP,其操作系统引导代码并非只占一个扇区了。留有多余的保存扇区就可以很好的拓展OS引导代码。在BPB中也记录了DBR扇区的备份扇区编号。备份扇区可以让DBR。FAT32 的文件安排表的数据构造照旧和FAT16一样,所不同的是,FAT32将记录簇链的二进制位数FAT32。32FAT表最大可以寻址2T个簇。这样即使簇的大小为1扇区,理论上照旧能够寻址1TB范围内的分区。但实际中FAT32是不能寻表的记录数会变得臃肿不堪,严峻影响系统的性能。32GBFAT32WIN2023OS3WIN98127GBFAT32分区,但这样没必要也分区变大时,假设簇很小,文件安排表也随之变大。照旧会有上面的效率问题存在。既要有效地读写大文件,又要最大可能的削减空间的铺张。FAT32同样规定了相应的分区空间对应的簇的大小,见表12:分区空间大小每个簇的扇区数(字节)<8GB84k168k3216k>=32GB6432kFAT1613:13FAT各系统记录项的取值含义(16进制)FAT12记录项的FAT16记录项的取
FAT32记录项的取值
对应簇的表现状况取值000FF0~FF6FF7FF8~FFF
值00000002~FFEFFFF0~FFF6FFF7FFF8~FFFF
0000000000000002~FFFFFFEFFFFFFFF0~FFFFFFF6FFFFFFF7FFFFFFF8~FFFFFFFF0FFFFFF8~0FFFFFFF
系统保存坏簇文件完毕簇分区大小与对应簇大小FAT32的另一项重大改革是根名目的文件化,马上根名目等同于一般的文件。这样根名目便没有了FA分区大小与对应簇大小14.3.12中也是按这种状况制作的画的。12簇,通常为根名目所用(FAT的根名目并不占簇区空间,321个簇)FAT16FAT16有所不同,一方面它中的名目项保存字段,同时又完全支持长文件名了。对于短文件格式的名目项。其参数14:14FAT32短文件名目项32个字节的表示定义字节偏移(16进制)字节数定义0x0~0x78文件名0x8~0xA3扩展名00000000(读写)00000001(只读)00000010(隐蔽)0xB*1属性字节00000100(系统)00001000(卷标)00010000(子名目)0xC100100000(归档)系统保存0xD1创立时间的10毫秒位0xE~0xF2文件创立时间0x10~0x112文件创立日期0x12~0x132文件最终访问日期0x14~0x152文件起始簇号的高16位0x16~0x172文件的最近修改时间0x18~0x192文件的最近修改日期0x1A~0x1B2文件起始簇号的低16位0x1C~0x1F4表示文件的长度0FH,0FH,名目段为长文件名名目段说明:说明:FAT32短文件格式名目项的意义。其中文件名、扩展名、时间、日期的算法和FAT16时相同的。0x14~0x1516位。表表15 FAT32长文件名目项32个字节的表示定义字节偏移(16进制)字节数定义76保存未用5保存未用0x01属性字节位意义432挨次号数值FAT324GB的文件(名目4GB),系统会截断处理。的一个重要的特点是完全支持长文件名。长文件名照旧是记录在名目项中的。为了低版本的OS或程序能正确读取长文件名文件,系统自动为全部长文件名文件创立了一个对应的短文件名,使对应数OS或程序会无视它认为不合法的长文件名字段,而支持长文件名的OS或程序则会以长文件名为显式项来记录和编辑,并隐蔽起短文件名。当创立一个长文件名文件时,系统会自动加上对应的短文件名,其一般有的原则:、取长文件名的前6个字符加上“~1“形成短文件名,扩展名不变。、假设已存在这个文件名,则符号“~“5。“~1“直到最终(假设有必要,或是其他数字以避开重复的文件名)。即其值为0FH时,DOS和WIN32会认为其不合法而无视其存在。这正是长文件名存在的依据。将名目项文件需要多个名目项,这时长文件名的各个名目项按倒序排列在名目表中,以防与其他文件名混淆。形式编码(一个巨大的进步哦2字节的空间。其名目10x1~0xA100unicode码①0xB1长文件名名目项标志,取值0FH0xC1系统保存0xD1校验值(依据短文件名计算得出)0xE~0x1912unicode码②0x1A~0x1B 20x1C~0x1F 4
文件起始簇号(目前常置0)unicode码③unicode2613个字符然后紧跟其对应的短文件名15可以看出,长文件名中并不存储对应文件的文件开头簇、文件大小、各种时间和日期属性。文件的这些属性还是存放在短文件名名目项中,一个长文件名总是和其相应的短文件名一一对应,没有了长文件名还可以用短文件名读,但长文件名假设没有对应的短文件名,不管什么系统都将无视其存在。所以短文件名是至对首字符改写E5H),都会使长文件名形同虚设。长文件名和短文件名之间的联系光靠他们之间的位置关系维系明显远远不够。其实,长文件名的0xD字节的校验和起很重要的作用,此校验和是用短文件名的11个字符通过一种运算方式来得到的。系统依据相应的算法来确定相应的长文件名和短文件名是否匹配。这个算法不太简洁用公式说明,我们用一段c程序来加以说明。shortname[],chknum表示。得到过程如下:inti,j,chknum=0;for(i=11;i>0;i--)chksum=((chksum&1)?0x80:0)+(chksum>>1)+shortname[j++];注:0x80,chksum右移(>>)一位的值,再加上每个字符的代码0xD偏移处数据不相等。系统无论如何都不会将它们配对的。FAT32上数据的读取便游刃有余了。五、实例分析。以下是一幅根名目入口截图: 图11進60113,意为这是第三个名目项。意为第三个名目项是这个长文件名名目项的02,表示是其次项名目项按倒序排列,所以其次项反而在后面;0x43040xB0x0F,表示这是长文件名;0xD位置为F9,表示校验码为F9。0x1A~0x1B位置两个字节常置0。系统)a.FAT表入口,只有一个文件的时候,就是上图介绍的那个文件〔上图是用WINHEX软件翻开。此文件大小为9,858U盘每一个簇只占用一个扇区。看以以下图:0x804开头,这个文件从根名目完毕后的第一个位置(2个簇)开头写入文件内容,到0x82B完毕,共占用20个簇,一个簇是一个扇区,因此占用20*512=10240字节。图1FATFAT表2个簇〕的位置,依此类推。0x84,就是4个扇区,DBR04个扇区。以以下图是这个文件的数据区入口:
扇区每个FAT表占250个扇区所以数据区开头处就是0x43000开头了。过了250*2+32=532个扇区,加上前FAT表前有4个扇区,所以图中显示“当前所在扇区”为536。以以下图是这个文件数据区的完毕位置。 图14满。由图110x4307C~0x4307F是文件大小,即0x00002682,十進9858字节,从图可以计字节。以上单个文件比较简洁,以下介绍在刚刚的单文件的根底上创立一个空文件夹。以以下图为参与空文件夹后根名目截图:
15可以看出,名称为“建文件”的0x3F0A0E5表示删除。0x3F11A~0x,这个数据所表示的簇的位置又是一个名目表,类似于根名目表,组织数16:FAT表入口图:17文件之后的一55516,空556扇区。如图16,0x458002E表示该名目项是当前名目的记录,位置在链方法即可。COPY入一个文件,看一下是什么变化。如下是根名目入口截图:18根名目入口截图1516的变化:19文件夹的名目项记录0x4587FAT表的变化:表FAT0x82E~0x82F处开头,此处位置17号簇位置,这个文件占用两个簇。这样每个名目的名目项记录都可以用跟文件一样的方式用簇链0x82C~0x82D位置的文件夹,假设这个文件夹内有很多的文件或是文件夹,则有可能位置这个簇就写不下这么多的名目项记录,那么就可以转到一个空的簇连续写,而只FAT表中同样的位置写入结尾标志中有所记录。名目项记录不管在数据区的哪个地方,所记录的文件或名目的位置都会在FAT表中写入,而号簇呢?固然可以,这个0x01号就是根名目,只是它占用的不是一个簇,而是一个规定大,假设这个范围不够用也是可以如簇链一样扩展的。0x00号的F8FF可以看成是开头标志吧。请看下面拷入文件在数据区数据入口图 0x82E~0x82F0x170x45A00COPY入一个空文件夹,空文件夹名称为:888888888888888888888888888888,现在来看看截图: 处写入了参与的文件夹名目项入口位置。下面来看根名目有无变化。(第504扇区,见前图)扇区)的名目项。 第一重名目的名目项0x458EB=0x10表示为文件夹而不是文件。0x458FA~0x45559扇区),如下:0x45E1A~0x45E1B处所表示的位指明白父名目的名目项位置。现在说一下长文件名跨扇区和跨簇的问题。先看四张图 图25 图26图27 图28252627282525是一张根名目其次扇区的截图,由图可知0x3F3A0开头的名目项,到末尾并未写完,而是接到下一个扇区了(见图26),由于根名目是连续的,所以这种状况27270x45E000x190x45FA00x19FAT表图(29)29簇E0x43000+(0x2E-0x2)*512=0x48800,由图0x48800,2827。这个就是文件名名目项跨簇。现在说一下删除的问题。记录的每个32字节的第一个字节标为:0xE5,FAT表同位置置0x00,面不是把文件的数据区的内容全部清0,这就是为什么文件删除后,只要不对盘进展任何写操作,就还能找的缘由。如以以下图,第一个文件夹内删除一个文件后的FAT表。 图30第一个文件内删除一个文件FAT表图图图31 第一个文件内删除一个文件根名目图根名目没有任何变化。现在看子名目的名目项图32第一个文件内删除一个文件后这个文件夹的名目项图0xE5标记,表示该文件被删除。但这个记录项其它内容一点都没有改动,其中就有文件在数据区的起始位置记录,这个起始记录没有破坏,并且还记录有文件长度,所以文件还可以找回一局部来。即可以至少找回一个簇,假设这个文件在存储时是连续簇存储,则可以完全找回,假设不是,则只能找回一个簇的内容,其它簇的内容由于FAT表对应位置清零,就不能找回了。x表示〕1188888888888888FAT表288888888888888视图(上图)附图3文件夹88888888888888删除之前父名目XXXXXXXXXXXXXXXXXX文件夹的名目表488888888888888内的一个子名目5kkkk.ghtt的名目表511kkkkkkkkkFAT表611kkkkkkkkk11kkkkkkk的名目表11kkkkkkkkk时完全一样。711kkkkkkkkk文件夹后文件夹888888888888888的名目表8888888888888888FAT表附图9删除888888888888文件夹后的XXXXXXXXXXXXX文件夹名目表附图10删除888888888888文件夹后的8888888888888888888的名目表附图11删除8888
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年皖南医学院第二附属医院招聘编外28人模拟试卷有答案详解
- 2025广西梧州市公安局第二批招聘警务辅助人员160人模拟试卷(含答案详解)
- 2025福建漳州市南靖县南坑镇民政服务站招聘社工1人考前自测高频考点模拟试题有完整答案详解
- 2025年河北承德医学院附属医院招聘技师岗工作人员7名模拟试卷及答案详解(各地真题)
- 2025河北省地理集团有限公司实习岗招聘30人考前自测高频考点模拟试题及答案详解(新)
- 冬季预防知识培训总结课件
- 2025菏泽曹县教育系统公开招聘初级岗位教师(166人)模拟试卷及答案详解(考点梳理)
- 2025北京市环科院编制外人员招聘6人模拟试卷及答案详解(易错题)
- 2025江苏连云港市赣榆农业发展集团有限公司及下属子公司招聘设备工程师岗(A36)技能考前自测高频考点模拟试题及答案详解(考点梳理)
- 2025吉林长春中医药大学附属第三临床医院招聘院前急救人员6人模拟试卷及答案详解(各地真题)
- 2025-2030中国抗骨质疏松药物市场调研及未来增长预测报告
- 房屋安全性鉴定培训试题及答案解析
- 2025广西南宁上林县公安局面向社会招聘警务辅助人员50人笔试备考试题及答案解析
- 火锅店引流截流回流方案
- 黑龙江省齐齐哈尔市富拉尔基区2024-2025学年高一上学期期中考试生物试题含参考答案
- 2025年档案员考试试题及答案
- 仓库内安全培训资料课件
- 2025-2026学年七年级英语上学期第一次月考 (福建专用) 2025-2026学年七年级英语上学期第一次月考 (福建专用)原卷
- 国自然培训课件
- 2025年4月自考03450公共部门人力资源管理试题
- 乳化剂和增稠剂知识讲解课件
评论
0/150
提交评论