了解Linux内核引入了两种类型的计时器:动态计时器和间隔计时器。见下文。
间隔计时器的定义是什么?我不确定书中是否已定义它。
动态计时器和间隔计时器这两个概念是否互斥?换句话说,软件计时器不能同时是动态计时器和间隔计时器吗?
我以为它们是互斥的,直到我看到setitimer( )
创建的ITIMER_REAL间隔计时器是在动态计时器上实现的,所以我不确定这两种计时器之间的关系。
谢谢。
Linux考虑两种类型的计时器,称为动态计时器和 间隔计时器。第一种是内核使用的,而间隔计时器可以由用户模式下的进程创建。
...
动态计时器可以动态创建和销毁。
...
Linux允许用户模式进程激活称为 间隔计时器。计时器使Unix信号(请参见第11章)定期发送到进程。也可以激活 一个间隔计时器,以便它在指定的时间后仅发送一个信号 延迟。
...
间隔计时器是通过POSIX setitimer()系统调用激活的。第一个参数指定以下哪个 应采用的政策:
ITIMER_REAL实际经过的时间;该过程收到SIGALRM 信号。
ITIMER_VIRTUAL该进程在用户模式下花费的时间;过程 接收SIGVTALRM信号。
ITIMER_PROF进程在用户和内核中花费的时间 模式;该过程将接收SIGPROF信号。
ITIMER_REAL间隔计时器通过使用动态实现 计时器,因为即使在以下情况下内核也必须向进程发送信号 它不在CPU上运行。
ITIMER_VIRTUAL和ITIMER_PROF间隔计时器不需要 动态计时器,因为它们可以在过程中进行更新 运行。