【块位图bitmap】:即每一个块中标记了一个逻辑单元(即一个bit标记一个逻辑单元)存储位为1表示已经使用,存储位为0表示没有使用。是加速查找空闲磁盘块的一种机制。
其实在元数据存储区中其间已经制定了一段固定区域来存储“编目“。假设文件特别多,当我们新建一个文件时,就要在”编目”中保存对于的位置信息。假设一个编目的空间有10M,那么要知道这个编目中有哪些空间是已经标记了文件,哪些空间还没有标记文件。就为编目也要创建一个位图:那么位图中对应了编目中的每一个条目即”索引结点inode”:
【inode(inodexnode)索引结点】:inode中存放了文件的ID号,对应文件的权限,属主和属组,大小,时间戳等。唯独没有的就是“文件名“。
假如一个文件特别大,在inode一个条目中无法全部都标识该文件所使用的所有逻辑单元(也称磁盘块),那么inode中还可以向创建磁盘分区一样标记一个指针来指向下个inode号,说明该inode号中所标识的逻辑单元(也称磁盘块)也是和他同一个文件。那么这样的inode条目就像扩展分区一样。相当于一个间接目录,在文件系统中有二级间接目录,三级间接目录…….那么在一个条目里面,无论通过直接的或间接引用,最终能引用多少个间接inode决定了单个文件最终有多大。即,一个条目的存储空间中能存放多少条索引结点(inode)号,一个索引结点最多能引用多少个逻辑单元。
在有些分区上所说的最大支持单个文件大小最大为多少多少G就是靠这个来决定的。
向FAT32文件系统最大支持为4G
我们通常所说的目录(即文件夹)也是文件,那么上面inode号中没有存储的文件名都存放在目录(即文件夹)中,文件夹自身也有大小(这里的大小不是文件夹里面存放文件的大小和,而是文件夹名,和文件名所占字节的大小和)。这里要注意的是目录也是个文件,所有目录也需要占据磁盘块即(上面说的逻辑单元)。在目录的磁盘块(逻辑单元)中所存储的信息分为两段,第一段为inode号码即:(inode编目中的一个编目号码(相当于一个文件的索引)),这个inode号码对应的文件名。如下图:

在linux系统中根是自引用的,即cpu可以直接访问到根。那么要寻找\tmp\wenjian.txt个文件,则cpu先找到根即(\)目录(即文件夹)所对应的磁盘块(逻辑单元),然后然后在这个磁盘块中(逻辑单元)找到tmp文件名所对应的inode号码,然后拿着这个号码去编目中寻找inode(索引结点)号码所对应的磁盘块地址(即逻辑单元),这个磁盘块(逻辑单元)中找到wenjian.txt文件名所对应的inode(索引结点)号码,再更具这个inode(索引结点)号码去编目中寻找inode(索引结点)所对应的磁盘块(逻辑单元)(可能有多个磁盘块),然后将这些磁盘块中所记录的二级制0101代码。就是该文件的内容。即wenjian.txt的内容。
注意:在文件系统中每一个文件都对应一个inode(索引结点)。
【创建文件原理】
有了上面的逻辑,假设要在/tem/ftp/目录下创建一个文件叫wenjian.txt。那么程序首先要找到tmp目录的磁盘块,然后在根据ftp所对应的inode号码找到ftp目录的磁盘块,在该磁盘块中添加一条信息,记录系统给该文件在编目中申请的inode编号,和该文件的文件名。在编目中除了记录inode编号外还要记录系统给该文件通过扫描“块位图bitmap“给改文件分配的空闲磁盘块地址。然后再将文件内容写入到该文件inode号码所对应的磁盘块中。
【复制文件原理】
有了上面创建文件的原理,那么复制文件的原理几乎和创建文件的原理一样,这里不再做说明。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shouji/article-62080-4.html
再一个盗版盛行
快要过生日啦