Linux 时钟_定时器

 

1 时钟

时钟这个东西,实际上是作为一种工具而存在,内核通过时钟来感知、管理时间。这里的时钟,更主要的还是软件上的概念,系统通过维护软件时钟来追踪时间

1.1 几个概念

1、 时钟中断:由硬件产生的电信 ,一切的缘起,哈哈。该中断产生时,内核通过特殊的中断处理程序进行处理

2、 节拍率(

变量类型为

unsigned long nextTick = jiffies + 1

unsigned long 5sLater = jiffies + 5*HZ

作为

每一本讲必须实现的)

THREAD_CPUTIME_ID

struct timeval {

time_t  tv_sec; // seconds

susecond_t  tv_usec; // microseconds

}

struct timespec {

time_t  tv_sec; // seconds

long  tv_nsec; // nanoseconds

}

显而易见的原因,后者更受用户的青睐。

2.3.3 标准

typedef long clock_t;  对于不同函数,该变量表示

忙等待的原理最简单:通过不断的循环,直到经过了设定的时钟节拍。下面是其典型示例:

Unsigned long  delay  =  jiffies + 100;

While (time_before(jiffies , delay))  ;

忙等待唯一的优点就是实现简单了,但是缺点却有一箩筐:精度低、等待时占用

在学习进程的时候,我们已经知道当进程等待某个事件的发生时,是能够将自己挂起的,即将自己加入等待队列中。这就是系统提供的第三种延迟机制

在进程时,我们知道了– 临时定时器

Linux

同时在调用这些接口时,需要处理返回值或者

前者是简单的小闹钟,结合信 量使用,精确度在秒级

后者则更为高级,其提供了 int timer_getoverrun(timer_t timerid);
int timer_gettime(timer_t timerid, struct itimerspec *value);
int timer_settime(timer_t timerid, int flags,
               const struct itimerspec *restrict value,
               struct itimerspec *restrict ovalue);

它实际上就是进程间隔定时器的增强版,除了可以定制时钟源(

传统

硬件配置也极大的影响着定时器的精度,有的比较老的遗留系统可能没有比较精确的硬件定时器,那样的话我们就无法期待它能提供多高的时钟精度了。相反,如果系统的配置比较高,比如说对称多处理系统,那么即使有的处理器负载比较高,我们也能通过将一个处理器单独分配出来处理定时器来提高定时器的精度。

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34464 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2011年10月22日
下一篇 2011年10月23日

相关推荐