在*nix中,是什么原因导致“睡眠”在最高命令中?

2022-08-31 00:30:17

是什么原因导致我在中看到这些过程?如果我调用PHP的函数,这会增加我在中看到的计数吗?在 中具有高数字有什么缺点吗?sleepingtopsleep()sleepingtopsleeping


答案 1

进程在被阻止时处于休眠状态,等待某些内容。例如,它可能已调用并正在等待数据从网络流到达。read()

sleep()确实是让你的过程睡一会儿的一种方法。然而,休眠是除大量计算密集型进程之外的所有进程的正常状态 - 休眠本质上是进程在不执行任何其他操作时执行的操作。大多数进程处于睡眠状态是正常状态 - 如果不是这种情况,则往往表明您需要更多的CPU马力。


答案 2

休眠进程类似于挂起的进程。进程在以下情况下处于休眠状态:

  1. 它正在执行 I/O 操作(阻止 I/O)
  2. 当您订购它通过睡眠进入睡眠状态时()

任何进程的状态都可以是:

  • 就绪:当它准备好执行并且它在队列中等待具有特定优先级的处理器调用时
  • 休眠:当它正在运行时,它被阻止进行 I/O 操作或执行 sleep()
  • 正在运行:当处理器执行进程时,它变得正在运行。

状态含义

  • R 可运行

  • T 已停止

  • P 在 Pagein 上等待

  • D 等待 I/O

  • S 睡眠< 20 秒

  • I Idle - 睡眠 >20 秒

  • Z 僵尸或已失效


推荐