zoukankan      html  css  js  c++  java
  • 文件目录表(FDT)及其结构

    用FORMAT命令对磁盘(或逻辑盘)进行格式化的时候,就已经为整个硬盘建立了一个根目录FDT。在根目录下,用户可以用DOS命令"MD"再创建不同的各个子目录,以及子目录下的子目录。
    根目录以及各级子目录都有自己的FDT。
    在具体操作中,系统规定用字母C-Z代表逻辑盘符,所以DOS简单地用“[盘符:]\”表示在根目录下。根目录的作用是分配根目录下的所有文件和子目录的存储空间(逻辑扇区号),并且通过设备驱动程序接口确定有效的最大目录项。
    1.根目录中的FDT

    根目录的作用是分配根目录下的所有文件和子目录的存储空间(逻辑扇区号),并通过设备驱动程序接口确定有效的最大目录项。
    根目录下的所有文件及其子目录在根目录的文件目录表(FDT)中都有一个“目录登记项”或简称为“目录项”。每个目录登记项占用32个字节,分为8个区域,提供有关文件或子目录的信息。其中包括了DOS的系统文件(IO.SYS、MSDOS.SYS、和COMMAND.COM)的目录项。
    常用软盘的根目录(FDT)所在逻辑扇区如下:
    360KB:5--11扇区,共7个扇区
    1.2MB:15--28扇区,共14个扇区
    1.44MB:19--32扇区,共14个扇区
    在硬盘中,各逻辑盘的根FDT的起始逻辑扇区由分区容量确定。在FAT16中,其大小总是32(20H)个扇区。FAT32中的根FDT大小与其逻辑盘容量有关。
    下面是用DEBUG读出1.44MB软盘逻辑13H扇区开始的14个扇区内容的例子。
    C>DEBUG
    -L 00 0 13 E
    -D 00
    0DE5:0000 49 4F 20 20 20 20 20 20-53 59 53 27 00 00 00 00 IO SYS'....
    0DE5:0010 00 00 00 00 00 00 C0 32-BF 1C 1D 00 46 9F 00 00 ......2...F.....
    0DE5:0020 4D 53 44 4F 53 20 20 20-53 59 53 27 00 00 00 00 MSDOS SYS'....
    0DE5:0030 00 00 00 00 00 00 C0 32-BF 1C 6D 00 FA 94 00 00 .......2 ..m...
    0DE5:0040 43 4F 4D 4D 41 4E 44 20-43 4F 4D 20 00 00 00 00 COMMAND COM..
    0DE5:0050 00 00 00 00 00 00 C0 32-BF 1C B8 00 75 D5 00 00 .......2 ..u...
    2.FDT中的目录项
    根目录下的所有文件及其子目录在根目录的文件目录表(FDT)中都有一个“目录登记项”或简称为“目录项”。
    由于每个文件的目录登记项占用32个字节,用作目录的一个扇区(512字节)最多只能装入512/32=16个文件。因此,在常用磁盘的根目录下最多可建文件或子目录数如下:
    360 KB: 共7个扇区, 7*16=112个文件或子目录。
    1.2 MB: 共14个扇区,14*16=224个文件或子目录。
    1.44MB: 共14个扇区,14*16=224个文件或子目录。
    硬盘逻辑盘:共32个扇区,16*32=512个文件或子目录。
    在FDT中,每个目录登记项占用32个字节,分为8个区域,提供有关文件或子目录的信息,包括DOS的系统文件IO.SYS、MSDOS.SYS的目录项。
    在FAT16文件系统中,一个文件目录登记项32个字节中个字节的内容及含义如表6-6所示。
    表6-6 FAT16文件目录项内容及含义表

    字节位置 内  容  及  含  义
    第0--7字节 表示文件名
    第8--10字节 表示文件的扩展名
    第11字节

    00H(读写)
    01H(只读)
    02H(隐藏)
    04H(系统)
    08H(卷标)
    10H(子目录)
    20H(归档——只要完成了写操作并已关闭,则该位置1)
    第12--21字节 保留未用
    第22--23字节 表示文件的创建时间
    第24--25字节 表示文件的创建日期
    第26--27字节 表示文件的起始簇号(首簇号)
    第28--31字节 表示文件的字节数


    FAT16文件系统对每个文件来说其数据结构是一个单项簇链表,而文件在文件目录表FDT中占一个文件目录项,每个文件的首簇号就存放在该文件的目录项中,一个文件目录项占32个字节。对FDT中一个文件目录项的几个参数值作如下说明:
    (1)文件名
    FAT16文件系统中,FDT的文件目录项中第0-7字节为文件名(若有剩余字节则用空白符20H填充)。其中,第1字节又表明了该文件的状态,它有如下3种取值方式:
    ·00H目录项的空表目。
    ·E5表示该目录项曾经使用过,但文件已被删除。
    ·2E表示该项为子目录项。
    其它任何字符表示一个文件名(或子目录名)的第一个字符的ASCII码值。
    (2)文件属性
    第11字节为文件属性字节,按位规定如下:

    b7 b6 b5 b4 b3 b2 b1 b0

    未用

    未用

    归档

    子目录

    卷标

    系统

    隐藏

    只读


    (3)文件创建(修改)时间
    ·(第22字节0--4位)以2秒为增量的二进制树
    ·(23字节0--2位)+(22字节5--7位)为分钟
    ·(第23字节3--7位)为小时
    (4)文件创建(修改)日期
    ·(第24字节0--4位)为日期1--31
    ·(25字节0位)+(24字节5--7位)为月份1--12
    ·(第25字节1--7位)为年号0--119(1980--2099)
    (5)文件首簇号
    第26、27 字节存放该文件的首簇号。系统根据FAT中该文件的单链表即可找到它的全部内容。
    要注意区分文件目录表(FDT)和FDT中的目录登记项这两个概念。
    目录登记项是一个32字节长的数据块,它记录了一个文件或子目录的有关信息。FDT是由若干目录登记项组成的一个表。根目录区是盘卷上的一个固定区域,根目录及各子目录都有各自的FDT

  • 相关阅读:
    2. Add Two Numbers
    1. Two Sum
    22. Generate Parentheses (backTracking)
    21. Merge Two Sorted Lists
    20. Valid Parentheses (Stack)
    19. Remove Nth Node From End of List
    18. 4Sum (通用算法 nSum)
    17. Letter Combinations of a Phone Number (backtracking)
    LeetCode SQL: Combine Two Tables
    LeetCode SQL:Employees Earning More Than Their Managers
  • 原文地址:https://www.cnblogs.com/ahuo/p/416291.html
Copyright © 2011-2022 走看看