繁体   English   中英

用户空间和内核空间进程中的信号处理程序集

[英]set of signal handlers in user space and kernel space processes

我是linux的新手。

“用户空间进程”和“内核空间进程(内核线程)”是否共享同一组信号。 只是想知道内核如何根据进程运行的区域(用户空间或内核空间)不同地发送信号?

我认为这里可能有些混乱。 当人们在UNIX上下文中说“内核线程”时,通常只表示“线程”,而不是“内核空间进程”。 过去有两种线程化方法:在无需任何内核帮助的情况下实现该概念的库(称为用户线程)。 以及那些只包装由内核专门为多线程提供的系统调用的内核线程。 如今,大多数人使用内核线程,尤其是因为POSIX线程标准从2.6开始就已成为Linux内核的一部分。

为了回答您的问题,信号始终被寻址到PID(嗯,除非您将pthread_kill用于线程间信号传输)。 使用POSIX线程,进程的所有线程共享一个PID。 但是实际上只有一个线程可以被中断。 因此,每个线程在其线程本地存储中都有一个信号掩码。 实际上,您应该做的是使用pthread_sigmask明确指出哪些线程处理哪些信号。 在Linux中,根线程是默认线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM