当前位置:  技术问答>linux和unix

内核线程僵死如何解决?

    来源: 互联网  发布时间:2016-01-16

    本文导语:  按照http://www.scs.ch/~frey/linux/kernelthreads.html的例子创建了5个内核线程,但是在关闭线程时,线程僵死。 在用户态可以用父进程wait解决,但是在内核里面如何避免僵死的内核线程? root      1614  0.0  0.0     0 ...

按照http://www.scs.ch/~frey/linux/kernelthreads.html的例子创建了5个内核线程,但是在关闭线程时,线程僵死。

在用户态可以用父进程wait解决,但是在内核里面如何避免僵死的内核线程?

root      1614  0.0  0.0     0    0 ?        Z    10:34   0:00 [example thread ]
root      1615  0.0  0.0     0    0 ?        Z    10:34   0:00 [example thread ]
root      1616  0.0  0.0     0    0 ?        Z    10:34   0:00 [example thread ]
root      1617  0.0  0.0     0    0 ?        Z    10:34   0:00 [example thread ]
root      1618  0.0  0.0     0    0 ?        Z    10:34   0:00 [example thread ]
root      2664  0.0  0.4  6792  352 ?        S    12:03   0:00 /usr/sbin/sshd
root      2666  0.0  1.0  4340  808 pts/2    S    12:04   0:00 -bash
root      2711  0.0  3.6  8140 2900 pts/2    S    13:48   0:00 vim kernel/signal.c
root      2725  0.0  0.0     0    0 ?        Z    13:55   0:00 [example thread ]
root      2726  0.0  0.0     0    0 ?        Z    13:55   0:00 [example thread ]
root      2727  0.0  0.0     0    0 ?        Z    13:55   0:00 [example thread ]
root      2728  0.0  0.0     0    0 ?        Z    13:55   0:00 [example thread ]
root      2729  0.0  0.0     0    0 ?        Z    13:55   0:00 [example thread ]

|
kill -9 

|
试试 kill -HUP 

|
僵死说明代码有问题,如果是完全用例子原代码的话,在insmod thread_mod.o后是不会僵死的,在用rmmod thread_mod后,各线程自动结束。
我想你可能修改了原代码,其中最可能的地方是进程间相互锁死,注意一下这个地方。

|
这说明你的线程已经运行结束了,你看看他们的父进程是不是没有wait或join来释放进程描述符。

|
从例子程序看,线程退出后需要给他的父亲进程发送SIGCHLD信号
kill_proc(2, SIGCHLD, 1);
是发送给kevent的

你看看你的内核线程的父亲进程是谁,给发送一个SIGCHLD信号

    
 
 

您可能感兴趣的文章:

  • 内核栈~ 内核线程 ~用户线程 之间关系 问题
  • Linux中内核线程不访问内核态地址空间?
  • (菜鸟基础问题)关于内核线程
  • linux内核是如何支持多线程的?
  • 谁能提供kgdb内核补丁内核模块的下载 iis7站长之家
  • 内核进程线程问题,大家指教
  • 请教linux 2.6内核移植到arm上最大线程数量的问题。
  • 如何利用Linux内核线程来保存用户进程
  • 内核中的timer是不是可以理解为多线程,我想对一段代码加锁,如何实现,有没有可用的内核函数?
  • 超线程的内核无法启动?
  • 用户进程有自己独立的地址空间,内核线程没有自己的地址空间 该怎样理解: ?
  • 内核线程没有用户空间具体指的是哪个结构体?
  • 高分噢!内核线程绑定问题!急!!!
  • 寻linux内核线程补丁或相关资料
  • linux内核多线程使用那个函数啊?
  • 2.4内核下面最大线程数的问题
  • Linux内核线程睡眠问题
  • 哪位老大详细地讲解一下内核线程和轻量级进程、分别如何创建?多谢了。
  • (100分求助)用内核线程对用户进程操作(大侠/虾们出手了)
  • linux内核源代码中,在哪个文件的哪个地方可以看到定义线程切换时间片大小?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 编译新内核时提示内核太大无法把装入软盘,如何解决?
  • 内核编译及无声问题之解决
  • linux内核模块中,局部变量过多造成死机怎么解决啊?
  • 请问高手,内核升级到2.6以后,rpm的问题解决了吗?
  • 编译内核时出现同名文件该怎么解决
  • 升级内核后,usb鼠标不可以使用了,如何解决?
  • Linux下PCI驱动,怎么解决不同版本内核都需要重新编译的问题??
  • uboot和内核直接的1s左右闪烁如何解决
  • uboot启动内核的问题~解决了好久都没有解决出来~
  • 帮忙解决一道关于Linux内核模块的问题
  • 虚拟系统中编译内核时提示磁盘空间不足如何解决
  • 在编译内核时候出现问题,大家来帮忙看看是什么问题?怎么解决?
  • 编译内核受挫,不知道如何解决,请高人指点
  • Linux 内核2.4.21使用mount命令挂载网络磁盘(windows)后,最多只能放2G文件。如何解决(急)
  • ubuntu make内核源码的时候出现问题,求高手解决
  • 内核版本和程序便以版本的不匹配如何解决
  • 我装了红帽9.0的(内核是2.4.8),我显卡是GFIRCE FX 5200的,显示器是MAG786FT2的,请高手解决我的问题。
  • 求救,Linux内核2.6.32启动问题。。。。查了不少资料,还没解决!
  • 我是新手,升级内核出错了!怎么解决啊??
  • liunx编译内核磁盘空间不足怎么解决?
  • Linux内核中影响tcp三次握手的一些协议配置
  • Fedora Core 2自带的内核升级程序下载下来内核后,要不要再编译一遍内核?
  • TCP协议四次断连过程介绍及Linux内核协议栈中相关设置项
  • 进程内核栈和操作系统内核栈的关系
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • 2.6内核下编译2.4内核
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • 谁能提供kgdb内核补丁内核模块的下载
  • linux内核中的likely宏和unlikely宏介绍及用法
  • 编译新内核后怎么进入原来内核
  • CentOS 6.5 下载地址及如何升级内核(kernel)版本到 3.10.28


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3