- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
umount实现* umount 实现算法: 参数:设备文件名 1。检查超级用户权限; 2。取设备文件的索引节点,读入内存节点表项,得到设备号; 3。由设备号找到安装表项; 4。清除系统内属于该文件系统的共享正文段表项; 5。将属于该文件系统的内存超级块,内存i节点和延迟写磁盘块写回磁盘; 6。释放该文件系统内存根i节点; 7。关闭设备,释放它的所有内存缓冲区; 8。清除目标目录i节点内的安装标志(IMOUNT=0),释放该节点; 9。释放内存超级块; 10。释放安装表项。 八。虚拟文件系统* 概 述 file与dentry对象 虚拟i节点 VFS与LFS 概 述 vnode/vfs 最早出现于sun公司的sunnos中(1986),后来被ATT公司集成到SVR4中。它们采用了面向对象的设计思想。 vnode ( vitural node,虚拟节点) 作为一种虚拟节点有一组统一的接口函数调用格式,但对于不同类的i 节点有着不同的实现函数体和私有数据。 vnode 相当于面向对象中的抽象基类,它提供抽象接口,用于派生出各种文件节点的实现函数。这些文件节点既包括不同文件系统的inode 又包括socket等。 vfs ( vitural file system ,虚拟文件系统) 作为一种虚拟的文件系统有一组统一的接口函数调用格式,但对于不同类的文件系统有着不同的实现函数和私有数据。 vfs 相当于面向对象中的抽象基类,它提供抽象接口,用于派生出多种文件系统实现,如s5fs,ufs,NFS,FAT32等。 vnode/vfs 体系结构的目标: 同时支持多种文件系统,如Linux类:s5fs, ufs 。非Linux类:FAT32; 用户对所有(在不同分区)安装的文件系统具有统一的视图(接口); 支持网络文件系统(NFS)的共享和透明的访问; 允许厂家将定制的文件系统以模块方式加入内核。 面向对象的实现 s5fs数据 s5fs_ops s5fs_file_ops ufs_file_ops ufs数据 ufs_ops fd1 fd2 s5fs 文件系统 ufs 文件系统 s5fs_create ufs_create file对象 inode对象 进程 文件表 Linux VFS对象关系 super_block inode dentry file process fd *f_dentry *d_inode *i_sb 磁盘文件 Linux虚拟文件系统中的对象及其关系: file 对象与dentry对象 struct file { /* file对象*/ struct dentry *f_dentry; /* dentry(目录项)对象指针 其中dentry.d_inode 为inode对象指针*/ struct file_operations *f_op; /* 操作函数指针,打开此文件时其初值 由inode.i_fop指定 */ loff_t f_pos; /* 文件指针 */ unsigned int f_count; /* 访问计数 */ unsigned int f_flags; /* 打开方式 */ …… }; struct dentry { /* dentry(目录项)对象*/ struct inode *d_inode; /* inode对象指针 */ struct dentry *d_parent; /* 父目录 */ struct list_head d_vfsmnt; /* 安装链表结构 */ struct dentry_operations *d_op; /* 操作函数表 */ struct super_block *sb; /* 超级块对象 */ unsigned char d_iname[16]; /* 短成员名 */ …… } file operations llseek(file,offset,whence) /* 修改文件指针 */ read(file,buf,count,offset) /* 读文件offset后加count */ write(file,buf,count,offset) /* 写文件offset后加count */ readdir(dir,dirent,filldir) /* 读目录dir下一项到dirent,filldir 为读目录
您可能关注的文档
最近下载
- [电信行业]移动通信技术移动信道中的电波传播及干扰.pptx VIP
- (课堂教学课件4)七颗钻石.ppt VIP
- Unit 1 长难句分析讲义--高中英语人教版(2019)选择性必修第一册.docx VIP
- 高等教育心理学知识点-.docx VIP
- 2025及以后5年中国碳纤维行业市场运营格局及前景战略分析报告.docx
- 常见微生物与相关疾病.ppt VIP
- 人民医院皮肤性病科临床技术操作规范2023版.pdf VIP
- 三年级下册语文课件-第18课 七颗钻石第一课时|人教新课标 (共20张PPT).pptx VIP
- 2023年绵阳中学自主招生数学试题.doc VIP
- 二下数学混合运算看图列综合算式专项题型练习(含答案12页).pdf VIP
文档评论(0)