簡體   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