使用SIGKILL进行不间断的系统调用过程中的任务“死亡”状态>>

问题描述 投票:0回答:1

我阅读了有关this postSIGKILL,并对以下陈述感到困惑:

仅某些系统调用可中断,因此内核在内部将进程标记为处于特殊的“濒死”状态,直到系统呼叫或I / O操作已解决

...

一旦解决了任何进程内内核例程,进程状态为从“死”变为“死”,内核开始清理它

但是我在内核源代码中找不到对此的任何确认。任务状态在linux/sched.h中定义:

#define TASK_RUNNING            0x0000
#define TASK_INTERRUPTIBLE      0x0001
#define TASK_UNINTERRUPTIBLE    0x0002
#define __TASK_STOPPED          0x0004
#define __TASK_TRACED           0x0008
/* Used in tsk->exit_state: */
#define EXIT_DEAD               0x0010
#define EXIT_ZOMBIE             0x0020
#define EXIT_TRACE              (EXIT_ZOMBIE | EXIT_DEAD)
/* Used in tsk->state again: */
#define TASK_PARKED             0x0040
#define TASK_DEAD               0x0080
#define TASK_WAKEKILL           0x0100
#define TASK_WAKING             0x0200
#define TASK_NOLOAD             0x0400
#define TASK_NEW                0x0800
#define TASK_STATE_MAX          0x1000

并且在linux / sched.h和其他调度程序文件中都没有任何“濒死”状态。有人可以弄清楚在不间断的系统调用中使用哪个任务状态将任务标记为“正在死”吗?

我阅读了有关SIGKILL的文章,并对以下语句感到困惑:只有某些系统调用可中断,因此内核在内部将进程标记为处于特殊的“正在消亡” ...

c linux linux-kernel signals system-calls
1个回答
0
投票
this SO question的答案看来,“垂死”状态将对应于“不间断睡眠”状态:
© www.soinside.com 2019 - 2024. All rights reserved.