linux系统下程序定时测量.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux系统下程序定时测量

Linux 系统下程序定时及测量 杨 飞 2009-12-25 主要内容 内核时钟与定时器原理 软件定时方法 程序运行时间测量 内核时钟与定时器原理 1.时钟硬件 主要与三种硬件相关 实时时钟 RTC(Real time clock) 可编程间隔定时器PIT(Programmable Interval Timer) 时间戳计数器TSC(Time Stamp Counter) 通过主板小电池供电给RTC中的振荡器 整个系统的计时标准 实时时钟 RTC 内核时钟与定时器原理 可编程间隔定时器PIT 采用的最典型的芯片是Intel 8253/8254可 编程定时/计数芯片 每隔一定周期通过IRQ0发出时钟中断 时钟频率HZ是用来定义每一秒有几次timer interrupts,可以用 Asm/Param.h 查看 100HZ 250HZ 1000HZ 可选择 滴答Tick是HZ的倒数,意即timer interrupt每发生一次中断的时间。 Linux中用全局变量jiffies表示系统自启动以来的时钟滴答数目。 内核时钟与定时器原理 64位寄存器、用作时间戳计数器 Linux在系统初始化的时候确定时钟信号CLK(CPU的实际频率)的频率 它在每个时钟信号CLK 到来时+1 利用汇编指令rdtsc读取TSC的值。通过CPU的TSC,操作系统通常可以得到更为精准的时间度量。 时间戳计数器TSC 内核时钟与定时器原理 2 定时器 定时器通过软件实现,包含一个时间范围,表明需要多长时间到期。这个时间范围的计算是把jeffies的当前值加上持续的时钟滴答数得到。 linux系统提供3种类型的定时器: (1)静态定时器 (2)动态定时器 (3)间隔定时器 其中(1)和(2)由系统内核使用,(3)由进程在用户态使用 Linux系统有用户模式和核心模式两种。进程执行可以在两种模式上运行。 核心模式的进程:优先级别较高;运行效率高;较强的底层控制能力。 用户模式的进程:优先级别较低;不能直接存取内核,可以通过授权的系统调用访问内核资源 进程执行时间:用户模式下执行时间和核心模式执行时间。 内核时钟与定时器原理 内核时钟与定时器原理 进程采用的三种间隔定时器: ITIMER_REAL:不管进程是否运行以及处于什么模式,定时器启动后每个时钟滴答都将其间隔计数器减1,当减到0值时,内核向进程发送SIGALRM信号 ITIMER_VIRTUAL:当进程在用户模式执行时,定时器启动后每个时钟滴答都将其间隔计数器减1,当减到0值时,内核向进程发送SIGVTALRM信号。 ITIMER_PROF:进程在用户模式和核心模式运行时,定时器启动后每个时钟滴答都将其间隔计数器减1,当减到0值时,内核向进程发送SIGPROF信号 内核时钟与定时器原理 struct itimerval { ??? struct timeval it_interval; /* 定时器重启动的间隔值 */ ??? struct timeval it_value;??? /* 定时器启动的初始值 */ }; struct timeval { ??? long tv_sec;??????????????? /* 秒 */ ??? long tv_usec;?????????????? /* 微秒(1/1000000) */ }; 相关数据结构及变量 由于间隔定时器的间隔计数器的内部表示方式与外部表现方式互不相同,因此有必要实现以微秒为单位的timeval结构和为时钟滴答次数单位的jiffies之间的相互转换。Linux在kernel/itimer.c中实现了其互相转换的两个函数——tvtojiffies()函数和jiffiestotv()函数 定时器的精度 取决于系统的时钟中断频率HZ Jiffies:系统启动以来的时钟滴答数,32位的无符号整数全局变量jiffies, 每次时钟中断时加1(时间间隔1ms、4ms、10ms)。 Xtime:是timeval结构的全局变量。用来表示当前时间距UNIX时间基准1970-01-01 00:00:00的相对秒数值,时间精度是纳秒。 内核时钟与定时器原理 软件定时方法 常用的定时: setitimer ()精度微秒级,最多只能开设3个定时器 函数原型: int setitimer(int which, const struct itimerval *value, struct itimerval *ovalu

文档评论(0)

daoqqzhuan3 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档