LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 967|回复: 4

如何实现操作不被其他进程打断?

[复制链接]
发表于 2007-5-26 11:26:23 | 显示全部楼层 |阅读模式
大概是这样的一个程序,目标是为了测试系统的timer interrupts是否正常
/proc/interrupts文件中有一行timer记录着系统的timer interrupts次数,而且不断的增加中.我要计算在两个时间点(不一定是wall time)下,其增加值是否和预期的一样.
实现方法大概如下:
if(时间点1)
    次数1=读(/proc/interrupts文件);
if(时间点2)
    次数2=读(/proc/interrupts文件);
每个时间点的次数=(次数2-次数1)/(时间点2-时间点1)
.....

现在的问题是我如何才能保证在时间点1成功后,立刻就去读取(/proc/interrupts文件,而不会在两者的时间窗口被其他进程打断呢?要是被打断,那么计算出来的值将不会正确.

请各位高手提出自己的看法...谢谢
发表于 2007-5-29 12:09:04 | 显示全部楼层
分时系统是不允许这样的。 否则一个设计不良的应用就可以将整个系统给冻结了。
回复 支持 反对

使用道具 举报

发表于 2007-7-1 20:36:27 | 显示全部楼层
可能会死锁,不过好像可以的,apue里面好像有的,自己看去吧。那本书我买了都没怎么看
回复 支持 反对

使用道具 举报

发表于 2007-7-1 21:50:54 | 显示全部楼层
不被其它进程打断是什么意思啊?如果是信号的话,可以通过sigfillset,sigprocmask屏蔽,如果是阻止被内核调度,估计就要改内核了吧
我觉得如果实在不能保证原子性,可以多次运行这个程序来验证
回复 支持 反对

使用道具 举报

发表于 2007-7-2 22:40:25 | 显示全部楼层
Post by paul1983
可能会死锁,不过好像可以的,apue里面好像有的,自己看去吧。那本书我买了都没怎么看

楼主这个需求只有从内核入手,在用户空间是没有什么办法的(假设是 Linux 内核)。
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表