zoukankan      html  css  js  c++  java
  • Linux内核中的jiffies 以及时间的获取time

    http://www.cublog.cn/u/18846/showart_267864.html

        硬件给内核提供一个系统定时器用以计算和管理时间,内核通过编程预设系统定时器的频率,即节拍率(tick rate),每一个周期称作一个tick(节拍)。Linux内核从2.5版内核开始把频率从100调高到1000(当然带来了很多优点,也有一些缺点).
       jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数。譬如,如果计算系统运行了多长时间,可以用 jiffies/tick rate 来计算。jiffies定义在文件<linux/jiffies.h>中:

    extern unsigned long volatile jiffies;

        可以利用jiffies设置超时等,譬如:

    unsigned long timeout = jiffies + tick_rate * 2; // 2秒钟后超时
    if(time_before(jiffies, timeout){
    // 还没有超时
    }
    else{
    // 已经超时
    }

    内核提供了四个宏来比较节拍计数,这些宏定义在文件<linux/jiffies.h>中:

        time_before(unknown, known)
        time_after(unknown, known)
        time_before_eq(unknown, known)
        time_after_eq(unknown, known)

        比较的时候用这些宏可以避免jiffies由于过大造成的回绕问题。
        除了系统定时器外,还有一个与时间有关的时钟:实时时钟(RTC),这是一个硬件时钟,用来持久存放系统时间,系统关闭后靠主板上的微型电池保持计时。系统启动时,内核通过读取RTC来初始化Wall Time,并存放在xtime变量中,这是RTC最主要的作用。

    ===================================

     struct timeval tv;
        do_gettimeofday(&tv);

  • 相关阅读:
    MySQL查看表占用空间大小(转)
    Nginx搭建flv视频点播服务器
    Nginx SPDY Pagespeed模块编译——加速网站载入
    RAD,V模型
    java运算符的优先级
    union和union all的区别
    java数据的5种存储位置(转)
    java对象的初始化过程和创建对象的几种方式
    java异常的原理以及应用
    缓冲与缓存的概念(转)
  • 原文地址:https://www.cnblogs.com/leaven/p/1812338.html
Copyright © 2011-2022 走看看