Linux下应用开发可利用的计时器技术2:CPU时钟滴答

本文介绍了Linux内核时钟滴答的工作原理,解释了如何通过/proc/stat获取系统启动以来的CPU时间,并计算当前时间。通过读取时钟频率和解析/proc/stat文件获取时钟滴答数,但这种方法存在精度误差,适合对时间精度要求不高的应用。多线程并发读取可能导致CPU利用率升高。
摘要由CSDN通过智能技术生成

      在Linux的内核时钟驱动中,当PIT通道0的计数器减到0时,就在IRQ0中产生一次时钟中断,也即一次时钟滴答。Linux用宏HZ来表示时钟滴答的频率。且在不同的平台上HZ有不同的定义值。对于ALPHA和IA62平台HZ的值是1024,对于SPARC、MIPS、ARM和i386等平台HZ的值都是100。

      该宏在i386平台上的定义如下(include/asm-i386/param.h):
      #ifndef HZ
      #define HZ 100
      #endif
     

      通过以上了解到,在i386平台下,1秒种产生100次时钟滴答。那么,如果我们知道从系统启动起到当前时刻的时钟滴答数,那也就能计算出当前时刻相对于系统启动时间的相对时间了。进而可以设计出应用程序自己的定时器。

      现在剩余的问题就是,我们如何获知从系统启动到当前时刻共经历了多少时间滴答呢?幸运的是,/proc/stat中的统计数据提供了我们想要的数据。/proc/stat中包含了一些内核和系统的统计信息,该数据都是自系统启动以来的各项指标的总计。

      例如

> cat /proc/stat
  cpu  2255 34 2290 22625563 6290 127 456 0 0
  cpu0 1132 34 1441 11311718 3675 127 438 0 0
  cpu1 1123 0 849 11313845 2614 0 18 0 0

 

      其中cpu行展示了自系统启动以来,cpu执行所有各项不同操作分别消耗的时钟滴答数。"CPU[n]"代表的是第n个cpu,"CPU"行是所有CPU的累积数据。没行各有9列,分别是&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值