vfs
文章平均质量分 80
vfs
糯米宝宝
这个作者很懒,什么都没留下…
展开
-
当一个文件被打开时,是如何获取对应的文件系统的超级块
在这个流程中,关键的步骤是`lookup_file`,它负责解析文件路径并找到对应的`dentry`;以及获取`super_block`的步骤,它是通过`inode`结构中的`i_sb`指针来访问的。// 3. 检查文件是否已经打开,如果是的话,增加文件引用计数。// 1. 解析路径名,找到目标文件的目录项(dentry)// 辅助函数:解析路径名,找到目标文件的目录项(dentry)// ... 文件描述符分配的代码 ...// ... 文件描述符安装的代码 ...// 辅助函数:获取空闲的文件描述符。原创 2024-04-03 11:09:42 · 435 阅读 · 0 评论 -
vfs 中查找路径名的函数,具体实现和分析
• 当整个路径名解析完成后,link_path_walk()返回一个有效的dentry和inode,它们可以被后续的系统调用用于进一步的操作,如打开文件、读写数据等。• VFS利用dentry缓存来加速查找过程,dentry是一个轻量级的数据结构,它代表路径中的一个分量并关联到inode(即文件在磁盘上的唯一标识符)。• 每当查找一个新的路径分量时,VFS会首先检查dentry缓存是否存在匹配项,如果存在则直接复用,否则会进行实际的文件系统操作(如读取inode)。原创 2024-04-03 20:28:19 · 144 阅读 · 0 评论 -
VFS中dentry和inode如何关联的
在Linux VFS中,递归查找文件的过程是通过遍历`dentry`(目录项)链表来完成的,同时`inode`(索引节点)被用来获取文件的元数据和属性。每个`dentry`对象代表文件系统中的一个目录项,而`inode`对象包含了与文件相关的元数据。`dentry`和`inode`之间的关联是通过`dentry`对象中的`d_inode`字段来实现的。原创 2024-04-03 14:35:55 · 546 阅读 · 0 评论 -
VFS中,在打开一个文件的时候,挂载点处于什么角色,是如何工作的
在上述代码中,`user_path`函数用于解析用户提供的路径名,并找到对应的挂载点和目录项。通过挂载操作,可以将一个文件系统挂载到已存在的目录树上的某个目录(即挂载点),使得该文件系统成为整个目录树的一部分。通过网络文件系统的挂载,本地系统可以访问远程服务器上的文件和目录,就像访问本地磁盘上的文件一样。当用户或应用程序尝试打开一个文件时,VFS会根据提供的路径名找到对应的挂载点,然后通过挂载点访问对应的文件系统,最终找到并打开请求的文件。在实际的代码中,挂载点的使用通常是通过一系列的函数调用来完成的。原创 2024-04-03 15:37:42 · 862 阅读 · 0 评论 -
文件描述符fd是怎么对应内核空间的数据结构struct file的
总结来说,文件描述符(fd)是用户空间程序与内核空间`struct file`数据结构之间的桥梁。文件描述符通过文件表映射到`struct file`实例,内核使用这个实例来管理文件操作和状态。这种设计使得文件操作在用户空间和内核空间之间可以高效、一致地进行。原创 2024-04-03 10:49:25 · 268 阅读 · 0 评论