/*--------------------------------------
欢迎转载:http://kylinux.cublog.cn
---------------------------------------*/
终于找点时间来总结时钟中断,呵呵,爱上linux了。
时间管理在内核占有非常重要的地位。相对于事件驱动而言,内核中大量的函数都是基于时间驱动的。
其中有些函数是周期执行的,像调度程序中的运行队列进行平衡调整。
时钟是整个操作系统的脉搏,它为进程的时间片调度,定时事件提供了依据.另外,用户空间的很多操作都依赖于时钟,例如select.poll,make. 操作系统管理的时间为分两种,一种称为当前时间,也即我们日常生活所用的时间.这个时间一般保存在CMOS中.主板中有特定的芯片为其提供计时依据.另外一种时间称为相对时间.例如系统运行时间.显然对计算机而然,相对时间比当前时间更为重要.
内核通过控制时钟中断维护时间,且时钟中断对于管理操作系统相当的重要,大量内核函数的生命周期
都离不开流逝的时间的控制。时钟中断的作用:
1.更新系统运行时间
2.更新实际时间
3.在SMP系统中,均衡调度程序中各处理器上的运行队列。如果运行队列负载不均衡的话,尽量使
它们均衡
4.检查当前进程是否耗尽自己的时间片。如果用尽,就重新进行调度
5.运行超时的动态定时器
6.更新资源消耗和处理器的时间统计值
时钟中断处理程序具体执行的工作:
1.获得xtime_lock锁,以便对访问jiffies_64和墙上时间进行更新
2.需要时应答或重新设置系统时钟
3.调用do_timer(),执行以下工作:
1>给jiffies_64变量增加1;
2>更新资源消耗统计值,比如当前进程所消耗的系统时间和用户时间
3>执行已经到期的动态定时器
4>执行scheduler_tick(),函数减少当前运行进程的时间片计数值并且
设置need_resched标志
5>更新实际时间,存放在xtime变量中,计算平均负载值。
中间的调度过程和代码解释前面已经有详细解释了。关于时钟中断就分析到这了,以后我想到那点
重要我会加的,谢谢。
我是西邮人,9.20自由软件日在我们学校举行,很激动,记得去年加入linux兴趣小组
还是懵懂的很,只是在windows虚拟机装过.现在windows没了,只剩下我可爱的ubuntu了,
一年时间了,自己多少还是学到点东东,不过还有很多盲点,硬件,网络的知识感觉好陌生了,
得加油了。
期待自由软件日活动的举行。
Dreams start here..
阅读(2915) | 评论(1) | 转发(2) |