linux进程接受信号,linux – 一个进程如何知道它已经收到一个信号
如果我錯了,請糾正我這是我對信號的理解:
As far as i know, signal generation
and signal delivery are 2 different
things. In order to generate a signal,
the OS simply sets a bit in a bitarray
maintained in the Process Control
Block(PCB) of the process. Each bit
corresponds to a particular signal,
and when a bit is set, it means the
signal corresponding to the bit is
pending.
Delivery: Before transferring control
back to a process in user mode, the
Kernel always checks the pending
signals for this process. This check
must happen in Kernel space because
some signals can never be ignored by a
process – namely SIGSTOP and SIGKILL.
那么這是否意味著信號只能在內核調度該進程即分配CPU時傳遞給進程?一個進程在CPU上實際執行時能得到一個信號嗎?如果是這樣,那怎么可能,過程如何知道信號正在等待(因為它在用戶模式下執行,不能訪問PCB)
說有多處理器機器,所以有真正的并行性,即多個進程同時執行。進程P1在cpu 1上執行,進程P2在cpu2上執行,現在進程P2(具有足夠的權限)向進程P1發送一個信號。該信號現在將被傳送到P1,或者在P1由于某種原因放棄CPU之后被傳遞,并且在稍后的時間內由內核再次重新安排,然后將該信號傳送到過程P1。
請不要說這個問題是依賴于實現的。如果您發現正確的答案是實現定義,那么我正在尋找在Linux,FreeBSD或任何您知道的任何* nix平臺的答案。
非常感謝您的幫助和耐心:)
問候
拉利
總結
以上是生活随笔為你收集整理的linux进程接受信号,linux – 一个进程如何知道它已经收到一个信号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle v$access执行很慢,
- 下一篇: Linux查看utmp文件,linuxc