gpt4 book ai didi

linux - 进程什么时候处理信号

转载 作者:太空狗 更新时间:2023-10-29 12:05:35 27 4
gpt4 key购买 nike

我想知道 linux 进程什么时候处理信号。假设进程已经为信号安装了信号处理程序,我想知道进程的正常执行流程何时会被中断并调用信号处理程序。

根据 http://www.tldp.org/LDP/tlk/ipc/ipc.html ,进程将在退出系统调用时处理信号。这意味着像 a = b+c (或其等效的机器代码)这样​​的普通指令不会因为信号而被中断。

此外,有些系统调用在收到信号后会被中断(并因 EINTR 而失败或重新启动)。这意味着甚至在系统调用完成之前就处理了信号。这种行为似乎与我在上一段中提到的冲突。

因此,我不清楚信号何时被处理以及进程将在哪些进程状态下处理。可以打断吗

  1. 任何时候它从内核空间进入用户空间,或者
  2. 任何时候在用户空间,或者
  3. 任何时候进程被调度程序安排执行

谢谢!

最佳答案

According to http://www.tldp.org/LDP/tlk/ipc/ipc.html, the process would handle the signal when it exits from a system call. This would mean that a normal instruction like a = b+c (or its equivalent machine code) would not be interrupted because of signal.

好吧,如果是这样的话,CPU 密集型进程将不会服从进程调度程序。事实上,调度程序可以在其时间片已经过去的任何时间点中断进程。除非是FIFO实时进程。

一个更正确的定义:信号被传递到进程的一个时间点是控制流离开内核模式以恢复执行用户模式代码的时间点。这不一定涉及系统调用。

关于linux - 进程什么时候处理信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14320748/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com