时钟中断处理程序

   时钟中断处理程序可以划分为两个部分:体系结构相关部分和体系结构无关部分。

 

 与体系结构相关的例程作为系统定时器的中断处理程序而注册到内核中,以便在产生时钟中断时,它都能够相应地运行。这部分处理程序主要完成:

获得xtime_lock锁,以便对访问jiffies_64墙上时间xtime进行保护

需要时应答或重新设置系统时钟

周期性地使用墙上时间更新实时时钟

调用体系结构无关的时钟例程:do_timer()

  1. 在<Time.h(incluce/linux)>中
  2. extern struct timespec xtime;
  3. #ifndef _STRUCT_TIMESPEC
  4. #define _STRUCT_TIMESPEC
  5. struct timespec {
  6.     time_t  tv_sec;     /* seconds */
  7.     long    tv_nsec;    /* nanoseconds 十亿分之一秒*/
  8. };
  9. #endif

  中断服务程序主要通过调用与体系结构无关的例程do_timer()执行下面的工作:

给jiffies_64变量增加1

更新资源消耗的统计值,比如当前进程所消耗的系统时间和用户时间

执行已经到期的动态定时器

执行scheduler_tick()函数

更新墙上时间,该时间存放在xtime变量中

计算平均负载

 

  1. 在<Time.c(kernel)>中
  2. /*
  3.  * Called by the timer interrupt. xtime_lock must already be taken
  4.  * by the timer IRQ!
  5.  */
  6. static inline void update_times(unsigned long ticks)
  7. {
  8.     update_wall_time(); /* 更新墙上时间 */
  9.     calc_load(ticks); /* 计算平均负载值*/
  10. }
  11.   
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值