linux 的计时器机制,补充

原创 2004年09月29日 10:29:00
        任何的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下的真实计时器、虚拟计时器、实用计时器

linux为每个进程维护三种计时器,分别为真实计时器、虚拟计时器、实用计时器。他们三者的区别是: 真实计时器:计算程序运行的实际时间,包括程序运行在用户态消耗的时间+系统调用时间+程序睡眠时间; 虚拟...
  • inuyashaw
  • inuyashaw
  • 2016年09月01日 09:14
  • 1068

Linux C语言计时器使用及实例演示

一般来说,在linux系统中会为每个进程维护三种计时器:真实计时器、虚拟计时器以及实用计时器,一般都是使用真实计时器通过发送SIGALRM信号来进行工作的。 Linux计时器 计时器相关函数:设置...
  • Coding13
  • Coding13
  • 2017年12月07日 17:47
  • 113

Windows/Linux高精度计时器(C++)

Windows/Linux高精度计时器(C++)
  • jacke121
  • jacke121
  • 2017年01月22日 11:46
  • 189

TCP/IP详解--几类定时器的作用(重传 保活定时器)

与数据链路层的ARQ协议相类似,TCP使用超时重发的重传机制。即:TCP每发送一个报文段,就对此报文段设置一个超时重传计时器。此计时器设置的超时重传时间RTO(Retransmission Time...
  • yusiguyuan
  • yusiguyuan
  • 2014年04月02日 21:33
  • 2853

linux 补充原语, 中断,软中断

解决up可能会访问一个不存在的数据结构的问题(down后释放信号量): 见深入3,page216-217.1. completion()对应up()2. wait_for_completion()对应...
  • brucexu1978
  • brucexu1978
  • 2011年03月21日 21:58
  • 842

Linux中vim快捷键(待补充,自己环境可用)

快速插入调试信息: s+i(1.2.3)+enter 快速插入变量信息:\dw 全部收起与全部展开:zm,zn   zc是展开一级 最近操作的文件列表:\be 上一次操作的文件:ctrl+6 对当前...
  • loloxiaoz3
  • loloxiaoz3
  • 2013年11月21日 18:36
  • 1013

Linux进程的计时器和间隔计时器

转载地址:http://blog.csdn.net/joker0910/article/details/6795444 比较常用的时间控制函数就是sleep();让我们当前的进程休眠指定的秒...
  • u014430651
  • u014430651
  • 2015年05月06日 14:54
  • 260

高精度计时器(微秒级)

#include #include #define TRACE_CMH printf extern "C" long long GetCurTime(); extern "C" double ...
  • cabinriver
  • cabinriver
  • 2014年09月09日 14:38
  • 1337

TCP的重传机制

重传机制是TCP 中最重要和最复杂的问题之一。 TCP 每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到 但还没有收到确认,就要重传这一报文段。 由于TCP 的下层是一...
  • dreamxiang68
  • dreamxiang68
  • 2011年12月30日 10:25
  • 1704

Linux-信号机制详解(一)

之前有写过SystemV的信号量机制,现在是信号。这里的信号和前面的信号量是不同的。这里的信号是进程给操作系统或进程的某种信息,让操作系统或者其他进程做出某种反应。       信号是进程间通信机...
  • leex_brave
  • leex_brave
  • 2016年07月17日 00:29
  • 3737
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux 的计时器机制,补充
举报原因:
原因补充:

(最多只允许输入30个字)