建立和修改一个文件时的内部处理过程
现准备在磁盘上新建一个名为TEST.TXT的文件。假设在该文件建立前,FAT表(设表项为12位)中的部分内容如下图所示(FAT表中前两个表项的内容FFD和FFF为系统内部所使用):
FAT表项内容: FFD FFF 000 000 006 000 FFF FF7 …
FAT表项编号: 000 001 002 003 004 005 006 007 …
1. 初始建立文件时
(1)首先为该文件在文件目录表中建立一个32字节的表项,并登记文件名等信息。
(2)然后在FAT表中查找内容为0的表项,假设第002个表项为所找到的第一个未用簇,则002号簇将作为该文件的首簇号。将首簇号登记在刚建立的文件目录表表项中。
(3)将文件首簇的实际内容(假设内容为“abc…”)写入数据区中002号簇所对应的各扇区中。
(4)修改FAT表,将第002号表项的内容改为FFFH,表示002号簇是该文件的尾簇。
(5)将文件属性(带归档标志)、日期、时间、文件长度等登记在文件目录表相应表项中。
文件目录表项:TEST TXT … 首簇号002
FAT表项内容: FFD FFF FFF 000 006 000 FFF FF7 …
FAT表项编号: 000 001 002 003 004 005 006 007 …
文件数据区
数据区中内容: 引导记录 FAT表 FAT表备份 根目录表 abc…
002簇
2. 文件内容增加,需再分配一个新簇时
(1)在FAT表中查找内容为0的表项,本次第003个表项为所找到的第一个未用簇,则003号簇将作为该文件下一簇的簇号。
(2)修改FAT表:将第002个表项(文件原来的尾簇号)的内容改为003,表示002号簇的后继簇号是003。
(3)将文件的新增内容(假设内容为“mno…”)写入数据区中003号簇所对应的各扇区中。
(4)修改FAT表:将第003号个表项的内容改为FFFH,表示003号簇是文件的尾簇。
(5)将新的属性(带归档标志)、日期、时间、文件长度等信息登记在文件目录表相应表项中。
文件目录表项:
TEST TXT … 首簇号002
FAT表项内容: FFD FFF 003 FFF 006 000 FFF FF7 …
FAT表项编号: 000 001 002 003 004 005 006 007 …
文件数据区
数据区中内容: 引导记录 FAT表 FAT表备份 根目录表 abc… mno…
002簇 003簇
3. 文件内容继续增加,需再分配一个新簇时
本次在FAT表中找到的第一个未用簇位于第005个表项中,所以005号簇是该文件的下一簇的簇号。整个处理过程与对刚才分配003号簇时类似。如下图所示(假设本次新增内容为“xyz…”):
文件目录表项:
TEST TXT … 首簇号002
FAT表项内容: FFD FFF 003 005 006 FFF FFF FF7 …
FAT表项编号: 000 001 002 003 004 005 006 007 …
文件数据区
数据区中内容: 引导 FAT FAT备份 根目录表 abc… mno… … xyz…
002簇 003簇 004簇 005簇
4. 至此,该文件共占用簇号分别为002,003,005的三个簇。
其中003号簇与005号簇之间存在文件碎片(006号簇先前已被其它文件占用)。
转自CSDN论坛!
阅读(1136) | 评论(0) | 转发(0) |