首页 > 代码库 > Linux文件系统4--打开文件
Linux文件系统4--打开文件
1.前言
本文所述关于文件管理的系列文章主要是对陈莉君老师所讲述的文件系统管理知识讲座的整理。
Linux可以支持不同的文件系统,它源于unix文件系统,也是unix文件系统的一大特色。
本文将以不同文件系统之间的拷贝为实例进行讲述
2. 实例:文件拷贝
图 不同文件系统之间的拷贝
图 文件拷贝对应的C语言片段
3.打开文件
3.1 open函数
文件读写之前都要先打开文件,打开函数的原型如下:
3.2 打开文件的内核实现
从整体流程来看,open的内核实现如下:
-
进程从用户态获取路径名到内核缓冲区;
-
然后查找到父目录;如果设置了O_CREAT标志,则继续查找路径最后一个分量
-
最后获取对应文件的打开文件结构
-
将这个结构与当前进程的打开文件表联系起来,返回相应的fd。
4. do_sys_open
4.1 do_filp_open
-
当内核要访问一个文件时,第一步需要找到这个文件,这由do_filp_open完成。
-
在do_filp_open的实现中,查找文件过程由path_init和link_path_walk完成。
-
这两个函数将用户传进来的用字符串表示的文件路径,转换成一个dentry结构,建立好相应的inode,并将查找结果存储在nameidata结构中。
4.1.1 nameidata_to_filp
- nameidata结构体
4.1.2 fd_install
5.查找文件
5.1 dentry cache的引入
5.2 dentry cache的描述
Linux文件系统4--打开文件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。