定时器和延迟如何在低级别上工作

时间:2012-11-02 17:05:37

标签: timer delay theory timing low-level

关于这个问题,我真的找不到任何有趣的东西,但是我一直想知道任何编程语言中的定时器和延迟是如何工作的。

据我了解,CPU会尽可能快地执行所有内核中的指令(取决于其时钟速度),并且只要有任何指令要执行(有一个指令)正在运行,活动线程。

我不认为有一种直接的方法来操纵实时关注的流程。然后我想知道在很多很多情况下会遇到像动画这样的东西:

  • 在Windows 7操作系统中,当您将鼠标移到它上方时,开始菜单按钮会逐渐变亮;
  • 在flash中,有一个时间轴,flash文档中的所有对象都根据FPS设置和时间线进行动画处理;
  • jQuery支持各种动画;
  • 代码执行延迟......

计算机(主板)是否有物理计时器?就像CPU有寄存器来执行其操作并在计算之间保存数据?我还没有在互联网上找到任何相关信息。操作系统是否有一些非常复杂的编程,为与时序相关的所有事情提供最低级别的API?

我真的很好奇答案。

2 个答案:

答案 0 :(得分:3)

大多数(可能是所有)CPU由主板上的时钟驱动,每隔一段时间“滴答”(生成一个信号)。这就是处理器上的Megahertz(MHZ)或Gigahertz(GHz)等级告诉你的,这个时钟运行的速度是多少。这就是“超频”所指的,当您读到处理器可以安全地超频到某个更高的GHz设置时。您在上面描述的大部分内容都是由此时钟生成的“滴答”触发的。这可以控制CPU尝试执行下一条指令的频率,实际上它执行所有操作的频率......

请勿将此时钟与Real-Time Clock混淆,后者会记录时间。所有对“系统时间”或“服务器时间”的引用都使用实时时钟,这是主板上的一个独立硬件,可以跟踪时间,即使计算机已关闭。

这两个“时钟”彼此独立,用于两个完全不同的目的。一个驱动所有CPU处理。如果一个指定的进程(比如将两个整数相乘)将需要127个cpu周期,那么它需要多少实时时间完全取决于cpu时钟设置为什么千兆赫...如果它的设置为3.0 Ghz,那意味着cpu每秒可以执行30亿个处理器周期,因此需要127个周期才能达到127/30亿秒。如果你在主板上放置一个不同的时钟CPU,那么相同的乘法将花费更多(或更少)的时间。这些都与实时时钟没有任何关系,它只跟踪它的时间。

答案 1 :(得分:-1)

操作系统支持“睡眠”调用的某种变体,它将执行放弃到系统上运行的其他进程。如果所有进程都处于休眠状态,那么内核会告诉处理器暂停一段时间 - 现代处理器有一个明确指示的指令。