为什么sys时间为0?

时间:2012-08-05 09:33:29

标签: linux time kernel sleep context-switch

当我$(time sleep 1)时,我得到了:

real    0m1.001s
user    0m0.000s
sys     0m0.000s

我不确定为什么sys时间为0,所以从用户空间调用nanosleep

此外,实时是否等于上下文切换时间+实际睡眠时间(1s)?

2 个答案:

答案 0 :(得分:6)

因为进程在休眠时没有执行内核空间代码。内核正在执行其他进程或空闲,这两个进程都不会受到休眠进程的影响。

答案 1 :(得分:4)

查看man page for time,我们可以看到,

  1. 真实:程序终止的时间长度,计算公式如下:

      

    (time at end of program - time at star of program)

  2. 用户:由时间(2)

  3. 返回的struct tms中tms_utime和tms_cutime值的总和
  4. sys :由时间(2)

  5. 返回的struct tms中tms_stime和tms_cstime值的总和

    因此,您获得的结果有效意味着您的程序持续1秒钟,在该1秒内,它使用0秒作为用户时间,0秒作为系统时间。这正是我们对该计划的期望。

    当一个程序处于休眠状态时,它意味着内核不会安排它进行处理,它甚至不会运行no-ops,它只是不会运行所以不会消耗系统时间。