linux进程状态转换表,Linux进程的状态转换图

当进程正在被CPU执行,或已经准备就绪随时可由调度程序执行,则称该进程为处于运行状态(running)。进程能够在内核态运行,也能够在用户态运行。当系统资源已经可用时,进程就被唤醒而进入准备运行状态,该状态称为就绪态。这些状态(图中中间一列)在内核中表示方法相同,都被成为处于TASK_RUNNING状态。

◆可中断睡眠状态(TASK_INTERRUPTIBLE)

当进程处于可中断等待状态时,系统不会调度该进程执行。当系统产生一个中断或者释放了进程正在等待的资源,或者进程收到一个信号,均可以唤醒进程转换到就绪状态(运行状态)。

◆不可中断睡眠状态(TASK_UNINTERRUPTIBLE)

与可中断睡眠状态相似。但处于该状态的进程只有被使用wake_up()函数明确唤醒时才能转换到可运行的就绪状态。

◆暂停状态(TASK_STOPPED)

当进程收到信号SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU时就会进入暂停状态。可向其发送SIGCONT信号让进程转换到可运行状态。在Linux 0.11中,还未实现对该状态的转换处理。处于该状态的进程将被做为进程终止来处理。

◆僵死状态(TASK_ZOMBIE)

当进程已中止运行,但其父进程尚未询问其状态时,则称该进程处于僵死状态。

当一个进程的运行时间片用完,系统就会使用调度程序强制切换到其它的进程去执行。另外,若是进程在内核态执行时须要等待系统的某个资源,此时该进程就会调用sleep_on()或sleep_on_interruptible()自愿地放弃CPU的使用权,而让调度程序去执行其它进程。进程则进入睡眠状态(TASK_UNINTERRUPTIBLE或TASK_INTERRUPTIBLE)。

只有当进程从“内核运行态”转移到“睡眠状态”时,内核才会进行进程切换操做。在内核态下运行的进程不能被其它进程抢占,并且一个进程不能改变另外一个进程的状态。为了不进程切换时形成内核数据错误,内核在执行临界区代码时会禁止一切中断。.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值