我想知道为什么Unix中的time命令总是输出不同的用户CPU时间。据说现在是时候CPU花费执行所需进程的用户代码了,所以它排除了内核管理的任务:
但对于一个带有1000000个元素的冒泡排序的简单C程序,它总是显示用户CPU时间范围从0.3到1.0秒。
我在关于内核和操作系统的经典书籍中找不到关于它的信息。有人,请赐教。
答案 0 :(得分:2)
if(empty($_POST['submit']) === false) {
$email = htmlentities(strip_tags($_POST['email']));
$logname = 'email.txt';
$logcontents = file_get_contents($logname);
if(strpos($logcontents,$email)) {
die('You are already subscribed.');
} else {
$filecontents = $email.', ';
$fileopen = fopen($logname,'a+');
$filewrite = fwrite($fileopen,$filecontents);
$fileclose = fclose($fileopen);
if(!$fileopen or !$filewrite or !$fileclose or '') {
die('Error occured');
} else {
echo 'Your email has been added.';
}
}
} else {
showForm();
}
不是真的。用户时间表示用户模式使用的CPU周期。 有2种执行模式,用户模式(具有有限权限)和内核模式(几乎具有所有权限)。在用户模式中,通常执行不涉及更高级别特权的操作。无论何时进行内核调用/系统调用,用户模式都切换到内核模式。
此处提供了有关CPU模式的更多信息,
因此,即使对于简单的冒泡排序程序,您也会使用相当多的CPU周期。以每个程序的实际秒数测量用户时间可能很困难,也不太有用,因为获得准确的数字将没有多大意义。这将取决于底层硬件,内核版本,共享资源等其他进程的变化很大。即使在连续运行中也会有所不同 - 在这种情况下可以考虑范围。
在一般情况下,用户CPU时间将高于系统CPU时间,但可以反转。