现在学过了目录结构和FAT,就容易了解DOS是如何来实现文件系统的。
假设磁盘上有树形目录结构,前已述及,DOS对一个已建立文件,在目录表上都有一个32字节的目录项,用来登记该文件有关文件名属性起始簇号等信息。同样,对一个子目录文件所包含的文件名和下一级子目录名,也在其相应子目录表中设置32字节的登记项,其登记格式含义也适合上述目录结构,因此树形目录按照图2.7所示示意图来实现。
其中子目录项的第一个簇由起始簇号指向,若子目录项多而再需要其他簇时,就进入FAT,由簇链寻找其所在盘空间。
子目录的第一项为“.”,即子目录本身。因此它的起始簇号指向自己;第二项为“..”,即父目录,它的起始簇号指向它的父目录,图中为简单而没有画出来。
以上示意图,读者可在软盘上进行上机实验;在实验盘建立指定目录结构,然后由DEBUG程序,装入磁盘目录区,寻到有关文件表项内容,然后再装入FAT,通过扇区定位,找各子目录的目录表项,最后列表给出各给文件名\子目录名、属性、起始簇,文件长度、簇数等性能的表格结果。
【例2.2】 将该A:盘中的DEBUG.EXE删除后通过C:盘DEBUG,用直接读逻辑扇区的方法将其恢复,操作如下。
图2.7 树形目录结构的实现图
F—信息文件(属性);D—目录文件(属性)
设所有文件全连续,此时可将A:盘DEBUG.EXE删除
根据上面的公式,已知文件的首簇号可以计算该文件在磁盘中的起始逻辑扇区号
逻辑扇区号=首簇号×1+1F=29F+1F=2BE
由该文件的长度,计算该文件所占的扇区数=504A/200(有余则加1)=28+1=29
(www.xing528.com)
【例2.3】 将该A:盘中的SUB子目录中的EDIT.COM删除后通过C:盘DEBUG,用修改被删除文件名首字节及恢复FAT表的方法将其恢复,操作如下。
设所有文件全连续,此时可将A:盘SUB 子目录中的EDIT.COM删除。
根据上面的目录项的内容,可知被删除文件EDIT.COM的首簇号=0D4A。
可以计算该簇号在FAT表中的地址=04DA×1.5=747,由于FAT表装入起始地址=100;所以首簇号在FAT表中的地址=747+100=847;由于首簇号为偶数,所以[0847]=C4DB,即连续三个字节单元为DB C4 4D。
该文件占总簇数=文件长/200=119EE/200=8D。
该文件最后簇号在FAT表中的地址=(04DA+(8D-1))×1.5=566×1.5=819
由于FAT表装入起始地址=100;所以最后簇号在FAT表中的地址=819+100=919;由于最后簇号为偶数;所以[0919]=8FFF,即连续三个字节单元为FF 8F 56(568为下一文件用)。
这样该文件FAT表中首地址与末地址的内存值确定后,中间部分内容可根据标准FAT表确定即可。
下面可根据计算结果和标准FAT表填其值后显示如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。