Linux操作系统分析与实践5.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux操作系统分析与实践5

Linux操作系统分析与实践 第五讲:文件管理 本讲主要内容 虚拟文件系统VFS Ext2文件系统 虚拟文件系统 内核软件层,在内核中提供一个文件系统框架(接口函数集、管理用的数据结构、各种缓存机制) 为各种文件系统提供通用接口 虚拟文件系统(续) 支持的文件系统可分为三类 基于磁盘的文件系统 e.g VFAT、NTFS、ISO9660 CDROM… 网络文件系统 e.g NFS、Coda… 特殊文件系统 不管理磁盘空间,e.g /proc 所有的文件系统都可以安装到根系统的子目录中 通用文件模型 用于表示所有支持的文件系统,由以下对象类型组成 超级块对象:存放已安装文件系统信息 索引节点对象:存放文件信息,每个索引节点对象的索引节点号唯一地标识了文件系统中的文件 文件对象:存放打开文件与进程间交互的信息 目录项对象:存放目录项与文件进行链接的信息 同时VFS还使用了磁盘高速缓存(软件机制),将常用的目录项对象放在目录项高速缓存中 通用文件模型(续) 这个模型是对要支持的文件系统的一种抽象,对于UNIX系列的,直接就可以很好地支持;对于没有目录文件的文件系统,比如FAT系列,Linux需要能够快速建立对应于目录的文件 可以将VFS看成一种通用文件系统,它位于应用程序和具体文件系统之间,提供了一层通用的接口,它在必要时依赖具体的文件系统 通用文件模型(续) VFS数据结构 超级块对象 超级块对象 struct super_block { struct list_head s_list; /* Keep this first */ kdev_t s_dev; unsigned long s_blocksize; unsigned char s_blocksize_bits; unsigned char s_dirt; unsigned long long s_maxbytes; /* Max file size */ struct file_system_type *s_type; struct super_operations *s_op; struct dquot_operations *dq_op; ... struct list_head s_files /*分配给超级块的文件对象链表*/ }; 所有超级块对象由循环双链表组成,首元素s_list 超级块操作在s_op中 超级块对象(续) struct super_operations { void (*read_inode) (struct inode *); void (*read_inode2) (struct inode *, void *) ; void (*dirty_inode) (struct inode *); void (*write_inode) (struct inode *, int); void (*put_inode) (struct inode *); void (*delete_inode) (struct inode *); void (*put_super) (struct super_block *); void (*write_super) (struct super_block *); void (*write_super_lockfs) (struct super_block *); void (*unlockfs) (struct super_block *); int (*statfs) (struct super_block *, struct statfs *); int (*remount_fs) (struct super_block *, int *, char *); void (*clear_inode) (struct inode *); void (*umount_begin) (struct super_block *); struct dentry * (*fh_to_dentry)(struct super_block *sb, __u32 *fh, int len, int fhtype, int parent); int (*dentry_to_fh)(struct dentry *, __u32 *fh, int *lenp, int need_parent); int (*show_options)(struct seq_file *, struct vfsmount *); }; 主要的操作对象:i节点、超级块、文件系统 索引节点对象 struct inode { struct

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档