`

Linux内核中的jiffies

 
阅读更多

        硬件给内核提供一个系统定时器 用以计算和管理时间,内核通过编程预设系统定时器的频率,即节拍率(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最主要的作用。

分享到:
评论

相关推荐

    Linux2.6内核标准教程(共计8-- 第1个)

    Linux内核是Linux操作系统中最核心的部分,用于实现对硬件部件的编程控制和接口操作。《Linux2.6内核标准教程》深入、系统地讲解了 Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先...

    Linux2.6内核标准教程(共计8--第8个)

    Linux内核是Linux操作系统中最核心的部分,用于实现对硬件部件的编程控制和接口操作。《Linux2.6内核标准教程》深入、系统地讲解了 Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先...

    Linux2.6内核标准教程(共计8--第6个)

    Linux内核是Linux操作系统中最核心的部分,用于实现对硬件部件的编程控制和接口操作。《Linux2.6内核标准教程》深入、系统地讲解了 Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先...

    Linux2.6内核标准教程(共计8--第3个)

    Linux内核是Linux操作系统中最核心的部分,用于实现对硬件部件的编程控制和接口操作。《Linux2.6内核标准教程》深入、系统地讲解了 Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先...

    Linux2.6内核标准教程(共计8--第7个)

    Linux内核是Linux操作系统中最核心的部分,用于实现对硬件部件的编程控制和接口操作。《Linux2.6内核标准教程》深入、系统地讲解了 Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先...

    linux内核定时器

    这是一个内核定时器程序,写出了内核定时器的基本骨架,实现每隔10秒打印一句话。

    Linux2.6内核标准教程(共计8--第4个)

    Linux内核是Linux操作系统中最核心的部分,用于实现对硬件部件的编程控制和接口操作。《Linux2.6内核标准教程》深入、系统地讲解了 Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先...

    Linux2.6内核标准教程(共计8--第2个)

    Linux内核是Linux操作系统中最核心的部分,用于实现对硬件部件的编程控制和接口操作。《Linux2.6内核标准教程》深入、系统地讲解了 Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先...

    Linux2.6内核标准教程(共计8--第5个)

    Linux内核是Linux操作系统中最核心的部分,用于实现对硬件部件的编程控制和接口操作。《Linux2.6内核标准教程》深入、系统地讲解了 Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先...

    【嵌入式Linux驱动开发】十四、了解Linux内核定时器使用流程,实现LED闪烁

    一、Linux内核定时器初探 1.1、图形界面配置系统节拍率   中断周期性产生的频率就是系统频率,也叫做节拍率(tick rate),单位是 Hz。系统节拍率是可以设置的,在编译 Linux 内核的时候可以通过图形化界面设置系统...

    Linux时间子系统.docx

    这些文件主要讨论了Linux内核中的时间子系统,包括时钟源(clock source)、时间表示、时间维护者(timekeeper)、定时器引擎(clock_event_device)、低分辨率定时器、高精度定时器(HRTIMER)、动态时钟框架...

    6_jiffies.tasr.gz

    获取内核jiffies值(此为博客http://blog.csdn.net/shallnet 文章对应源码下载)

    Linux内核中的定时

    系统定时器频率(节拍率)是通过静态预处理器定义的,也是HZ,编写内核代码时,不要以为HZ值是固定不变的值。连续两次时钟的间隔时间叫做节拍,它等于节拍率分之一秒。高HZ有利于提供诸如poll和select函数运行的精度...

    Linux时间子系统之时间的表示示例详解

    在Linux内核中,为了兼容原有的代码,或者符合某种规范,并且还要满足当前精度日益提高的要求,实现了多种与时间相关但用于不同目的的数据结构: 1)jiffies和jiffies_64 内核用jiffies_64全局变量记录系统自启动...

    《精通Linux 设备驱动程序开发》.(Sreekrishnan).pdf

     本书适合中高级linux开发人员阅读。 目录 第1章 引言1 1.1 演进1 1.2 gnu copyleft2 1.3 kernel.org2 1.4 邮件列表和论坛3 1.5 linux发行版3 1.6 查看源代码4 1.7 编译内核7 1.8 可加载的模块...

    精通LINUX设备驱动程序开发

    22 2.4.3 短延时 24 2.4.4 pentium时间戳计数器 24 2.4.5 实时钟 25 2.5 内核中的并发 26 2.5.1 自旋锁和互斥体 26 2.5.2 原子操作 30 2.5.3 读—写锁 31 2.5.4 调试 32 2.6 proc文件系统 32 2.7 内存分配...

    ARM_Linux启动分析.pdf

    当采用MILO这样的引导程序来引导Linux时,不需要上面所说的Bootloader,而只需要 vmlinux或vmlinux.gz,引导程序会主动解压加载内核到0x1000(小内核)或0x100000(大内核),并直接进入内核引导部分,即本文的第二...

    vmm_clock:在OpenBSD的管理程序下针对Linux来宾的kvmclock派生的时钟源的实验实现

    它是专门为在OpenBSD的vmm(4)/ vmd(8)虚拟机管理程序框架下以来宾身份运行Linux内核时使用而设计的。 主要目标: 提供的时钟源不会受到无法控制的时钟漂移的影响,这与在较新Linux LTS内核(例如5.4)中使用...

Global site tag (gtag.js) - Google Analytics