2012-08-05 76 views
3

当我做$(time sleep 1),我得到:为什么sys time 0在这里?

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

我不知道为什么sys时间为0,所以nanosleep从用户空间叫什么名字?

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

+0

这些是四舍五入的,运行几百次,你会看到稍微不同的时间。 (花在睡眠上的时间没有被计算在内,除非它是一个非真实睡眠的忙碌循环,否则不是CPU时间。) – Mat 2012-08-05 09:35:28

回答

4

来看,我们可以看到,

  1. 真正:时间长的节目走上终止,计算公式为:

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

  2. 用户:在一个结构TMS的tms_utime和tms_cutime值的总和作为由次返回(2)

  3. SYS:在一个结构TMS的tms_stime和tms_cstime值如由次返回的总和(2)

所以,你得到的结果是有效的,意味着你的程序持续了1秒,在那1秒内它使用0秒作为用户时间,0秒作为系统时间。这正是我们应该从该计划期望的。

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

6

因为进程在休眠时没有执行内核空间代码。内核正在执行其他进程或空闲进程,两者都不受睡眠进程的影响。在man page for time