linux 的计时器机制,补充
来源:互联网 发布:淘宝怎样运营商 编辑:程序博客网 时间:2024/05/22 04:30
任何的cpu如果要支持操作系统的话,必须有一个可编程的内部计时器,周期性的给系统发出定时器中断,这种周期性的定时器中断叫做system clock tick,linux对时间管理是通过使用jiffies为单位的,这是一个内核中的全局变量,每次定时器中断到来它的值自增1。
linux有两种类型的系统计时器,
第一种,也是比较旧的方案,是一个含有32个指向timer struct 结构的指针的静态指针数组,以及还有一个当前处于激活状态的定时器的掩码(timer_active),这个指针数组所指向的timer struct是内部定义好的,在系统初始化时设置的。这很像bottom half handler table bh_base,是不能够供用户使用的,只对内核提供服务。
第二种,也是较新的方案,即链表成员是timer_list结构的一个链表, 它们按照expire time的顺序进行排序。
在每次clock tick中断到来时,系统(因该是时钟中断处理函数)把timer bottom half handler标志位置位,当调度器(scheduler)下次运行时,此timer queue会被处理(see bottom half for detail),timer bottom half handler 会处理以上二者。对于前者,它的掩码(timer_active)会按照bit 1到bit 32的顺序进行处理(分优先级,很类似bottom half hadler table bh_base),如果bit x被置位并且已经expired,则会调用bh_base[x-1]中的处理函数,然会reset bit x。对于后者,系统会遍历此链表,当entry expired时,系统会呼叫相应的处理函数,然后此expired entry 会被从链表中移除。后者的好处是你可以对超时处理函数传递你自己相应的参数。
linux有两种类型的系统计时器,
第一种,也是比较旧的方案,是一个含有32个指向timer struct 结构的指针的静态指针数组,以及还有一个当前处于激活状态的定时器的掩码(timer_active),这个指针数组所指向的timer struct是内部定义好的,在系统初始化时设置的。这很像bottom half handler table bh_base,是不能够供用户使用的,只对内核提供服务。
第二种,也是较新的方案,即链表成员是timer_list结构的一个链表, 它们按照expire time的顺序进行排序。
在每次clock tick中断到来时,系统(因该是时钟中断处理函数)把timer bottom half handler标志位置位,当调度器(scheduler)下次运行时,此timer queue会被处理(see bottom half for detail),timer bottom half handler 会处理以上二者。对于前者,它的掩码(timer_active)会按照bit 1到bit 32的顺序进行处理(分优先级,很类似bottom half hadler table bh_base),如果bit x被置位并且已经expired,则会调用bh_base[x-1]中的处理函数,然会reset bit x。对于后者,系统会遍历此链表,当entry expired时,系统会呼叫相应的处理函数,然后此expired entry 会被从链表中移除。后者的好处是你可以对超时处理函数传递你自己相应的参数。
- linux 的计时器机制,补充
- Linux进程的计时器和间隔计时器
- Linux进程的计时器和间隔计时器
- (笔记)linux下的真实计时器、虚拟计时器、实用计时器
- LINUX RTC机制实现计时器类
- LINUX RTC机制实现计时器类
- LINUX RTC机制实现计时器类
- JavaScript基于计时器的伪线程机制
- 补充的linux命令
- Linux计时器
- linux计时器
- 《深入brew接口机制》的补充
- 遗传算法中函数运行的计时器机制实现(c++)
- U3D 计时器 Invoke() 方法是 Unity3D 的一种委托机制
- linux命令的一些补充
- linux一些指令的补充
- 自学Linux--Linux计时器
- linux 补充
- test
- CMM书籍导读
- Wildlife Protect
- 编写一个STL 中的CString类
- linux faq
- linux 的计时器机制,补充
- CMM实施中容易被忽视的方面
- 一个虚构的CMM改进实例
- 操作系统引导探究
- PXGD网段扫描
- 玩3天!
- JavaScript 参考教程
- JDBC驱动程序类型
- 程序员漫画集连载[1]