Chinaunix首页 | 论坛 | 博客
  • 博客访问: 504157
  • 博文数量: 68
  • 博客积分: 5011
  • 博客等级: 大校
  • 技术积分: 806
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-30 22:06
文章分类
文章存档

2011年(1)

2009年(8)

2008年(59)

我的朋友

分类: LINUX

2008-09-18 21:57:08

/*--------------------------------------
  欢迎转载: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..
阅读(2878) | 评论(1) | 转发(2) |
给主人留下些什么吧!~~

niutao.linux2008-09-23 19:53:36

收获了这一个“检查当前进程是否耗尽自己的时间片。如果用尽,就重新进行调度”,刚好解释了我在进程那里的一个疑问。