当前位置: 首页 > article >正文

Linux定时器和时间管理

时间驱动的函数,周期执行的函数都需要定时器。
有两种硬件实现计时:系统计时器和实时时钟。

定时器中断

系统定时器是一个可编程芯片,它能以固定频率(可以修改)产生中断,它产生的中断就是定时器中断。
定时器中断负责更新系统时间,也负责执行周期性运行的任务。
系统定时器和时钟中断处理程序是Linux系统内核管理机制的中枢。
时间是根据,中断数间隔*系统已知的中断间隔时间 来计算的。

系统计时:系统计时器

内核必须在系统定时器的帮助下才能计算和管理时间,内核通过计算时间中断来维护时间。

定时器中断的频率:HZ

系统的定时器频率(节拍率)是通过静态预处理定义的,也就是HZ,在系统启动时按照HZ值对硬件进行配置。

周期性函数的执行

就是经过固定的定时器中断后执行。

jiffies

全局变量jiffies用来记录自系统启动以来产生的节拍(定时器中断)总数。
每次定时器中断触发的时钟处理程序都会增加这个值。

系统计时:实时时钟

实时时钟是用来存放系统时间的设备,系统关闭后,它仍然能够依靠主板上的微型电池提供的电力保持系统计时。
当系统启动时,内核通过读取实时时钟来初始化系统的墙上时间,该时间放在xtime变量中。

时钟中断处理程序:每一个时钟中断执行

工作内容:

  1. 获得xtime_lock锁,访问jiffies_64和墙上时间xtiem。
  2. 更新系统时钟。
  3. 给jiffies_64变量增加1。
  4. 更新资源消耗的统计值,比如进程消耗的系统时间。
  5. 执行到期的动态计时器。
  6. 更新墙上时间。

所以内核对进程计时,就是依据时钟中断处理程序的,所以HZ越高,那么就越准。

定时器:可以指定函数在3:30执行

定时器不是周期执行,而是一次性的。
内核会在时钟中断后检查是否有定时器需要执行。


http://www.kler.cn/a/228304.html

相关文章:

  • STM32-CAN总线
  • 风光并网对电网电能质量影响的matlab/simulink仿真建模
  • 软件安全性测试报告如何编写?
  • Tensor 基本操作1 unsqueeze, squeeze, softmax | PyTorch 深度学习实战
  • 基于 Spring Boot 和 Vue.js 的全栈购物平台开发实践
  • 2025年最新汽车零部件企业销售项目管理解决方案
  • arcpy高德爬取路况信息数据json转shp
  • 关于如何将Excel转成Word,可能有一些你想知道的技巧
  • Linux内存管理:(十二)Linux 5.0内核新增的反碎片优化
  • STM32单片机的基本原理与应用(六)
  • 阿里巴巴 Java 开发手册
  • Leetcode 3031. Minimum Time to Revert Word to Initial State II
  • DBA的节前紧急任务:一份全面的数据库自救指南
  • kubeadm部署k8s集群
  • Android BitmapShader setLocalMatrix缩放Bitmap高度重新onMeasure,Kotlin
  • 【教程】微服务使用Feign接口进行远程调用的步骤
  • 【分布式】雪花算法学习笔记
  • 从零开始 TensorRT(4)命令行工具篇:trtexec 基本功能
  • react和antd学习笔记
  • STM32--揭秘中断(简易土货版)
  • Qt 范例阅读: QStateMachine状态机框架 和 SCXML 引擎简单记录(方便后续有需求能想到这两个东西)
  • k8s学习-数据管理
  • Jmeter 01 -概述线程组
  • windows下docker的使用
  • STM32—系统定时器
  • 炸裂!可视化大模型内部架构的实用工具!