linux文件系统的系统分析--(十二)vfs层的三个hashtable
来源:互联网 发布:linux分辨率代码 编辑:程序博客网 时间:2024/06/04 18:44
在vfs_caches_init中有三个重要的hashtable:mount_hashtabledentry_hashtable inode_hashtable
Hashtable有什么作用?主要的查找的效率很高,vfs层用这三个就是为了提高查找效率。另外一个,inode和dentry是内存中的数据,而数据的来源是硬盘,如果我们获得了inode和dentry数据,加到hashtable中,方便下一次的快速获取,而不是再次访问硬盘。
Mount_hashtable:
在mnt_init中完成mount_hashtable的初始化。而在挂载文件系统的时候,一个重要函数graft_tree会将文件系统的vfsmount结构体内嵌的structlist_headmnt_hash加入到mount_hashtable中。这样在做文件系统挂载或者路径查找时,有需要做文件系统转换的时候,比如follow_mount和follow_down函数都会调用lookup_mnt__lookup_mnt可以快速的查找要转换的文件系统。
Dentry_hashtable:
在dcache_init中完成dentry_hashtable的初始化。在路径查找中就会用到这个hashtable。Link_path_walkdo_lookupd_lookup__d_lookup
structhlist_head *head = d_hash(parent,hash);
同样的利用hash快速找到dentry
Inode_hashtable:
在inode_init中完成inode_hashtable的初始化。比如sysfs_get_inodeiget_locked:
structhlist_head *head = inode_hashtable + hash(sb, ino); //利用inode_hashtable快速查找
而且iget_lockedget_new_inode_fast__inode_add_to_lists
hlist_add_head(&inode->i_hash,head);
利用inode内嵌的structhlist_node i_hash结构加入到inode_hashtable,方便以后的查找。
- linux文件系统的系统分析--(十二)vfs层的三个hashtable
- linux文件系统的系统分析--(一)vfs和数据结构
- linux文件系统的系统分析--(一)vfs和数据结构
- linux文件系统的系统分析--(一)vfs和数据结构
- linux文件系统--VFS与文件系统层的关系
- linux的文件系统和虚拟文件系统(VFS)
- linux文件系统的系统分析--开篇
- vfs管理下的linux文件系统
- linux虚拟文件系统VFS 的相关数据结构
- VFS文件系统之二: VFS的数据结构
- linux文件系统的系统分析--(十七)总结
- linux文件系统的系统分析 1-17
- VFS虚拟文件系统层
- linux文件系统的系统分析--(二)文件系统类型的注册
- linux文件系统的系统分析--(二)文件系统类型的注册
- linux文件系统的系统分析--(二)文件系统类型的注册
- Linux文件系统的三个时间
- linux文件系统(一)——VFS的概念
- 用mini2440烧写spiflash『上』
- 第八周实验报告3
- STM32 COM_TypeDef
- Iptables工具的使用
- LINUX内核内存屏障
- linux文件系统的系统分析--(十二)vfs层的三个hashtable
- iOS Dev 初识 导航控制器
- KMP算法
- c++
- 敏捷开发免费管理工具——火星人预览之七:自定义字段
- .Net、C#、SQL(不断更新中......)
- I/O重定向和管道:使用pipe、fork、exec详解。
- Android应用开发笔记(12):Android应用的自动升级、更新模块的实现
- 用mini2440烧写spiflash『中』