版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/BlueCloudMatrix/article/details/29294529

内核知道连续两次时钟中断的间隔时间。而这个间隔时间就是所谓的节拍,它是从节拍率计算而来。

节拍率:

节拍率也叫系统定时器(硬件)频率或时钟中断频率,用HZ来度量。

在x86体系结构下。节拍率默认100HZ。事实上怎样确定HZ值是一门非常大的学问。提高HZ等同于提高中断解析度。比方HZ=100的时钟的运行粒度为10ms,即系统中的周期事件最快为每10ms运行一次。但当HZ=1000时,解析度为1ms——精细了10倍。这对于触发定时器超时,能够提高精确度。事实上高的HZ会加重系统负担,由于每一次时钟中断就要去运行对应的中断处理程序,这样占用处理器的时间会增多。

Linux支持无节拍操作,会动态调整时钟中断周期,使得空暇时不会被不必要的时钟中断打断,能够省电。

jiffies:

全局变量jiffies(unsigned long)用来记录自系统启动以来产生的节拍的总数。每次时钟中断就会添加该值,所以jiffies一秒内添加的值就为HZ。所以系统运行时间等于jiffies/HZ。

实时时钟RTC:

RTC是用来持久存放系统时间的设备。即便系统关闭后,它也能够靠主板上的微型电池提供的电力继续为系统计时。RTC最基本的作用是在启动时初始化xtime变量。以便得到墙上时间。

与RTC对应的是系统定时器。系统定时器的根本思想是——提供一种周期性触发中断机制。

时钟中断处理程序:

与体系结构相关的例程作为系统定时器的中断处理程序而注冊到内核中。以便在产生时钟中断时。它能够对应地运行。

  • 获得xtime_lock锁,以便对訪问jiffies_64和墙上时间xtime进行保护。
  • 须要时应答或又一次设置系统时钟。
  • 周期性地使用墙上时间更新实时时钟。

  • 调用体系结构无关的时钟例程,tick_periodic()。

tick_periodic()用来进行与体系结构无关的操作。
  • 给jiffies_64变量添加1。

  • 更新资源消耗的统计值。如当前进程消耗的系统时间和用户时间。
  • 运行已经到期的动态定时器。
  • 运行scheduler_tick()。

  • 更新墙上时间,该时间存放在xtime变量中。

  • 计算平均负载值。
定时器:
我们之前提到的下半部推后运行。就须要定时器来告诉我们究竟推后到何时。定时器的使用非常easy。你仅仅须要运行一些初始化工作,设置一个超时时间,指定超时发生后运行的函数,然后激活定时器就OK了。指定的函数将在定时器到期时自己主动运行。定时器并不周期运行,超时后自行撤销。须要又一次创建。

Linux内核设计基础(三)之定时器和时间管理的更多相关文章

  1. (笔记)Linux内核学习(八)之定时器和时间管理

    一 内核中的时间观念 内核在硬件的帮助下计算和管理时间.硬件为内核提供一个系统定时器用以计算流逝的时间.系 统定时器以某种频率自行触发,产生时钟中断,进入内核时钟中断处理程序中进行处理. 墙上时间和系 ...

  2. Linux内核设计基础(九)之进程管理和调度

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/BlueCloudMatrix/article/details/30799225 在Linux中进程用 ...

  3. Linux内核设计基础(五)之内存管理

    我感觉学习操作系统首先要从内存分配和管理入手. 首先我们应该知道现代操作系统是以页为单位进行内存管理的,32位体系结构支持4KB的页.而64位体系结构支持8KB的页.页是用来分配的.怎样才干进行高效和 ...

  4. Linux内核——定时器和时间管理

    定时器和时间管理 系统定时器是一种可编程硬件芯片.它能以固定频率产生中断.该中断就是所谓的定时器中断.它所相应的中断处理程序负责更新系统时间,还负责执行须要周期性执行的任务. 系统定时器和时钟中断处理 ...

  5. linux内核的三种主要调度策略

    linux内核的三种主要调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务 3,SCHED_RR实时调度策略,时间片轮转 实时进程将得到优先调用, ...

  6. Linux之定时器与时间管理 【转】

    转自:http://blog.chinaunix.net/uid-23228758-id-154820.html 定时器与时间管理: 次,为一秒.一般的情况下编程者不要改变这个值,因为内核编很多代码都 ...

  7. Linux内核设计笔记11——定时器

    定时器与时间管理笔记 内核中的时间 时钟中断:内核中的系统定时器以某种频率触发中断,该频率可以通过编程预定. 节拍率HZ:时钟中断的频率称为节拍率. 节拍:相邻两次中断的时间间隔称为节拍,1/节拍率. ...

  8. Linux内核的三种调度策略

    一 Linux内核的三种调度策略:   1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务.一旦占用cpu则一直运行.一直运行直到有更高优先级任务到达或自己放 ...

  9. Linux内核设计与实现 总结笔记(第十一章)定时器和时间管理

    时间管理在内核中占用非常重要的地位,内核中有大量的函数都需要基于时间驱动的,内核对相对时间和绝对时间都非常需要. 一.内核中的时间概念 内核必须在硬件的帮助下才能计算和管理时间,系统定时器以某种频率自 ...

  10. 《Linux内核设计与实现》读书笔记(十一)- 定时器和时间管理【转】

    转自:http://www.cnblogs.com/wang_yb/archive/2013/05/10/3070373.html 系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务 ...

随机推荐

  1. MyEclipse复制js文件乱码

    MyEclipse复制js文件乱码 右击js文件:

  2. SQL-18 查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by

    题目描述 查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no.薪水salary.last_name以及first_name,不准使用order byCREATE ...

  3. ios 第4天

    dealloc method  会在对象释放前调用这个方法(函数)  可以让对象在释放前把一些自己申请的对象 先释放了    满足 谁申请  谁释放 的原则 例如    dealloc 会自动调用   ...

  4. day 69-70 一对一 一对多 多对一联表查询

    day 69 orm操作之表关系,多对多,多对一 多对一/一对多, 多对多{类中的定义方法} day69 1. 昨日内容回顾 1. 单表增删改查 2. 单表查询API 返回QuerySet对象的: 1 ...

  5. TestNG参数化测试-数据提供程序 @DataProvider方式

    在 testng.xml 中指定参数可能会有如下的不足: 1.如果你压根不用 testng.xml. 2.你需要传递复杂的参数,或者从Java中创建参数(复杂对象,对象从属性文件或者数据库中读取的et ...

  6. Eclipse_设置_01_自动提示

  7. ES6 对象的扩展 Object.is()

    ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===).它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0. ES6 提出“Same-va ...

  8. IOS safari 浏览器 时间乱码(ios时间显示NaN) 问题解决

    问题一: 项目中遇到一个关于日期时间在ios中乱码在安卓中安然无恙的问题,焦躁了半天 问题如上图,通过用户选择的时间和当天的天数相加然后在ios上就是乱码 这个界面运用了日期类型的计算,当我们用Jav ...

  9. scp 脚本

    #!/bin/bash ty=$ local_dir=$ remote_ip=$ remote_dir=$ showUsage() { echo -e "\033[31m ty local_ ...

  10. pip install GitHub package

    /********************************************************************************* * pip install Git ...