硬盘数据恢复教程.docx

上传人:暗伤 文档编号:96696154 上传时间:2024-03-09 格式:DOCX 页数:50 大小:399.20KB
返回 下载 相关 举报
硬盘数据恢复教程.docx_第1页
第1页 / 共50页
硬盘数据恢复教程.docx_第2页
第2页 / 共50页
点击查看更多>>
资源描述

《硬盘数据恢复教程.docx》由会员分享,可在线阅读,更多相关《硬盘数据恢复教程.docx(50页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、硬盘数据恢复教程前言:硬盘数据恢复很大程度依靠运气,无必胜把握,并且不与投入时间成正比,不要寄予太大的希望。请勿轻易拿自己硬盘做实验。建议数据恢复前先用硬盘保护卡对拷到其他硬盘上做一个备份,然后修理备份。(用ghost 不行)硬盘数据恢复,一概论初买来一块硬盘,我们是没有办法使用的,你需要将它分区、格式化,然后再安装上操作系统才可以使用。一个完整硬盘的数据应该包括五部分:MBR,DBR,FAT,DIR 区和 DATA 区。其中只有主引导扇区是唯一的,其它的随你的分区数的增加而增加。主引导扇区主引导扇区位于整个硬盘的 0 磁道 0 柱面 1 扇区,包括硬盘主引导记录 MBR(Main Boot

2、Record)和分区表 DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。至于分区表,很多人都知道,以 80H 或 00H 为开始标志,以 55AAH 为结束标志,共 64 字节,位于本扇区的最末端。值得一提的是,MBR 是由分区程序(例如 DOS 的 Fdisk.exe)产生的,不同的操作系统可能这个扇区是不尽相同。如果你有这个意向也可以自己去编写一个,只要它能完成前述的任务即可,这也是为什么能实现多系统启动的原因(说句题外话:正因为这个主引导记

3、录容易编写,所以才出现了很多的引导区病毒)。操作系统引导扇区OBR(OS Boot Record)即操作系统引导扇区,通常位于硬盘的 0 磁道 1 柱面 1 扇区(这是对于 DOS 来说的,对于那些以多重引导方式启动的系统则位于相应的主分区/扩展分区的第一个扇区),是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被称为 BPB(BIOS Parameter Block)的本分区参数记录表。其实每个逻辑分区都有一个 OBR,其参数视分区的大小、操作系统的类别而有所不同。引导程序的主要任务是判断本分区根目录前两个文件是否为操作系统的引导文件(例如 MSDOS 或者起源于 MSDOS 的

4、 Win9x/Me的 IO.SYS 和 MSDOS.SYS)。如是,就把第一个文件读入内存,并把控制权交予该文件。 BPB 参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT 个数、分配单元(Allocation Unit,以前也称之为簇)的大小等重要参数。OBR由高级格式化程序产生(例如 DOS 的 F)。文件分配表FAT(File Allocation Table)即文件分配表,是 DOS/Win9x 系统的文件寻址系统,为了数据安全起见,FAT 一般做两个,第二 FAT 为第一 FAT 的备份, FAT 区紧接在 OBR 之后,其大小由本分区的大小及

5、文件分配单元的大小决定。关于 FAT 的格式历来有很多选择, Microsoft 的 DOS 及 Windows 采用我们所熟悉的 FAT12、FAT16 和 FAT32 格式,但除此以外并非没有其它格式的 FAT,像 Windows NT、OS/2、UNIX/Linux、Novell 等都有自己的文50件管理方式。目录区DIR 是 Directory 即根目录区的简写,DIR 紧接在第二 FAT 表之后,只有 FAT 还不能定位文件在磁盘中的位置,FAT 还必须和 DIR 配合才能准确定位文件的位置。DIR 记录着每个文件(目录)的起始单元(这是最重要的)、文件的属性等。定位文件位置时,操作

6、系统根据 DIR 中的起始单元,结合 FAT 表就可以知道文件在磁盘的具体位置及大小了。在 DIR 区之后,才是真正意义上的数据存储区,即 DATA 区。数据区DATA 虽然占据了硬盘的绝大部分空间,但没有了前面的各部分,它对于我们来说,也只能是一些枯燥的二进制代码,没有任何意义。在这里有一点要说明的是,我们通常所说的格式化程序(指高级格式化,例如 DOS 下的 Format 程序),并没有把 DATA 区的数据清除,只是重写了 FAT 表而已,至于分区硬盘,也只是修改了 MBR 和 OBR,绝大部分的 DATA区的数据并没有被改变,这也是许多硬盘数据能够得以修复的原因。但即便如此,如 MBR

7、/OBR/FAT/DIR 之一被破坏的话,也足够咱们那些所谓的 DIY 老鸟们忙乎半天了需要提醒大家的是,如果你经常整理磁盘,那么你的数据区的数据可能是连续的,这样即使 MBR/FAT/DIR 全部坏了,我们也可以使用磁盘编辑软件(比如 DOS 下的 DiskEdit),只要找到一个文件的起始保存位置,那么这个文件就有可能被恢复(当然了,这需要一个前提,那就是你没有覆盖这个文件)。硬盘分区方式我们平时说到的分区概念,不外乎三种:主分区、扩展分区和逻辑分区。主分区是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑 C 磁盘。在主分区中,不允许再建立其它逻辑磁盘。扩展分区的概念则比较复

8、杂,也是造成分区和逻辑磁盘混淆的主要原因。由于硬盘仅仅为分区表保留了 64 个字节的存储空间,而每个分区的参数占据 16 个字节,故主引导扇区中总计可以存储 4 个分区的数据。操作系统只允许存储 4 个分区的数据,如果说逻辑磁盘就是分区,则系统最多只允许 4 个逻辑磁盘。对于具体的应用,4 个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以

9、找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。需要特别注意的是,由于主分区之后的各个分区是通过一种单向链表的结构来实现链接的,因此,若单向链表发生问题,将导致逻辑磁盘的丢失。数据存储原理既然要进行数据的恢复,当然数据的存储原理我们不能不提,在这之中,我们还要介绍一下数据的删除和硬盘的格式化相关问题文件的读取操作系统从目录区中读取文件信息(包括文件名、后缀名、文件大小、修改日期和文件在数据区保存的第一个簇的簇号),我们这里假设第一个簇号是 0023。操作系

10、统从 0023 簇读取相应的数据,然后再找到 FAT 的 0023 单元,如果内容是文件结束标志(FF),则表示文件结束,否则内容保存数据的下一个簇的簇号,这样重复下去直到遇到文件结束标志。文件的写入当我们要保存文件时,操作系统首先在 DIR 区中找到空区写入文件名、大小和创建时间等相应信息,然后在 Data 区找到闲置空间将文件保存,并将 Data 区的第一个簇写入 DIR区,其余的动作和上边的读取动作差不多。文件的删除Win9x 的文件删除工作却是很简单的,简单到只在目录区做了一点小改动将目录区的文件的第一个字符改成了 E5 就表示将改文件删除了。附录:Fdisk 和 Format 的一点

11、小说明和文件的删除类似,利用 Fdisk 删除再建立分区和利用 Format 格式化逻辑磁盘(假设你格式化的时候并没有使用/U 这个无条件格式化参数)都没有将数据从 DATA 区直接删除,前者只是改变了分区表,后者只是修改了 FAT 表,因此被误删除的分区和误格式化的硬盘完全有可能恢复系统启动流程各种不同的操作系统启动流程不尽相同,我们这里以 Win9x/DOS 的启动流程为例。 第一阶段:系统加电自检 POST 过程。POST 是 Power On Self Test 的缩写,也就是加电自检的意思,微机执行内存 FFFF0H 处的程序(这里是一段固化的 ROM 程序),对系统的硬件(包括内存

12、)进行检查。第二阶段:读取分区记录和引导记录。当微机检查到硬件正常并与 CMOS 设置相符后,按照 CMOS 设置从相应设备启动(我们这里假设从硬盘启动),读取硬盘的分区记录(DPT)和主引导记录(MBR)。第三阶段:读取 DOS 引导记录。微机正确读取分区记录和主引导记录后,如果主引导记录和分区表校验正确,则执行主引导记录并进一步读取 DOS 引导记录(位于每一个主分区的第一个扇区),然后执行该 DOS 引导记录。第四阶段:装载系统隐含文件。将 DOS 系统的隐含文件 IO.SYS 入内存,加载基本的文件系统 FAT,这时候一般会出现 Starting Windows 9x.的标志,IO.S

13、YS 将 MS.SYS 读入内存,并处理 System.dat 和 User.dat 文件,加载磁盘压缩程序。第五阶段:实 DOS 模式配置。系统隐含文件装载完成,微机将执行系统隐含文件,并执行系统配置文件(Config.sys),加载 Config.sys 中定义的各种驱动程序。第六阶段:调入命令解释程序(C)。系统装载命令管理程序,以便对系统的各种操作命令进行协调管理(我们所使用的 Dir、Copy 等内部命令就是由 C 提供的)。第七阶段:执行批处理文件(Autoexec.bat)。微机将一步一步地执行批处理文件中的各条命令。第八阶段:加载 W。W 负责将 Windows 下的各种驱动程

14、序和启动执行文件加以执行,至此启动完毕。硬盘数据恢复,二分区表的推算Master Boot RecordThe Master Boot Record is located at the physical beginning of a hard disk, editable using the Disk Editor. It consists of a master bootstrap loader code (446 bytes) and four subsequent, identically structured partition records. Finally, the hexade

15、cimal signature 55AA completes a valid Master Boot Record.硬盘的主引导记录在硬盘的 0 磁头 0 柱面 1 扇区。主引导记录由三部分组成:(1)主引导程序; (2)四个分区表;(3)主引导记录有效标志字。详见表 1。表 1 主引导记录结构位置内容0000H 00D9H主引导记录代码区00DAH 01BDH空闲区01BEH 01CDH分区 1 结构信息01CEH 01DDH分区 2 结构信息01DEH 01EDH分区 3 结构信息01EEH 01FDH分区 4 结构信息01FEH 01FFH55 AAH 主 引 导 记 录 有 效 标 志

16、说明:A,分区表自偏移 1BEH 处开始,分区表共 64 个字节,表中可填入四个分区信息,每十六个字节为一个分区说明项,这 16 个字节含义详见表 2。B,必须注意:扇区号的高二位占用柱面号所在字节的最高二位,即柱面号为 10 位,扇区号 6 位。The format of a partition record is as follows:OffsetSize Description0 8 bit A value of 80 designates an active partition.1 8 bit Partition start head2 8 bit Partition start se

17、ctor (bits 0-5)3 8 bit Partition start track (bits 8,9 in bits 6,7 of sector)4 8 bit Operating system indicator5 8 bit Partition end head6 8 bit Partition end sector (bits 0-5)7 8 bit Partition end track (bits 8,9 in bits 6,7 of sector)8 32 bitSectors preceding partition C32 bitLength of partition i

18、n sectorsOperating system indicators: (hexadecimal, incomplete list) 00Empty partition-table entry01 DOS FAT1204 DOS FAT16 (up to 32 MB)05 DOS 3.3+ extended partition06 DOS 3.31+ FAT16 (over 32 MB)07 OS/2 HPFS, Windows NT NTFS, Advanced Unix 08 OS/2 v1.0-1.3, AIX bootable partition, SplitDrive 09 AI

19、X data partition0A OS/2 Boot Manager 0B Windows 95+ FAT320C Windows 95+ FAT32 (using LBA-mode INT 13 extensions) 0E DOS FAT16 (over 32 MB, using INT 13 extensions)0F Extended partition (using INT 13 extensions)17Hidden NTFS partition1B Hidden Windows 95 FAT32 partition1C Hidden Windows 95 FAT32 part

20、ition (using LBA-mode INT 13 extensions) 1E Hidden LBA VFAT partition42Dynamic disk volume50 OnTrack Disk Manager, read-only partition51 OnTrack Disk Manager, read/write partition81 Linux82 Linux Swap partition, Solaris (Unix)83 Linux native file system (ext2fs/xiafs)85 Linux EXT86 FAT16 volume/stri

21、pe set (Windows NT)87 HPFS fault-tolerant mirrored partition, NTFS volume/stripe setBE Solaris boot partitionC0 DR-DOS/Novell DOS secured partitionC6 Corrupted FAT16 volume/stripe set (Windows NT) C7 Corrupted NTFS volume/stripe setF2DOS 3.3+ secondary partition表 2 分区结构信息偏移 长度含义00H1活动分区指示符,该值为 80H 表

22、示为可自举分区(仅有一个),该值为 00H 表示其余分区。01H1分区起始磁头号。02H1低 6 位是分区开始的扇区,高 2 位是分区开始的柱面的头两位。03H1分区开始的起始柱面号的低 8 位。04H1系统标志,该值为 01H 表示采用 12 位 FAT 格式的 DOS 分区,该值 04H 表示采用 16 位 FAT 格式的 DOS 分区,该值为 05H 表示为扩展 DOS 分区,为 06H表示为 DOS 系统。05H1分区终止头号06H1低 6 位为分区结束的扇区号,头 2 位为结束柱面号的前 2 位。07H1分区结束柱面号的低 8 位。08H4本分区前的扇区数,低位字节在 前。0CH4本

23、分区总的扇区数,低位字节在前。重要公式:02H 为 X,03H 为 Y。柱面=(X6)*162+Y;以我的硬盘为例:有九个可用分区,二个不可用分区;两个 Primary NTFS 分区,第二个为 active;七个 Extened 分区,第五个为 NTFS 其他为 FAT32.主分区表数据:位置 cylinder0, head 0,sector1偏移0123456789ABCDEF033C08ED0BC007CFB5007501FFCBE1B7C1BF1B065057B9E501F3A4CBBEBE07B1042382C7C09751583C610E2F5CD188B148B3EE83C610

24、497416382C74F6BE10074EAC43C0074FABB0700B40ECD10EBF28946255968A4604B4063C0E7411B40B3C0C740563AC4752B40C64625067524BBAA5550B4741CD1358721681FB55AA7510F6C1017480B8AE0885624C706A106EB1E886604BF90A00B801028BDC33C983FF057F038B4EA25034E02CD137229BE5907813EFE7D55BAA745A83EF057FDA85F67583BE2E07EBC8A989152990

25、3460813560AE812005AEBDD54F74E433C0CD13EBB8000080244500E5633F65656525006531B00001C014607FE7F1EC62811009931350080001D413007FE7FB230854A00C31C200000001E41B30FFEFFFFF3A16A0008FEF70100001F000000000000000000000000000055AA主分区表分析:Master bootstrap loader code0000H 00D9H33 C0 8E D0 BC 00 7C FB 50 。主引导记录代码,表示住

26、分区表01BEH 01CDH 分区 1 结构信息 multi(0)disk(0)rdisk(0)partition(0) 知该分区 Boot Sector 位于:起始磁头为 0 头,起始柱面为 70D,起始扇区为 1 扇区。01CEH 01DDH 分区 2 结构信息 multi(0)disk(0)rdisk(0)partition(1)活动分区指示符为 80H,表示该分区为可自举分区。系统标志为 07 表示OS/2 HPFS, Windows NT NTFS, Advanced Unix系统。知该分区 Boot Sector 位于:起始磁头为 0 头, 起始柱面为304D,起始扇区为 1 扇区

27、。01DEH 01EDH 分区 3 结构信息 Extended partition系统标志字节为 0F,说明是扩展分区 Extended partition (using INT 13 extensions)。从扩展分区说明项知下一个分区表位于:起始磁头为 0 头,起始柱面为 435D,起始扇区为 1 扇区。01EEH 01FDH 分区 4 结构信息分区说明项数据均为 00H 没有定义。01FEH 01FFH 55 AAH 主引导记录有效标志扩展分区一分区表数据:位置 cylinder435D, head 0,sector1偏移0123456789ABCDEF00000000000000000

28、00000000000000001B00001C41B30BFEFF083F00000097D5530000001DC10905FEFFFFD6D55300D6D5530000001E000000000000000000000000000000001F000000000000000000000000000055AA扩展分区表分析:01BEH 01CDH 分区 1 结构信息 multi(0)disk(0)rdisk(0)partition(3) 知该分区位于:起始磁头为 1 头,起始柱面为 435D,起始扇区为 1扇区(分区表占用磁头 0)。系统标志字 0BH 表示 Windows 95+ FA

29、T3201BEH 01CDH 分区 1 结构信息系统标志字节为 05H,说明是扩 展 DOS 分区。于是知下一个分区表位于:起始磁头为 0 头,起始柱面为 777D,起始扇区为 1 扇区。Partition Table Entry #3数据均为 00H 没有定义。Partition Table Entry #4数据均为 00H 没有定义。其他扩展分区同理。附录:Fdisk 的 MBR 参数MBR 系 FDISK.COM(EXE) 一项未公布的开关,隐含于 MS DOS 3.30,延至 MS DOS 8.0(Windows ME)。实践中,有籍以修复主引导信息,重点在主引导程序。FDISK /M

30、BR 命令流程的分支有二:读得主引导扇区检验标志(字) AA55h,操作单一,仅向主引导扇区位移 01BDH 写入当前系统固有的主引导程序,安全可靠。难能可贵的是它不触动主引导信息其余模块(分区表、检验标志),以及随后的 DOS 引导信息、文件分配表、根目录,省事许多。检出检验标志非 AA55h,写主引导程序、初始化分区表及登录检验标志,在 MS DOS 7.0 8.0 环境中,常规以系统支持的最大容量分配给基本 DOS 分区的方式登录分区表。分区表初始化(可能幸存的分区表被清除)的后果不难想象; 目前硬盘大都设置有其它分区,即使在高版本 DOS 环境中运作,常规建立的分区表每难能符合实际需求

31、,后续工作量也相当可观。不过,它也不触动位于其后的 DOS 引导信息、文件分配表及根目录,高版本 FDISK/MBR 命令适用于修复仅设基本 DOS 分区的硬盘分区表及检验标志受损,或主引导信息全毁。可见,在运行 FDISK /MBR 命令之前,需查明检验标志是否 AA55h,酌情处理,切忌盲动。经由 DOS 软盘引导,认硬盘,检验标志必健在。另外,在 FDSIK 主菜单中选 4. Display Partition Information,列出分区信息,进一步证实检验标志正常; 若现 No partitition defined,检验标志每变异,而分区表或许尚健在。硬盘数据恢复,三深入逻辑分

32、区现在深入每一个逻辑分区。逻辑分区结构如下:FAT12/16Logical sector =0Logical sector=1 (Floppy disk=19)Logical sector=1+se ctors_per_F AT(Floppydisk=1018)Logical sector=1+secto rs_per_FAT*2 (Floppy disk=1932)Logical sector=1+sectors_per_FAT*2+sectors_of_ro otdirectories(Floppy disk=33)DOS Boot SectorFAT1FAT2ROOT Directory

33、Data area(where files and subdirectories are stored)FAT32Usually 32 sectorsLogical sector=0032hLogicalsector=0032h+ 2*sectors_per_FATDOS Boot Recore 3 SectorsReserved sectorsCopy of recordReserve sectorsFAT1FAT2Data area(where files and all bdirectories are stored)在逻辑分区当中用逻辑的 cluster 和 sector。换算关系为:

34、 cluster=logical_sector/sectors_per_cluster;这里 sectors_per_cluster 是在 BIOS Parameter Block 里得到的。 Sector=( logical_sector mod sectors_per_track)+1;Head=( logical_sector / sectors_per_track)mod total_heads; Cylinder= logical_sector(sectors_per_track* total_heads);logical_sector=( cluster-2)*sectors_pe

35、r_cluster+sector_of_file_area_offset; logical_sector=(sector-1)+head*sector_per_track+sector*sector_per_track*heads;每个扇区长度=512 字节总簇数=逻辑盘容量/簇容量总簇数=FAT 表长度(字节)/每个表项长度(字节)-2 FAT 表长度=逻辑盘容量/簇容量*每个表项长度Dos 引导记录块位于逻辑 0 sector 中包含三部分:(1) 磁盘 IO 参数表 BPB;(2) 磁盘基数表;(3) 引导区代码。FAT16 的 BPB(BIOS Parameter Block)表,描述

36、逻辑盘结构组成,包含隐藏扇区数目(从 0-1-1 开始计算)、FAT 扇区数、FAT 拷贝数、硬盘磁头总数、根目录表项最大值等。 FAT32 系统中,BPB 表的偏移与 FAT16 不同,但表项基本相同。整个隐藏扇区部分都作为逻辑盘的描述区域。典型的 primary partion 的磁盘 IO 参数表 BPB:典型的 logical partion 磁盘参数表:硬盘 BPB 主要结构说明:(Cylinder 柱面/磁道-Side/Head 磁头-Sector 扇区地址以下简称为?-?-?)主分区名称地址长度(扇区)主引导记录 ( Main BootRecord)0-0-11系统扇区(Syst

37、em Secotrs)0-0-2,0-0-6362引导扇区(Boot)0-1-11扩展分区名称地址长度(扇区)扩展分区(Extend Partition)?-y-11系统扇区(System Secotrs)?-y-2,?-y-6362引导扇区(Boot)?-(y+1)-11其后各项与主分区相同隐藏扇区(Hidden Secotrs): FAT160-1-11FAT320-1-132文件分配表(File Allocation Table):FAT160-1-2根据逻辑盘容量变化FAT320-1-33根据逻辑盘容量变化说明:FAT16 的每个表项由 2 字节(16 位)组成,通常每个表项指向的簇包

38、含 64 个扇区,即32K 字节。 逻辑盘容量最大为 2047MB。FAT32 的每个表项由 4 字节(32 位)组成,通常每个表项指向的簇包含 8 个扇区,即 4K字节。逻辑盘容量最小为 512MB。对于 C 分区,在 MBR 的偏移 01c2H 处,FAT16 为 06H,FAT32 为 0CH。FAT 是 DOS、Windows9X 系统的文件寻址格式,位于 DBR 之后。在解释文件分配表的概念的时候,我们有必要谈谈簇(Cluster)的概念。文件占用磁盘空间,基本单位不是字节而是簇。一般情况下,软盘每簇是 1 个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是 4、8、16、32、

39、64同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。由于硬盘上保存着段与段之间的连接信息(即 FAT),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号。对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由 FAT 表来保存的,表中有很多表项,每项记录一个簇的信息。由于 FAT 对于文件管理的重要性,所以为了安全起见,FAT 有一个备份,即在原 FAT 的后面再建一个同样的

40、FAT。初形成的 FAT 中所有项都标明为“未占用”,但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为“坏簇”,以后存文件时就不会再使用这个簇了。FAT 的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存放簇号。FAT 的格式有多种,最为常见的是 FAT16 和 FAT32。当一个磁盘 Format 后,在其逻辑 0 扇区(即 BOOT 扇区)后面的几个扇区中存在着一个重要的数据表文件分配(FAT),文件分配表一式两份,占据扇区的多小凭磁盘类型大小而定。顾名思义,文件分配表是用来表示磁盘问件的空分配信息的。它不对引导区,文件目录的信息进行表示

41、,也不真正存储文件内容。我们知道磁盘是由一个一个扇区组成的,若干个扇区合为一个簇,文件存取是以簇为单位的,哪怕这个文件只有 1 个字节。每个簇在文件分配表中都有对应的表项,簇号即为表项号,每个表项占 1.5 个字节(磁盘空间在 10MB 以下)或 2 个字节(磁盘空间在 10MB 以上)。为了方便起见,以后所说的表项都是指 2 个字节的。 FAT 表的开始由介质描述符+一串“已占用”标志组成: FAT16 硬盘F8 FF FF 7FFAT32 硬盘F8 FF FF 0F FF FF FF 0F每个有效的 FAT 结构区包含两个完全相同的拷贝:FAT1、FAT2文件分配表结构如 1(H 表示 1

42、6 进制)表 1第 0 字节表头,表磁盘类型。FFH 双面软盘,每次道 8 扇区 FEH 单面软盘,每磁道 8 扇区 FDH 双面软盘,每磁道 9 扇区 FCCH 单面软盘,每磁道 9 扇区 FC8H 硬盘第 12 字节(表项号 1)表示第一簇状态,因第一簇被系统占据,故此两字节为 FFFFH第 34 字节(表项号 2)表示第二簇状态,若为 FFFH 表此簇为坏的,DOS 已标记为不能用;0000H表示此簇为空,可以用;FFF8H 表不能示该簇为文件的最后一簇;其余数字表示文件的下一个簇号,注意高字节在后,低字节在前。第 56 字节(表项号 3)表示第三簇状态,同上。注意:不要把表项内的数字误

43、认为表示当前簇号,而应是该文件的下一个簇的簇号。.高字节在后,低字节在前是一种存储数字方式,读出时应对其进行调整。是如两字节 12H,34H,应调整为 3412H。文件分配表与文件目录(FDT)相配合,可以统一管理整个磁盘的文件。它告诉系统磁盘上哪些簇是坏的或已被使用,哪些簇可以用,并存储每个文件所使用的簇号。它是文件的“总调度师”。当 DOS 写文件时,首先在文件目录中检查是否有相同文件名,若无则使用一个文件目录表项,然后依次检测 FAT 中的每个表项对应的簇中,同时将该簇号写入文件目录表项相的 26-27 字节,如文件长度不止一簇,则继续向后寻找可用簇,找到后将其簇号写入上一次找到的表项中,如此直到文件结束,在最后一簇的表项里填上 FFF8H,形成单向链表。DOS 删除文件时只是把文件目录表中的该文件的表项第 0 个字节改为 E5H,表

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com