免费注册 查看新帖 |

Chinaunix

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

HOOK sys_write [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-03 23:36 |只看该作者 |倒序浏览
我现在已经通过模块实现了HOOK sys_write 的操作。
先调用my_sys_write,然后执行完相关代码后,再调用系统的sys_write.
问题有二:
1、my_sys_write是原子操作吗?或者问:sys_write是原子操作吗?因为模块里有全局变量。
2、my_sys_write或sys_write会被打断吗?如果被打断后,再恢复,是不是接着执行原来的代码,会不会出现被打断后,中断操作又调用sys_write.

论坛徽章:
0
2 [报告]
发表于 2011-09-04 11:05 |只看该作者
1、my_sys_write是原子操作吗?或者问:sys_write是原子操作吗?因为模块里有全局变量。
LemonYang 发表于 2011-09-03 16:36


当然不是,否则整个系统的写文件请求都被串行化了,那效率不可忍受。所以你自己的 my_sys_write 要做同步。

2、my_sys_write或sys_write会被打断吗?如果被打断后,再恢复,是不是接着执行原来的代码,会不会出现被打断后,中断操作又调用sys_write.
LemonYang 发表于 2011-09-03 16:36


你这问的实际上是两个问题,第一,被中断恢复后是接着执行原来的代码。第二,不排除中断处理调用 sys_write 的可能,取决与实现。

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:17
3 [报告]
发表于 2011-09-04 21:13 |只看该作者
楼上的回答也有点问题, 不过我偏偏不说, 郁闷死楼主丫的!

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
4 [报告]
发表于 2011-09-04 22:34 |只看该作者
看你从哪个层次理解原子了,从操作某个文件的过程来来说,sys_write应该是原子的,从执行指令的角度来说,那肯定不是原子的了。

sys_write可以被中断中断,从中断返回以后可能会继续恢复执行,也可能被其它进程抢占(如果配置了内核抢占的话)。同步write操作磁盘,理论上自身就会中途放弃CPU,但是中间隔着page cache的话,好像写到page cache就可以返回了。细节记不清了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP