您好,登录后才能下订单哦!
这期内容当中小编将会给大家带来有关基于linux0.11系统的文件读取原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
小编的是文件系统树,我们知道,文件系统的数据是存在硬盘里的,这里来看一下,这些数据是怎么组织成一棵树,又是怎么进行遍历的。下面就是这棵树。
下面我们以读取文件为线索,看一下过程是怎么样的。
1 我们要先根据文件路径找到文件对应的inode节点。假设是个绝对路径。文件路径是/a/b/c.txt。系统初始化的时候我们已经拿到了根目录对应的inode。从inode的结构体结构中,我们知道inode有一个字段保存了文件的内容。所以这时候就把根目录文件的文件内容读进来,是一系列的dir_entry结构体。然后逐个遍历,比较文件名是不是等于a,最后得到一个目录a对应的dir_entry。
2 根据dir_entry结构体我们知道,里面不仅保存了文件名,还保存了对应的inode号。我们根据inode号把a目录文件的内容也读取进来。以此类推。最后得到c对应的dir_entry。
3 再根据c对应的dir_entry的inode号,从硬盘把inode的内容读进来。发现他是一个普通文件。至此,我们找到了这个文件对应的inode节点。完成fd->file结构体->inode结构体的赋值。
4 然后我们开始读取文件的内容。根据fd我们找到对应的inode节点。根据file结构体的pos字段,我们知道需要读取的数据在文件中的偏移。根据这个偏移,可以算出应该取i_zone[9]字段的哪个索引,文件的前7块对应索引0-6,前7到7+512对应索引7等。得到索引后,读取i_zone数组在该索引的值,即我们要读取的数据在硬盘的数据块。然后把这个数据块从硬盘读取进来。返回给用户。
5 至此,完成了文件的查找和读取。
上述就是小编为大家分享的基于linux0.11系统的文件读取原理是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。