gpt4 book ai didi

python - 如何忽略 SIGKILL 或强制进程进入 'D' sleep 状态?

转载 作者:IT王子 更新时间:2023-10-29 00:53:07 25 4
gpt4 key购买 nike

我想弄清楚如何让进程忽略 SIGKILL。按照我的理解,这通常是不可能的。我的想法是让进程永久进入“D”状态。我想这样做是为了测试目的(极端情况并不是真正可重现的)。我不确定这是否可以通过编程方式实现(我不想损坏硬件)。我正在使用 C++ 和 Python,但任何语言都应该没问题。我有 root 权限。

我没有任何代码可以展示,因为我不知道如何开始使用它,或者它是否可能。我可以设置一个错误的 NFS 并尝试从中读取吗?

如果这是一个重复的问题,请提前致歉;我没有发现其他人试图诱发 D 状态。

非常感谢。

最佳答案

要让进程进入“D”状态(不间断 sleep ),您必须编写执行此操作的内核代码,然后通过系统调用从用户空间调用该代码。

在 Linux 内核中,这是通过将当前任务状态设置为不可中断并调用调度程序来完成的:

set_current_state(TASK_UNINTERRUPTIBLE);
schedule();

当然,这些操作通常包含额外的准备工作,以便任务有办法唤醒,例如在某个等待队列上注册或其他。

大容量存储等低延迟设备的设备驱动程序使用不间断 sleep 来简化其逻辑。它应该只在有一种万无一失的方法时使用,无论发生什么情况,进程几乎都会被唤醒。

执行不间断 sleep 等小事的内核代码可以放入一个小模块(从最小的驱动程序框架开始),其初始化函数执行代码,然后返回非零值。然后您可以使用 insmod 运行代码,例如

 insmod my_uninterruptible_sleep_mod.ko

不需要rmmod,因为函数失败,所以模块被立即卸载。

关于python - 如何忽略 SIGKILL 或强制进程进入 'D' sleep 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24922174/

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