gpt4 book ai didi

c - "kill"是如何工作的?特别是 "kill"如何处理被阻止的进程?

转载 作者:太空狗 更新时间:2023-10-29 11:24:19 31 4
gpt4 key购买 nike

内核中谁负责终止进程。

如果“kill”来了,进程处于阻塞状态怎么办。 kill是否等到进程进入running状态才清理自己。

如果有人可以在内核方面回答更多问题,例如当 kill 命令生成 SIGINT 时,内核将调用所有内容,直到最后清除 TCB(任务控制 block )。

最佳答案

我假设您在谈论 SIGKILL,所以我将讨论仅限于该信号。

当一个进程在另一个进程上引发 SIGKILL 时,SIGKILL 将作为挂起信号添加到受害进程上,并清除任何挂起的 SIGSTOP、SIGTSTP、SIGTTOU 或 SIGTTIN 信号。如果受害者停止或处于可中断的 sleep 状态,受害者将被唤醒(使其可运行)。

当受害进程下一次尝试从内核模式转到用户模式时,将检查挂起的信号。这是找到挂起的 SIGKILL 的地方,内核调用 do_exit() 而不是返回到用户模式。

从内核模式到用户模式的转换将在下一次调度进程时进行(除非它处于不可中断的 sleep 状态——这是臭名昭著的 D 状态)。如果它处于不可中断的 sleep 状态,则该进程在被唤醒之前不会尝试返回到用户模式。

关于c - "kill"是如何工作的?特别是 "kill"如何处理被阻止的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1107658/

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