当我$(time sleep 1)
时,我得到了:
real 0m1.001s
user 0m0.000s
sys 0m0.000s
我不确定为什么sys
时间为0,所以从用户空间调用nanosleep
?
此外,实时是否等于上下文切换时间+实际睡眠时间(1s)?
答案 0 :(得分:6)
因为进程在休眠时没有执行内核空间代码。内核正在执行其他进程或空闲,这两个进程都不会受到休眠进程的影响。
答案 1 :(得分:4)
查看man page for time,我们可以看到,
真实:程序终止的时间长度,计算公式如下:
(time at end of program - time at star of program)
用户:由时间(2)
sys :由时间(2)
因此,您获得的结果有效意味着您的程序持续1秒钟,在该1秒内,它使用0秒作为用户时间,0秒作为系统时间。这正是我们对该计划的期望。
当一个程序处于休眠状态时,它意味着内核不会安排它进行处理,它甚至不会运行no-ops,它只是不会运行所以不会消耗系统时间。