【问题标题】:How does the clock() function works internally?clock() 函数在内部是如何工作的?
【发布时间】:2018-03-07 14:37:08
【问题描述】:

c标准库中的clock()函数和其他相关的计时函数内部使用的机制是什么?有人可以用 C 编写类似的函数吗?还是在组装中?

手动编写这样的函数需要什么知识?有必要了解处理器的结构细节吗?

【问题讨论】:

  • 为什么要手动重新编程时钟?
  • @izlin 我不想手动重新编程时钟。

标签: c clock timing processor standard-library


【解决方案1】:

clock() 的实际实现取决于正在运行的内核。请注意,在成熟的操作系统中,您无法直接访问硬件,并且必须使用系统调用等内核机制。

例如通过查看linux version of clock() in glibc,您可以看到它使用times.c 中定义的函数__times(),而该函数又使用Linux 系统调用。

将其与 BSD version 进行比较,后者显然不同并且依赖于 __getrusage()。

要自己编写此类函数,您必须了解内核,而这通常需要您了解运行它的硬件的详细信息。

【讨论】:

  • 但是即使 Linux 内核运行在 intel 或 PowerPC 或其他东西上,它不也是一样的吗?不同硬件上的内核有何不同?
  • 取决于“相同”的含义。 Linux 内核公开的接口最大限度地减少了平台依赖性,但它与在 Intel 或 PowerPC 上运行的二进制文件并不完全相同(在编译期间它也使用单独的平台相关源文件)。 “运行内核”不仅限于Linux内核,还包括BSD、Solaris等。
  • 是否有可能某些 Linux 系统调用在硬件平台上工作而在另一个硬件平台上不工作?什么是运行内核?
猜你喜欢
  • 2011-05-07
  • 2022-12-29
  • 2015-11-25
  • 2020-08-06
  • 2019-02-01
  • 2018-12-15
  • 2013-02-13
  • 2020-11-29
  • 2015-09-18
相关资源
最近更新 更多