硬盘与文件系统

2018-05-28  本文已影响0人  楠昭

0x01数据的温床----硬盘

我们都知道计算机中的数据都存储在硬盘上,那么硬盘的物理组成和逻辑结构是怎样的呢?

磁头(0-1023)
柱面(0-255)
扇区(0-63)
因此CHS参数可以寻址的磁盘最大容量为
256102463*512/1048576 = 8064 MB(1M=1048576 Bytes)

0x02什么是文件系统

程序运行时需要读取数据,用户也需要将数据存放在固定的地方,但是作为用户并不能直接操作磁盘,这就引出了文件系统——一种磁盘的抽象形式,便于用户使用,也就是说文件系统将其接触到的物理特性转化为用户看得见的路径名和文件名,从而用户不用和磁盘打交道就能操作文件。

下面用虚拟机中的一个FAT32格式的磁盘来具体学习一下这种文件系统,先看一下引导扇区基本情况

引导扇区信息
重要信息:
  1. 每个扇区512字节
  2. 每簇16个扇区即8192B=8KB【相当于地址偏移2000】
  3. 保留扇区38个
  4. FAT表大小为10901个扇区,即10901*512B【相当于偏移552a00】

0x03 FAT32文件系统

FAT32文件系统组成
名词解释

每部分功能

随后从编号3的簇开始如果需要存储大的文件,就会形成簇链表,其形成方式就是将下一个簇号写在该处,最后一簇结束标志为0x0FFFFFF


如本例中从第三簇开始到第五簇为一个簇链

上面形成的簇链是从第三簇开始到第五簇结束,第三簇起始地址为【根目录偏移+一簇偏移=aaa000+2000=aaac00]


第三簇起始地址

存储文件时流程

  1. 按照文件大小定位足够空闲簇
    比如在当前磁盘根目录下存放一个名为test.txt的文件,其大小为1KB,但是也会占用一个簇

  2. 创建目录项


    test.txt的目录项信息,对照上面表一信息可知文件首簇号为00000003
  1. 在FAT表中构建簇链表


    FAT表中簇号为3的簇存放test.txt的内容
  2. 在对应分配的簇中写入数据
    相对根目录的偏移为2000*(3-2)=2000,使用winhex中跳转功能从根目录跳转2000到数据区看到具体的数据。


    数据

0x04 删除文件后的恢复原理

  1. 将首簇高位修改
  2. FAT表中的簇链表清空
  3. 文件数据并无变化(PS:但此时这些区域可以被覆盖)
上一篇 下一篇

猜你喜欢

热点阅读