读《linux内核设计与实现》10.7.3实现定时器时,有一句话:“为了提高搜索效率,内核将定时器按它们的超时时间划分为五组。当定时器接近时,定时器随组一起下移。” 不理解到底怎么分组的,后来在网上查了一下:
内核注册定时器最终都会通过调用internal_add_timer来实现.具体的工作方式是这样的:
1 如果定时器在接下来的0~255个jiffies中到期,则将定时器添加到tv1.
2 如果定时器是在接下来的256*64个jiffies中到期,则将定时器添加到tv2.
3 如果定时器是在接下来的256*64*64个jiffies中到期,则将定时器添加到tv3.
4 如果定时器是在接下来的256*64*64*64个jiffies中到期,则将定时器添加到tv4.
5 如果更大的超时,则利用0xffffffff来计算hash,然后插入到tv5(这个只会出现在64的系统).
详细内容可以参考地址:
阅读(726) | 评论(0) | 转发(0) |