Linux的文件系统

文件控制块

文件控制块即为FCB,Linux为inode结构。

  

不同的文件名指向相同的inode节点 ,文件A和文件B就是上述情况,基于索引节点的共享。

文件目录

文件与文件控制块是一一对应的。 文件控制块的有序集合构成文件目录,每个目录项即是一个文件控制块。 给定一个文件名,通过查找文件目录便可找到该文件对应的目录项,目录项即为文件控制块。

目录文件 

为了实现文件目录的长期保存和管理,通常将文件目录以文件的形式保存在外存空间,这个文件就被称为目录文件。 目录文件是长度固定的记录式文件。

当前目录

一个多层次的树形文件目录结构中,如果每次都从根结点开始检索,很不方便,通常各目录文件放在外存,故影响访问速度,尤其是当层次较多时检索要耗费很多时间。 为克服这一缺点,引入当前目录, 系统为用户提供一个目前正在使用的工作目录,称为当前目录。 查找文件时既可以从根目录开始,也可以从当前目录开始向下检索。 若从当前目录开始,路径名只要给出从当前目录开始到所要访问文件的相对路径名即可。这样检索路径缩短,可以有效地提高检索速度。

虚拟文件系统 

虚拟文件系统即VFS,对用户程序隐去各种不同文件系统的实现细节,为用户程序提供一个统一的、抽象的、虚拟的文件系统界面。

虚拟文件分为三层:第一层为文件系统接口层,如open、write、close等系统调用接口。 第二层为VFS (Virtual File System)接口层。该层有两个接口:一个是与用户的接口;一个是与特定文件系统的接口。VFS与用户的接口将所有对文件的操作定向到相应的特定文件系统函数上。VFS与特定文件系统的接口主要是通过vfs-operations来实现的。 第三层是具体文件系统层,提供具体文件系统的结构和实现。打开设备文件的过程:,start_kernel中trap_init()函数调用set_system_trap_gate初始化系统调用,绑定0x80向量和system_call中断服务程序。根据文件的路径名查找的设备文件,调用库函数中的open函数打开此文件,open()函数触发int &0x80中断,将ss:esp、eflags、cs:eip压到内核栈中,SAVE_ALL保存现场,找到中断描述符表,用段描述符和偏移量装载cs:eip。即中断服务程序入口地址。根据eax的值找到系统调用表中的sys_open,接着继续调用内核处理函数sys_open。文件被打开的过程中,要根据给定的文件路径名搜索目录结构,一旦文件被找到,文件的FCB被复制到内存里的系统打开文件表里。该表不仅存储FCB,还记录打开该文件的进程数。接着,在进程打开文件表里创建一个指针字段,指向系统打开文件表里相应的表项。 打开文件的系统调用返回(fd)指向进程打开文件表相应项的指针,以后文件的操作都通过这个指针进行。

系统打开表

包含每个已打开文件的FCB的副本,以及其他信息。Linux中每打开一个文件,都会创建一个系统打开表,每个文件都会有一个系统打开表,都有偏移量。但是父子进程共享例外。例如先打开一个父文件,再fork一个子进程,此时两个进程共享一个系统打开表。

超级块对象。存放文件系统相关信息:例如文件系统控制块。

三、驱动和文件系统对设备的管理为什么会转化为对设备文件的管理?

注册文件系统类型

每一个文件系统都有一个初始化函数,向VFS注册, 填写文件系统注册表file_system_type,注册表记录了该文件系统的类型名、指向VFS超级块读取函数的地址。在系统初始化期间,register_filesystem()用来注册编译时指定的每个文件系统,相应的文件系统对象被插入到file_systems链表中。

注册设备驱动程序

注册一个设备驱动程序意味着把它与对应的设备文件连接起来 使得对设备文件发出的系统调用可以由内核转化为相应的设备驱动程序对应的函数 ,访问一个没有注册设备驱动程序的设备文件将会返回错误码。

执行设备文件

Linux将硬件设备看作一个特殊的文件来操作,该文件被称为设备文件;系统通过对设备文件的读写等操作,实现对外设的读写等操作。

四、为什么挂载前要先注册文件系统?

注册文件系统会在文件系统注册表file_system_type,填写指向VFS超级块读取函数get_sb的地址。挂载前会调用get_sb()函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值