免费注册 查看新帖 |

Chinaunix

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

内核线程,信号量通信,延迟达到300ms [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-14 11:55 |只看该作者 |倒序浏览
本帖最后由 linux1020 于 2011-04-14 12:48 编辑

程序模型如下:
进程P;
内核线程T1;
信号量 struct semaphore mysem1,struct semaphore mysem2;

进程P在内核态与内核线程T1,  通过信号量mysem1,mysem2通信,这两个任务,只是简单的up 和 down这个信号量,没有其他耗时的操作。

P:
up(&mysem1); down(&mysem2);

T1:
down(&mysem1); up(&mysem2);

在P中up前和down后计时测试,发现延迟达到300+ms,不知道是什么问题。

论坛徽章:
0
2 [报告]
发表于 2011-04-15 09:58 |只看该作者
回复 1# linux1020


    各位有没有什么方法,可以定位一下问题?

   
   现有的现象是 内核线程 T1  up  mysem2之后,就阻塞在down mysem1上了, 大概300ms之后,进程P才执行完成 down mysem2,系统基本上没有什么负荷,不知道是为什么调度的延迟为什么这么大?
   
   我创建内核线程的表达式如下:
   kernel_thread(function, NULL, CLONE_FS| CLONE_FILES);
    不知道是不是参数不正确?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP