首页 百科知识 进程的状态和标志信息

进程的状态和标志信息

时间:2022-10-09 百科知识 版权反馈
【摘要】:Linux系统的2.2.X版本进程共有六种状态,包括运行状态、可中断等待状态、不可中断等待状态、僵死状态、暂停状态和交换状态,而在2.4.0版本中取消了交换状态,加入独占状态。这是由于某些原因被终止的进程,但是在task数组中仍然保留task_struct结构。Linux2.4引入独占状态后,如果事件发生,只唤醒处于独占状态的那一个进程,这就可以大大提高Apache这类Web应用的效率,使Linux更适合网络服务器的角色。Linux进程状态见表2-1。

2.2.1 进程的状态和标志信息

(1)state项

task_struct中的state项表示进程当前的状态。进程的状态值在执行过程中会根据环境来改变。

Linux系统的2.2.X版本进程共有六种状态,包括运行状态、可中断等待状态、不可中断等待状态、僵死状态、暂停状态和交换状态,而在2.4.0版本中取消了交换状态,加入独占状态。

可运行状态(TASK_RUNNING):进程处于运行(它是系统的当前进程)或者就绪状态(它在等待系统将CPU分配给它),只要得到CPU就可以立即投入运行。可运行状态进程组成队列RUN_QUEUE。

等待状态:进程正在等待某个事件发生或等待某种资源的状态。Linux进程有两种等待状态:可中断的等待状态(TASK_INTERRUPTIBLE)和不可中断等待状态(TASK_UNINTERRUPTIBLE)。可中断等待进程可以被信号中断;不可中断等待进程直接在硬件条件等待,并且任何情况下都不可中断。

当进程处于可中断等待状态时,系统不会调度该进行执行。当系统产生一个中断或者释放了进程正在等待的资源,或者进程收到一个信号,都可以唤醒进程转换到可运行状态。处于不可中断状态的进程只有被使用wake_up()函数明确唤醒时才能转换到可运行的就绪状态。

暂停状态(TASK_STOPPED):此时进程暂时停止运行,接受某种处理。通常是通过接收一个信号,如SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU而暂停运行。正在被调试的进程可能处于暂停状态。可向其发送SIGCONT信号让进程转换到可运行状态。

僵死状态(TASK_ZOMBIE):当进程已停止运行,但其父进程还没有询问其状态时,则称该进程处于僵死状态,是表示进程结束但尚未消亡的一种状态。这是由于某些原因被终止的进程,但是在task数组中仍然保留task_struct结构。它像一个已经死亡的进程。

交换状态(SWAPPING):处于交换状态的进程正在执行内存、外存的交换工作。这个状态在2.2.X版的内核中基本已经不使用,在2.4.X版中没有这种状态。

独占状态(EXCLUSIVE):严格地说,这不是一种独立的进程状态。它应该是等待状态的一种,处于独占状态的进程位于等待队列中,当等待的事件发生时,只有处于这种状态的进程被唤醒,其他处于可中断和不可中断等待状态的进程则继续等待。Linux2.4引入独占状态后,如果事件发生,只唤醒处于独占状态的那一个进程,这就可以大大提高Apache这类Web应用的效率,使Linux更适合网络服务器的角色。Linux进程状态见表2-1。

表2-1 Linux系统(2.2.x-2.4.x版本)进程状态表

img2

在Linux2.6中对进程状态进行了调整,调整后的状态值见表2-2。

表2-2 Linux系统(2.6版本)进程状态表

img3

(2)flags项

task_struct中的flags项表示进程的标志。进程标志的含义见表2-3。

表2-3 Linux进程标志

img4

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈