Linux文件系统与案例详解及源码导读.doc

Linux文件系统与案例详解及源码导读.doc

ID:55923933

大小:38.33 KB

页数:17页

时间:2020-06-15

Linux文件系统与案例详解及源码导读.doc_第1页
Linux文件系统与案例详解及源码导读.doc_第2页
Linux文件系统与案例详解及源码导读.doc_第3页
Linux文件系统与案例详解及源码导读.doc_第4页
Linux文件系统与案例详解及源码导读.doc_第5页
资源描述:

《Linux文件系统与案例详解及源码导读.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、[文件系统]Linux文件系统—源代码导读众所周知,文件系统是Unix系统最基本的资源。最初的Unix系统一般都只支持一种单一类型的文件系统,在这种情况下,文件系统的结构深入到整个系统内核中。而现在的系统大多都在系统内核和文件系统之间提供一个标准的接口,这样不同文件结构之间的数据可以十分方便地交换。Linux也在系统内核和文件系统之间提供了一种叫做VFS(virtualfilesystem)的标准接口。这样,文件系统的代码就分成了两部分:上层用于处理系统内核的各种表格和数据结构;而下层用来实现文件系统本身的函数,

2、并通过VFS来调用。这些函数主要包括:*管理缓冲区(buffer.c)。*响应系统调用fcntl()和ioctl()(fcntl.candioctl.c)。*将管道和文件输入/输出映射到索引节点和缓冲区(fifo.c,pipe.c)。*锁定和不锁定文件和记录(locks.c)。*映射名字到索引节点(namei.c,open.c)。*实现select()函数(select.c)。*提供各种信息(stat.c)。*挂接和卸载文件系统(super.c)。*调用可执行代码和转存核心(exec.c)。*装入各种二进制格式(

3、bin_fmt*.c)。VFS接口则由一系列相对高级的操作组成,这些操作由和文件系统无关的代码调用,并且由不同的文件系统执行。其中最主要的结构有inode_operations和file_operations。file_system_type是系统内核中指向真正文件系统的结构。每挂接一次文件系统,都将使用file_system_type组成的数组。file_system_type组成的数组嵌入到了fs/filesystems.c中。相关文件系统的read_super函数负责填充super_block结构。----

4、----------------------------------------------------------------------------源码导读*Linux如何维护它支持的文件系统中的文件*描述了虚拟文件系统(VirtualFileSystemVFS)*解释了Linux核心中真实的文件系统如何被支持Linux的一个最重要的特点之一使它可以支持许多不同的文件系统。这让它非常灵活,可以和许多其他操作系统共存。在写作本章的时候,Linux可一直支持15种文件系统:ext、ext2、xia、minix、u

5、msdos、msdos、vfat、proc、smb、ncp、iso9660、sysv、hpfs、affs和ufs,而且不容置疑,随着时间流逝,会加入更多的文件系统。在Linux中,象Unix一样,系统可以使用的不同的文件系统不是通过设备标识符(例如驱动器编号或设备名称)访问,而是连接成一个单一的树型的结构,用一个统一的单个实体表示文件系统。Linux在文件系统安装的时候把它加到这个单一的文件系统树上。所有的文件系统,不管什么类型,都安装在一个目录,安装的文件系统的文件掩盖了这个目录原来存在的内容。这个目录叫做安装

6、目录或安装点。当这个文件系统卸载的时候,安装目录自己的文件又可以显现出来。当磁盘初始化的时候(比如用fdisk),利用一个分区结构把物理磁盘划分成一组逻辑分区。每一个分区可以放一个文件系统,例如一个EXT2文件系统。文件系统在物理设备的块上通过目录、软链接等把文件组织成逻辑的树型结构。可以包括文件系统的设备是块设备。系统中的第一个IDE磁盘驱动器的第一个分区,IDE磁盘分区/dev/hda1,是一个块设备。Linux文件系统把这些块设备看成简单的线性的块的组合,不知道也不去关心底层的物理磁盘的尺寸。把对设备的特定

7、的块的读的请求映射到对于设备有意义的术语:这个块保存在硬盘上的磁道、扇区和柱面,这是每一个块设备驱动程序的任务。一个文件系统不管它保存在什么设备上,都应该用同样的方式工作,有同样的观感。另外,使用Linux的文件系统,是否这些不同的文件系统在不同的硬件控制器的控制下的不同的物理介质上都是无关紧要的(至少对于系统用户是这样)。文件系统甚至可能不在本地系统上,它可能是通过网络连接远程安装的。考虑以下的例子,一个Linux系统的根文件系统在一个SCSI磁盘上。AEbootetclibopttmpusrCFcdromfd

8、procrootvarsbinDbindevhomemntlost+found不管是操作这些文件的用户还是程序都不需要知道/C实际上是在系统的第一个IDE磁盘上的一个安装的VFAT文件系统。本例中(实际是我家中的Linux系统),/E是次IDE控制器上的masterIDE磁盘。第一个IDE控制器是PCI控制器,而第二个是ISA控制器,也控制着IDECDROM,这些也都无关

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。