第5章 文件管理 网络操作系统.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文档。上传文档
查看更多
第一讲:操作系统概述 教师:计算机操作系统课程组 E-mail:zhao.yanhong@163.com(赵艳红) wxzx@(沈峰) Contents 5.1 虚拟文件系统 内核软件层,在内核中提供一个文件系统框架(接口函数集、管理用的数据结构、各种缓存机制)。 为各种文件系统提供通用接口。 虚拟文件系统(续) 支持的文件系统可分为三类: 基于磁盘的文件系统 e.g VFAT、NTFS、ISO9660 CDROM… 网络文件系统 e.g NFS、Coda… 特殊文件系统 不管理磁盘空间,e.g /proc 所有的文件系统都可以安装到根系统的子目录中。 5.2 通用文件模型 用于表示所有支持的文件系统,由以下对象类型组成: 超级块对象:存放已安装文件系统信息。 索引节点对象:存放文件信息,每个索引节点对象的索引节点号唯一地标识了文件系统中的文件。 文件对象:存放打开文件与进程间交互的信息。 目录项对象:存放目录项与文件进行链接的信息。 同时VFS还使用了磁盘高速缓存(软件机制),将常用的目录项对象放在目录项高速缓存中。 通用文件模型(续) 这个模型是对要支持的文件系统的一种抽象,对于UNIX系列的,直接就可以很好地支持;对于没有目录文件的文件系统,比如FAT系列,Linux需要能够快速建立对应于目录的文件。 可以将VFS看成一种通用文件系统,它位于应用程序和具体文件系统之间,提供了一层通用的接口,它在必要时依赖具体的文件系统。 通用文件模型(续) 5.3 VFS数据结构 5.3.1 超级块对象 超级块对象: struct super_block { struct list_head s_list; /* 指向超级块表的指针 */ kdev_t s_dev; /* 设备标识符 */ unsigned long s_blocksize; /* 以字节为单位的块大小 */ unsigned char s_blocksize_bits; /* 以位为单位的块大小 */ unsigned char s_dirt; /* 修改(脏)标志 */ unsigned long long s_maxbytes; /* 文件大小的上限 */ 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,

文档评论(0)

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

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档