Linux文件系统装载探究

时间:2022-05-23 09:38:08

Linux文件系统装载探究

摘要:Linux系统在信息化建设中的应用范围也越来越广,linux文件系统在这些应用中担负着极其重要的任务,数据的存储处理与文件系统密不可分,如何真正理解linux文件系统的工作原理,尤其是linux文件系统的完整装载过程,对提高linux系统的应用水平、认识编程类课程及数据结构课程的重要性等意义重大。

关键词:Linux系统;文件系统;VFS

中图分类号:TP316 文献标识码:A 文章编号:1007-9599 (2012) 15-0000-01

1 引言

Linux是一个免费的操作系统,用户免费获得其源代码,而且允许随意修改。它是在共用许可证GPL保护下的自由软件,也有几种版本,如Red Hat Linux、Slackware,以及国内的Xteam Linux等。Linux具有许多Unix系统的功能和特点,能够兼容Unix,但无需支付Unix高额的费用。

目前,Linux技术已经成为IT技术发展的热点,从事Linux技术研究的社区、研究机构和软件企业逐年增多,支持Linux的软件、硬件制造商和解决方案提供商也快速增加,Linux在信息化建设中的应用范围也越来越广。随着整个Linux产业的发展,Linux技术也处在快速的发展过程中,形成了若干技术热点。由于任何一个操作系统都必须提价有效手段来管理外存及其上的数据,而这些功能主要由操作系统的文件系统功能来完成的,因此深入理解linux的文件系统装载过程对提高linux系统的应用水平有重要的意义。

2 Linux系统的文件与虚拟文件系统VFS

“一切皆是文件”是Unix/Linux的基本哲学之一[1]。不仅普通的文件,目录、字符设备、块设备等在Unix/Linux中都是以文件被对待;即使类型不同,仍然可以在同一套操作界面运行。Linux中允许不同的文件系统共存。如图1所示,我们可以使用cp命令从vfat文件系统格式的硬盘拷贝数据到ext3文件系统格式的硬盘;而这样的操作涉及到两个不同的文件系统。

而虚拟文件系统正是实现上述两点Linux特性的关键所在。虚拟文件系统(Virtual File System,简称VFS),是Linux内核中的一个软件层,用于给用户空间的程序提供文件系统接口;同时,它也提供了内核中的一个抽象功能,允许不同的文件系统共存[2]。系统中所有的文件系统在VFS和VFS中工作。为了能够支持各种实际文件系统,VFS定义了所有文件系统都支持的基本的、概念上的接口和数据结构;同时也提供VFS所期望的抽象接口和数据结构,将自身的诸如文件、目录等概念在形式上与VFS的定义保持一致。实际文件系统在统一的接口和数据结构下隐藏了具体的实现细节,所以在VFS层和内核的其他部分看来,所有文件系统都是一样的。图2显示了VFS在内核中与实际的文件系统的协同关系。

这里要特别注意有关文件系统的三个重要概念:即(1)创建。以某种方式格式化磁盘的过程就是在其之上建立一个文件系统的过程。创建文现系统时,会在磁盘的特定位置写入关于该文件系统的控制信息。(2)注册。向内核报到,声明自己能被内核支持。一般在编译内核的时候注册;也可以加载模块的方式手动注册。注册过程实际上是将表示各实际文件系统的数据结构struct file_system_type实例化。(3)安装。也就是我们熟悉的mount操作,将文件系统加入到Linux的根文件系统的目录树结构上;这样文件系统才能被访问。

3 Linux文件系统装载过程

Linux以一组通用对象的角度看待所有文件系统。这些对象是超级块、inode、dentry和文件。文件系统中管理的每个对象在Linux中表示为一个inode。inode包含管理文件系统中的对象所需的所有元数据。另一组结构称为dentry,它们用来实现名称和inode之间的映射,有一个目录缓存用来保存最近使用的dentry。dentry还维护目录和文件之间的关系,从而支持在文件系统中移动。最后,VFS文件表示一个打开的文件。安装linux文件系统的过程就是创建VFS超级块的过程,也就是在VFS的目录树中向其中某个目录上挂载一个文件系统的过程。

安装初始过程由sys_mount()系统调用函数发起,该函数原型声明如下:asmlinkage long sys_mount(char*dev_name,char*dir_name,char*type,unsigned long flags,void*data);例如:我们准备将来自主硬盘第2分区(hda2)上的ext2文件系统安装到前面创建的"/dev"目录中。那么对于sys_mount()函数的调用便具体为:sys_mount("hda2","/dev","ext2",…);在新的文件系统加载之后,内核链表file_systems及相关数据结构会有相应变化,有关内容限于篇幅在此不一一详述。读者可参考文献[3]。

4 结束语

本文针对Linux系统在应用领域的扩张趋势,分析了Linux文件系统的创建,注册及安装的全过程,从内核上深入剖析Linux文件系统的含义,解释了虚拟文件系统VFS在linux文件系统安装及文件管理中的重要作用,它保证了linux系统中“一切皆是文件”的实现,同时由于Linux系统文件安装过程伴随着内存上各类数据结构的及链表的相应变化,因此,分析linux文件系统的安装还有助于加深对编程类课程及数据结构类课程重要性的认识。

参考文献:

[1]周巍松.Linux系统分析与高级编程技术[M].北京:机械工业出版社,1999

[2]Warren W.Gay.Linux Programming in 24 Hours[M].北京:机械工业出版社,2000

[3]郭玉东,王非非.Linux操作系统结构分析[M].西安:西安电子科技大学出版社会,2002

[作者简介]吴伟美(1981-),女,广东梅州人,广东科学技术职业学院教师,网络助理工程师,研究方向,网络与计算机应用。

上一篇:山西忻州神达能源集团有限公司局域网建设模拟... 下一篇:课程改革下中职计算机基础课教学反思