版权声明:本文为博主原创文章。未经博主同意不得转载。 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. net core 获取网站目录

    AppContext.BaseDirectory 获取项目的根目录

  2. DevExpress v18.1新版亮点——Analytics Dashboard篇(一)

    用户界面套包DevExpress v18.1日前正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress Analytics Dashboard v18.1 的新功能,快 ...

  3. pragma comment的使用 pragma预处理指令详解

    pragma comment的使用 pragma预处理指令详解   #pragma comment( comment-type [,"commentstring"] ) 该宏放置一 ...

  4. 设置网页icon标志

    下载一个你喜欢的icon,文件格式为ico,然后将这个文件重命名为favicon.ico,并把文件放在网站的根目录下. 一般在ie8版本以上都支持icon图标.但是在此版本一下,我们需要添加一段代码. ...

  5. css 实现省略号. text-overflow: ellipsis; 同时设置四个属性才可以.

    这个同时需要. text-overflow  ;  overflow  ;  white-space ; width ;  四个属性才可以. <!DOCTYPE html> <htm ...

  6. 在Intellij IDEA中修改模板中user变量名称

    在Intellij IDEA中的注释模板中的${user}名称是根据当前操作系统的登录名来取的,有时候登录名称和我们实际的user名称并不相同. 修改方法如下: 方法一:可以在settings的fil ...

  7. python第一天 计算机基础

    计算机硬件组成 控制器: 运算器 存储器I/O设备 与运行程序有关的三大核心硬件 cpu,内存,硬盘 运行软件时,硬件的运作流程 1.软件最先存放于硬盘当中,软件的代码运行时会由硬盘读入内存 2.cp ...

  8. java网络编程ServerSocket类 和Socket类的常用构造方法及其方法

    Socket类Socket(InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号.Socket(String host, int po ...

  9. 【转载】 AI会议的总结(by南大周志华)

    原文地址: https://blog.csdn.net/LiFeitengup/article/details/8441054 最近在查找期刊会议级别的时候发现这篇博客,应该是2012年之前的内容,现 ...

  10. Android内核栈溢出与ROP(CVE-2013-2597)

    一.准备 由于内核栈不可执行(NX),栈溢出利用需用到ROP.简单回顾一下ARM ROP. 漏洞演示代码如下,网上随便找了个. char *str="/system/bin/sh" ...