Chinaunix首页 | 论坛 | 博客
  • 博客访问: 811658
  • 博文数量: 172
  • 博客积分: 3836
  • 博客等级: 中校
  • 技术积分: 1988
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-10 14:59
文章分类

全部博文(172)

文章存档

2014年(2)

2013年(1)

2012年(28)

2011年(141)

分类: LINUX

2011-06-01 14:50:28

建立和修改一个文件时的内部处理过程

现准备在磁盘上新建一个名为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) |
给主人留下些什么吧!~~