0

我正在寻找答案很多天,但他们都没有解决我的问题。黑白系统调用和用户调用有什么区别,我想计算 C 中 printf() 函数的用户 CPU 时间和内核 CPU 时间。用户 cpu 时间是 CPU 执行用户例程所花费的时间和内核 cpu 时间所花费的时间通过 cpu 执行内核例程。我的问题是在调用 printf() 时,最终调用系统调用以在显示时打印字符。我的意思是在例程 printf() 中说哪一部分属于用户,哪一部分属于内核。简单的赋值语句 a=b 是否涉及系统调用?

4

1 回答 1

1

C 中的简单a=b语句不涉及系统调用;这完全在用户空间中执行。

printf()中,大部分代码在用户空间中执行(例如,提供参数的格式)。只有将最终格式化文本写入标准输出才会write调用系统调用。您可以使用strace显示应用程序进行的所有系统调用的工具来查看这一点。

于 2013-03-12T11:22:34.350 回答