c 语言 输出 real time sys time,unix - 'real','user'和'sys'在time(1)的输出中是什么意思?...

Real,User和Sys处理时间统计信息

其中一件事与另一件事情不同。 实际是指实际经过的时间; User和Sys指的是仅由进程使用的CPU时间。

真实是挂钟时间 - 从通话开始到结束的时间。 这是所有经过的时间,包括其他进程使用的时间片和进程花费的时间(例如,如果它等待I / O完成)。

用户是进程内用户模式代码(内核外)花费的CPU时间。 这只是执行过程时使用的实际CPU时间。 流程花费的其他流程和时间不计入此数字。

Sys是进程内核中花费的CPU时间。 这意味着执行内核中系统调用所花费的CPU时间,而不是仍在用户空间中运行的库代码。 与'user'一样,这只是进程使用的CPU时间。 有关内核模式(也称为“管理程序”模式)和系统调用机制的简要说明,请参见下文。

malloc将告诉您进程使用的实际CPU时间。 请注意,这是跨所有CPU的,因此如果进程有多个线程(并且此进程在具有多个处理器的计算机上运行),则可能超过fread(通常发生)报告的挂钟时间。 请注意,在输出中,这些数字包括所有子进程(及其后代)的fwrite和malloc时间,以及它们可能被收集的时间,例如: 通过malloc或malloc,尽管底层系统调用将分别返回进程及其子进程的统计信息。

统计数据来源于malloc

malloc报告的统计数据来自各种系统调用。 “用户”和“系统”来自malloc或malloc,具体取决于特定系统。 “真实”是根据从malloc电话收集的开始和结束时间计算得出的。 根据系统的版本,fread也可以收集各种其他统计信息,例如上下文切换的数量。

在多处理器计算机上,多线程进程或分叉子进程可能会比CPU总时间小 - 因为不同的线程或进程可能并行运行。 此外,报告的时间统计来自不同的来源,因此对于非常短的运行任务记录的时间可能受到舍入误差的影响,如原始海报给出的示例所示。

关于内核与用户模式的简要介绍

在Unix或任何受保护的内存操作系统上,“内核”或“超级用户”模式是指CPU可以操作的特权模式。某些可能影响安全性或稳定性的特权操作只能在CPU运行时完成 这种模式; 这些操作不适用于应用程序代码。 这种动作的一个例子可能是操纵MMU以获得对另一个进程的地址空间的访问。 通常,用户模式代码不能这样做(有充分的理由),尽管它可以从内核请求共享内存,这可以由多个进程读取或写入。 在这种情况下,通过安全机制从内核显式请求共享内存,并且两个进程必须显式附加到它才能使用它。

特权模式通常称为“内核”模式,因为内核由在此模式下运行的CPU执行。 为了切换到内核模式,您必须发出一个特定的指令(通常称为陷阱),它将CPU切换到以内核模式运行,并从跳转表中保存的特定位置运行代码。 出于安全原因,您无法切换到内核模式并执行任意代码 - 陷阱通过无法写入的地址表进行管理,除非CPU以管理员模式运行。 使用显式陷阱编号进行陷阱,并在跳转表中查找地址; 内核具有有限数量的受控入口点。

C库中的“系统”调用(特别是手册页第2节中描述的那些)具有用户模式组件,这是您实际从C程序调用的组件。 在幕后,他们可能会向内核发出一个或多个系统调用来执行特定服务(如I / O),但它们仍然可以在用户模式下运行代码。 如果需要,也可以从任何用户空间代码直接向内核模式发出陷阱,尽管您可能需要编写汇编语言片段来为调用正确设置寄存器。 可以在此处找到描述Linux内核提供的系统调用的页面以及设置寄存器的约定。

更多关于'sys'的信息

您的代码无法通过用户模式执行某些操作 - 例如分配内存或访问硬件(HDD,网络等)。这些都在内核的监督下,只有它才能做到。您执行的某些操作(如malloc或fread/fwrite)将调用这些内核函数,然后将计为“sys”时间。不幸的是,它并不像“每次调用malloc都将计入'sys'时间”那么简单。对malloc的调用将自己进行一些处理(仍然计入'用户'时间),然后在它可能调用内核中的函数的某个地方(在'sys'时间内计算)。从内核调用返回后,'user'会有更多时间,然后malloc将返回到您的代码。至于何时发生切换,以及在内核模式下花费了多少......你不能说。这取决于库的实现。此外,其他看似无辜的功能也可能在后台使用malloc等,这将在'sys'中再次有一些时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值