免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1933 | 回复: 0

[数据结构] 关于内核锁,何时使用的几个问题 [复制链接]

论坛徽章:
0
发表于 2013-05-21 15:50 |显示全部楼层
问几个问题,顺带求推荐一些资料,关于内核锁的使用(并非介绍几个简单的API,要有使用场景的分析最好,thx)
这方面没什么细致的实践经验。

1、以dcache为例,比如,假设有两个线程,其中一个对dentry执行dput(),而另一个执行dget(),dput()先行,所以有:
dput()会检查引用计数,如果为0,就kill掉,也就是说,整个dentry的内存会被回收(是有这么一条路径的)。
而dentry的锁是 dentry->d_lock 这样的,当dentry被回收时,而这个d_lock成员还在被dget()使用,对否?是否有问题?为什么?

2、假设有一个全局的hash表,那么当想使用某个hash_node的时候(是个指针),通常是不是要现在使用之前,将这个node内部的
引用计数+1,然后再访问这个node的各个成员?
不过我看dcache和inode的里很多链表的代码,都是直接就访问dentry->xxxx了,只有在修改某字段成员的时候,才加spinlock,
请问我看漏了什么东西?

thx all 前辈
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP