博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux内核中的jiffies
阅读量:4139 次
发布时间:2019-05-25

本文共 736 字,大约阅读时间需要 2 分钟。

 

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

转载地址:http://demvi.baihongyu.com/

你可能感兴趣的文章
Linux 查看端口使用情况
查看>>
文件隐藏
查看>>
两个linux内核rootkit--之二:adore-ng
查看>>
两个linux内核rootkit--之一:enyelkm
查看>>
关于linux栈的一个深层次的问题
查看>>
rootkit related
查看>>
mysql-应用案例-视图的应用
查看>>
什么是虚拟机?
查看>>
Microsoft Visual C++ 和 Borland C++ Builder 之比较
查看>>
C++ Builder 中定时器的应用
查看>>
Notepad++ 是程序员的必备利器之一
查看>>
Source Insight : 程序员最得心应手的代码阅读和编辑工具(高效)
查看>>
如何用C语言获取系统的用户登录名?
查看>>
如何用C语言获取系统的sid信息?
查看>>
C/C++中如何写长串(字符数组的拼接)?
查看>>
strtok函数真是个蹩脚而又恶心的设计(千万不要嵌套使用strtok函数)
查看>>
Windows和Linux的netstat
查看>>
C++如何实现string的trim功能? (已经包含trimLeft和trimRight)
查看>>
如何确保一个函数的被调用次数不少于另外一个函数的被调用次数?
查看>>
从netstat看网络编程
查看>>