文件系统缓存

文件系统缓存

ID:20485450

大小:143.00 KB

页数:7页

时间:2018-10-13

文件系统缓存_第1页
文件系统缓存_第2页
文件系统缓存_第3页
文件系统缓存_第4页
文件系统缓存_第5页
资源描述:

《文件系统缓存》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、文件系统的缓存管理1缓存的概念12dentry缓存和inode缓存12.1文件名查找12.2dentry缓存22.3dentry缓存的查找方式22.4dentry缓存的管理22.5超级块的dentry缓存22.6dentry的数据结构22.7inode缓存33Page和Buffer缓存33.1缓存的作用33.2缓存的种类33.3附属在页缓存上的块缓存33.4独立的块缓存43.5/proc/meminfo中Buffers和Cached的区别44数据回写44.1概念44.2周期性写回54.3完全同步54.4强制写回54.5当今最新进展5

2、5proc文件系统55.1概述55.2proc中文件的读写方法66通过proc文件系统管理缓存67示例78TheSwapCache71缓存的概念缓存位于客户和服务中间,用来加速访问。常见的缓存有CPU缓存、浏览器缓存、代理服务器缓存等。2dentry缓存和inode缓存2.1文件名查找如果想打开/usr/local/bin/xxx,首先要知道xxx的inode,它保存在/usr/local/bin这个目录文件中,要打开/usr/local/bin这个文件,需要知道/usr/local/bin的inode,它的inode保存在/usr

3、/local这个目录文件中,依次类推,直至查找“/”的inode。实际操作中,先打开磁盘中的/目录文件,查找/usr的inode,然后打开磁盘中的/usr文件,查找/usr/local的inode,依次如此这般。因此文件名查找需要反复查询inode表,并打开相应的目录文件读取inode。1.1dentry缓存在打开文件时,将需要的目录项都复制一份到内存中,下次需要读取相同的inode时,通过dentry缓存直接找到对应的inode1.2dentry缓存的查找方式dentry的数据结构中有d_subdirs链表,链表元素可以连接到它的

4、子目录和文件的dentry实例,搜索时沿着这个链表搜索。1.3dentry缓存的管理内存中维护一个散列表(dentry_hashtable)包含了所有的dentry对象,还有一个LRU(最近最少使用,leastrecentlyused)链表,当某个dentry不再被使用时(使用计数d_count为0),放进这个列表。新放进LRU的dentry项置于链表的起始处,这表明越旧的dentry项就越靠后,在内核需要更多内存时,就会把一些比较旧的dentry释放掉。LRU链表中的对象同时也处于散列表中,因此在需要时,也可通过散列表找到它,将其

5、从LRU表中删除,同时将其使用计数加1。1.4超级块的dentry缓存在超级块的内存结构中,包含一个指针s_root,它指向内存中一个dentry实例。因此所有文件系统的根目录的dentry都在文件系统挂载的同时就加载到内存中了,相应的inode缓存也必然已经加载到内存中。1.5dentry的数据结构structdentry{atomic_td_count;unsignedintd_flags;/*protectedbyd_lock*/spinlock_td_lock;/*perdentrylock*/intd_mounted;st

6、ructinode*d_inode;/*Wherethenamebelongsto-NULLis*negative*//**Thenextthreefieldsaretouchedby__d_lookup.Placethemhere*sotheyallfitinacacheline.*/structhlist_noded_hash;/*lookuphashlist*/structdentry*d_parent;/*parentdirectory*/structqstrd_name;structlist_headd_lru;/*LRU

7、list*//**d_childandd_rcucansharememory*/union{structlist_headd_child;/*childofparentlist*/structrcu_headd_rcu;}d_u;structlist_headd_subdirs;/*ourchildren*/structlist_headd_alias;/*inodealiaslist*/unsignedlongd_time;/*usedbyd_revalidate*/conststructdentry_operations*d_o

8、p;structsuper_block*d_sb;/*Therootofthedentrytree*/void*d_fsdata;/*fs-specificdata*/unsignedchard_iname[DNAME_INLINE_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。