linux kernel
文章平均质量分 83
zhangatong
这个作者很懒,什么都没留下…
展开
-
由于 SIGPROF 信号,clone() 系统调用无限重启
最近遇到一个c++ 代码里调用system函数然后没返回的问题,此时调用进程所在CPU占用率100%。通过 strace 和ftrace工具跟踪系统调用,以及查看内核源码,发现 此时,进程会一直不停的调用 clone系统调用,而 clone系统调用一直返回出错。strace :ftrace:内核添加打印:根据错误 ERESTARTNOINTR在 内核代码里找到报错的地方:系统调用时,检测到信号导致系统调用中断返回 ERESTARTNOINTR 错误值,处理信号后重新调用该系统调用。原创 2023-09-08 10:32:25 · 335 阅读 · 0 评论 -
futex机制介绍
1、概念futex: a sort of fast, user-space mutual exclusion primitive.Futex是一种用户态和内核态混合的同步机制。首先,同步的进程间通过mmap共享一段内存,futex变量就位于这段共享的内存中且操作是原子的,当进程尝试进入互斥区或者退出互斥区的时候,先去查看共享内存中的futex变量,如果没有竞争发生,则只修改futex,而不用再执行系统调用了。当通过访问futex变量告诉进程有竞争发生,则还是得执行系统调用去完成相应的处理(wait 或.转载 2021-09-22 15:39:38 · 379 阅读 · 0 评论