免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2002 | 回复: 3
打印 上一主题 下一主题

[文件系统] 请教一个页高速缓存的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-02-12 16:17 |只看该作者 |倒序浏览
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
2 [报告]
发表于 2017-02-24 20:40 |只看该作者
你分这么多,我分这么少,你好意思3问题才给5分么?

1) 他的旧版说的是2.4,当时page cache用做文件页的缓冲,page的键值是(inode, pgoff );  buffer cache用做文件系统metadata的缓冲,buffer的键值是( bdev, 块号)

2) page cache中的页4K,文件系统的块1K,那么一个文件页很可能对应到4个离散的磁盘块。

3) 是的

评分

参与人数 1信誉积分 +5 收起 理由
ymc4444 + 5 很给力!

查看全部评分

论坛徽章:
0
3 [报告]
发表于 2017-02-28 13:46 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2017-02-28 14:21 |只看该作者
问题一:

如读一个磁盘文件file1时,分为如下两步:(1)首先要读包含file1 inode结点的磁盘块;(2)读file1的内容;
那么
(1)中读的内容放在块高速缓存中,其树根是与块设备相关的bdev文件系统中索引节点的address_space对象?
address_space 是文件物理“内容”的  连续内存的逻辑体现。
。。。我没看懂你问题。
           inode和本身存储空间 和 inode描述空间 不一样  。
           inode本身的空间应该由 buffer head 描述,属于文件的metadata
           inode描述对应的address_space 就是文件内容。

(2)中读的内容放在页高速缓存中,其树根是file1 inode对象的address_space中?
          看上面。
          树根是啥东西?



问题二:
ULK3 P610

“下面是内核创建缓冲区页的两种普通情况:”
(1)当读或写的文件页在磁盘块中不相邻时。发生这种情况是因为文件系统为文件分配了非连续的块,或因为文件中”洞“。
(2)当访问一个单独的磁盘块时(例如,当读超级块或索引节点块时)。
“当读或写的文件页在磁盘块中不相邻时。”这一句不太理解,能否给解释一下?文件页是个什么概念?

我感觉我上面的问题应该回答你了。
文件在内存中是连续的(address_space) 在磁盘中不一定连续 。怎么实现?没啥魔法  文件系统的作者要 搞定他,自己实现readpage function 提取一个文件1或者n个page的内容 到指定page就好了。
所以在pagecache启动 的时候。 你读写文件都是先添完善addressspace 往里面加page ,然后在填充 page内容 。 组成连续的内容。







问题三:
通过dd if=/dev/sda1 of=/tmp/file1 count=1024 blocksize=1M,这样读sda1时,读到的内容也放在bdev文件系统中块设备文件的高速缓存吗?

运行之后如果内存够用。  所有的内容都在 pagecache里面
“bdev文件系统中块设备文件的高速缓存”  这个概念不对。
pagecache就是个 表。  可以包含多个bdev设备 。。。。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP