文件在没有被打开的情况下一般都是存放在存储设备中,比如硬盘、U盘等存储设备。静态文件则是指:存放在磁盘文件系统中,并且以一种固定的形式进行存放的文件。
文件储存在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector),每个扇区储存512字节(相当于 0.5KB),操作系统读取硬盘的时候,不会一个一个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八个sector组成一个block。
静态文件对应的数据都是存储在磁盘设备不同的“块”中。
磁盘在进行分区、格式化的时候会分为两个区域,一个是数据区,用于存储文件中的数据;另一个是inode区,用于存放inode table(inode表),inode table中存放的是一个一个的inode(也叫做inode节点),不同的inode就可以表示不同的文件,每一个文件都必须对应一个inode,inode实质上是一个结构体,这个结构体中有很多的元素,不同的元素记录了文件的不同信息,譬如文件字节大小、文件所有者、文件对应的读/写/执行权限、文件时间戳(创建时间、更新时间等)、文件类型、文件数据存储的block(块)位置等信息。
inode table表本身也需要占用磁盘的存储空间。每一个文件都有唯一的inode,每
一个inode都有一个与之相对应的数字编号,通过这个数字编号就可以找到inode table中所对应的inode。在Linux系统下,可以通过"ls -i"命令查看文件的inode编号:
$ ls -i
5374043 ftest  5374017 test  5374045 test.c
打开一个文件,系统内部会将这个过程分为三步:
① 系统找到这个文件名所对应的inode编号。
② 通过inode编号从inode table中找到对应的inode结构体。
③ 根据inode结构体中记录的信息,确定文件数据所在的block,并读出数据。

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Powered by Discuz! X3.5  © 2001-2013 Comsenz Inc.