文件目录表(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
文件目录表(FDT)及其结构相关推荐
- 数据结构和算法:(3)3.1线性表的顺序存储结构
-----------------------1.线性表基础操作------------------------ 线性表:(List)由零个或多个数据元素组成的有限序列. 首先他是一个序列,元素之间是 ...
- 【数据结构】邻接表的储存结构 建立图的邻接表算法
[数据结构]邻接矩阵及其实现 一个图的邻接矩阵的表示是唯一的,但其邻接表表示不唯一,这是因为在邻接表结构中,各便表结点的链接次序取决于建立邻接表时的算法以及输入的次序. 一般而言邻接矩阵适合存储稠密图 ...
- 线性表的存储结构总结
线性表 分为:顺序表 和 链表(单链表,双链表,循环链表(单双),静态链表) 顺序表的存储结构 :设MaxSize为一个整形常量 需要: 定义一个数组来存储线性表中的元素 定义一个整型变量来存储线性表 ...
- HBase表结构设计(结构、创建、压缩、分区、命名空间等)
HBase表结构设计(结构.创建.分区.命名空间等) 任务表述: 如果用户点击某一行数据则触发接口写数据进入HBase.那么当用户再次读取数据的时候数据A和数据B返回的数据就需要给返回的数据另外增加一 ...
- C和C++线性表的顺序存储结构
C和C++线性表的顺序存储结构 基本概念 设计与实现 优点和缺点 基本概念 设计与实现 插入元素算法 判断线性表是否合法 判断插入位置是否合法 把最后一个元素到插入位置的元素后移一个位置 将新元素插入 ...
- 【数据结构总结】第四章:串、数组和广义表(线性结构)
第四章:串.数组和广义表(线性结构) 提示:本文主要是以思维导图的形式概括数据结构第一章的精华内容,基本不会用到文字性的内容,目的是为了给大家梳理每个重要的知识点的相关概念,方便大家在复盘的时候快速阅 ...
- MySQL—通过Adjacency List(邻接表)存储树形结构
转载自:Mysql通过Adjacency List(邻接表)存储树形结构 今天来看看一个比较头疼的问题,如何在数据库中存储树形结构呢?像mysql这样的关系型数据库,比较适合存储一些类似表格的扁平化数 ...
- 《数据结构》c语言版学习笔记——线性表的顺序存储结构
线性表的顺序存储结构 第一章 线性表的顺序存储结构 文章目录 线性表的顺序存储结构 前言 一.顺序存储结构的建立 1.条件 2.代码 二.顺序存储结构的获得元素 1.条件 2.代码 三.顺序存储结构的 ...
- 线性表的顺序存储结构之顺序表类的实现_Java
在上一篇博文--线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构--顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...
最新文章
- mutations vuex 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...
- 【BZOJ1016】【Luogu P4208】 [JSOI2008]最小生成树计数 最小生成树,矩阵树定理
- 16年前卖猪肉的北大高材生如今怎么样了?
- 【译】Beyond Snarks: Some Blockchain Privacy Protocols You Need to Know About
- javascript --- 优先级执行顺序
- 【渝粤教育】国家开放大学2018年春季 0184-21T行政职业能力 参考试题
- 导览系统定制开发_联联周边游系统源码定制开发平台方案
- Java Web学习总结(15)——JSP指令及使用相关总结
- 入参对象有LocalDateTime类型的参数,swagger该如何传参
- 设置Emeditor为Python的简易开发工具
- 手机通信录扫名片识别内容技术SDK
- python暴力破解压缩密码?
- 恶意程序检测之malconv模型
- 2022年全新PHP程序开发在线工单管理系统源码,售后工单系统
- 深度学习第J6周:ResNeXt-50实战解析
- CPSR SPSR
- dns劫持是什么意思?常见的劫持有哪些?
- Serverless开源框架对比
- ajax 一个完整的ajax请求
- Packet Tracer - 配置 EtherChannel
热门文章
- Microsoft Dynamics server 2015 所有的SQL server 2012 视图 介绍及功能
- c++11 线程:让你的多线程任务更轻松
- shell逐行读取文件
- 比特币继续回撤,BCH异动,警惕一日游行情
- Roger Ver:BCH也可成为价值储备
- Android系统编译时集成三方APK
- VirtualBox6.0中CentOS7.6 网络配置
- 小白的 --Vuex 入门理解
- 《计算机网络课程设计(第2版)》——3.4节课程设计分析
- struts2 标签中read-only=true 和disabled的区别