在之前的【Linux取经路】文件系统之被打开的文件——文件描述符的引入一文中讨论了被打开的文件,今天讨论的话题则是没有被打开的文件。文件即是文件内容加文件属性,没打开的文件一定是存储在磁盘上的,并且 Linux 是将文件的属性和内容分开存储。文件内容以数据块的形式进行存储,文件属性以 inode 的形式进行存储。
最终一个磁盘可以看作是基于扇区的数组,每一个扇区都对应有一个下标来唯一标识。通过这个下标(LBA 逻辑扇区所在),再联合每一面磁道的个数和每一个磁道上扇区的个数就可以定位到该扇区在磁盘上的位置(CHS所在)。 小Tips:不但 CPU 有寄存器,其它外设也有,磁盘中也有寄存器。比如:控制寄存器,用来存储 CPU 下发的读写指令;数据寄存器,存储要写入的磁盘的数据;所在寄存器,存储 CPU 传送来的 LBA 所在;状态寄存器,存储磁盘的状态,操纵系统通过检查该状态寄存器去判断读写是否成功。 三、操纵系统对磁盘的使用
上图为 Linux ext2 磁盘文件系统图(内核内存映像肯定有所不同),磁盘是典型的块装备,操纵系统首先会对磁盘进行分区,就如我们电脑中的 C 盘和 D 盘。接着,磁盘分区被划分为多少个块组(Block group),每个块组中有许多块(block),一个 block 的巨细是由格式化的时候确定的,并且不可以更改,常见的是 4KB,即 4096字节。
软链接是一个独立的文件,有独立的 inode,也有独立的数据块,它的数据块里面存的是指向文件的路径。软链接非常像 Windows 中的快捷方式。软链接的使用场景:一样平常发布的可实行程序大概存在一个较深的路径下面,要实行它的话就必要带很长一串路径,显得十分麻烦,此时我们就可以创建一个软链接指向该可实行文件,之后要想运行该可实行程序就直接去实行软链接即可。