1.时钟中断的产生
时钟中断是特别重要的一个中断,因为整个操作系统的活动都受到他的鼓励。系统利用时钟中断维持系统时间,促使环境的切换,以保证所有进程共享CPU;利用时钟中断并进行记账,监督系统工作以及确定未来的调度优先级等工作。可以说“时钟中断”是整个操作系统的脉搏。
从本质上说,时钟中断只是一个周期性的信号,完全是硬件行为,该信号触发CPU去执行一个中断服务程序。
2.时钟中断处理程序
每一次时钟中断的产生都会进行一系列的操作,其中调用的主要函数为do_timer(),操作过程如下:
(1)给jiffies变量增加1.
(2)更新资源消耗系统值,比如当前进程所消耗的系统时间和用户时间。
(3)执行已经到期的定时期。
(4)执行scheduler_tick()函数。
(5)更新墙上时间,该事件存放在xtime变量中。
(6)计算平均负载值。
因为上述工作分别由单独的函数负责完成,所以实际do_timer()执行的代码看起来非常简单:
void do_timer(struct pt_regs *regs)
{
jiffies ++;
update_process_times(user_mode(regs));
update_times();
}
update_process_times()函数根据时钟中断产生的位置,对相关时间进行了更新。
void updat