第2课文件系统管理及设备管理.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2课文件系统管理及设备管理

第2章Linux内核 ——文件系统管理 Linux文件系统 文件系统:文件存在的物理空间,Linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。 Linux文件系统使用索引节点来记录文件信息,系统给每个索引节点分配了一个号码,称为索引节点号。文件系统正是靠这个索引节点号来识别一个文件。 虚拟文件系统的引入 Linux最初采用minix的文件系统,其大小限于64MB,文件名长度也限于14个字节。 Linux经过一段时间的改进和发展,特别是吸取了Unix文件系统的经验,最后形成了现在的ext2文件系统。 为了支持其他各种不同的文件系统,Linux提供了一种统一的框架,就是所谓的虚拟文件系统转换(Virtual Filesystem Switch),简称虚拟文件系统(VFS)。 虚拟文件系统的引入 虚拟文件系统的引入 VFS只存在于内存中,它在系统启动时产生,在系统关闭时注销。 VFS的作用就是屏蔽各类文件系统的差异,给用户、应用程序,甚至Linux管理模块提供一个统一的界面。 管理VFS数据结构的组成部分主要包括超级块和inode。 VFS的功能 记录可用的文件系统的类型 将设备同对应的文件系统联系起来 处理一些面向文件的通用操作 VFS中的数据结构 超级块(superblock)对象: 存放系统中已安装文件系统的有关信息。 索引节点(inode)对象: 存放关于具体文件的一般信息。 目录项(dentry)对象: 存放目录项与对应文件进行链接的信息 文件(file)对象: 存放打开文件与进程之间进行交互的有关信息。 VFS的超级块 超级块用来描述整个文件系统的信息。每个具体的文件系统都有各自的超级块。 VFS超级块是各种具体文件系统在安装时建立的,并在卸载时被自动删除,其数据结构是 super_block 所有超级块对象以双向环形链表的形式链接在一起 与超级块关联的方法就是超级块操作表。这些操作是由数据结构super_operations来描述 VFS的索引节点 文件系统由子目录和文件构成,每个子目录或文件只能由唯一的inode描述。在同一个文件系统中,每个索引节点号都是唯一的。 文件系统处理文件所需要的所有信息都放在称为索引节点的数据结构inode中。 inode是Linux管理文件系统的最基本单位,也是文件系统连接任何子目录和文件的桥梁。 inode 中有两个设备号,i_dev(常规文件的设备号)和i_rdev(某一设备的设备号) 文件系统的注册和注销 当内核被编译时,就已经确定了可以支持哪些文件系统,这些文件系统在系统引导时,在 VFS 中进行注册。 向系统核心注册文件系统的类型有两种途径: 一种是在编译核心系统时确定,并在初始化时通过内嵌的函数调用向注册表登记。 另一种则将某个文件系统作为内核可装载的模块,在装入该模块时向注册表登记它的类型,并在模块卸载时从注册表注销。 文件系统的注册和注销 文件系统的注册和注销 文件系统的注册和注销 file_system_type的数据结构定义如下: struct file_system_type { const char *name; /*文件系统的类型名*/ int fs_flags; /*文件系统的一些特性*/ struct super_block *(*read_super) (struct super_block *, void *, int); /*文件系统读入其超级块的函数指针*/ struct module *owner; /*通常置为宏THIS_MODLUE,用以确定是否把文件系统作为模块来安装*/ struct file_system_type *next; }; 文件系统的注册和注销 要对一个文件系统进行注册,就调用register_filesystem()函数。 如果不再需要这个文件系统,还可以撤消这个注册,即从注册链表中删除一个file_system_type 结构,此后系统不再支持该种文件系统。unregister_filesystem()函数就起这个作用的,它在执行成功后返回0,如果注册链表中本来就没有指定的要删除的结构,则返回-1。 文件系统的安装 要使用一个文件系统,仅注册是不行的,还必须安装这个文件系统。安装一个文件系统实际上是安装一个物理设备。 自己(一般是超级用户)安装文件系统时,需要指定三种信息:文件系统的名称、包含文件系统的物理块设备、文件系统在已有文件系统中的安装点。 文件系统的安装 例如: # mount -t iso9660 /dev/hdc /mnt/

文档评论(0)

zhuwo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档