linux 定时器

news2024/12/28 19:12:06

Linux 系统实现底半部的机制主要有tasklet,工作队列和软中断。

tasklet 和工作队列都是调度中断底半部的良好机制,tasklet 基于软中断实现。

内核定时器也依靠软中断实现;内核中的延时是忙等待或者睡眠等待,为了充分利用CPU资源,使系统有更好的吞吐性能,在对延迟时间的要求并不是很精确的情况下,睡眠等待通常是值得推荐的。

kernel/time/timer.c

start_kernel 时,会调用init_timer 初始化timer 并注册软中断

raise_softirq(TIMER_SOFTIRQ)

timer 中断处理函数中,更新处理器timer 并实时触发软中断

不同类型定时器,不同的回调函数里面会调用  update_process_times

参考

https://www.cnblogs.com/lingjiajun/p/11944753.html

https://www.cnblogs.com/hellokitty2/p/15666357.html

kernel/time/tick-sched.h  

tick_device  不同模式

 

周期模式:

scheduler_tick()具体被调用流程:tick中断->

tick_handle_periodic(tick_periodic())->update_process_times()->scheduler_tick()

oneshot 模式或者nohz

tick中断->tick_sched_timer(tick_sched_handle())->update_process_times()->scheduler_tick()。

设置timer 到期回调函数

fs/timerfd.c

设置timer 到期回调函数

tick_sched_timer 回调函数太耗时,导致timerfd_tmrproc 回调函数滞后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/506363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

还在找ChatGPT的国内镜像?这些都很不稳定,试试这两个

ChatGPT 因为账号限制的原因,注册的流程比较复杂,特别是需要国外的手机号进行接收验证码,这就难坏了很多国内的用户。 为了能用上ChatGPT 很多人免费的搭建了一些国内能够使用的ChatGPT 。这些网址不用魔法就能够使用ChatGPT ,非…

基于docker的apisix网关的java插件开发

基于docker的apisix网关的java插件开发 1 创建java插件项目1.1 从github上获取demo1.2 改造demo 2 快速部署2.1 重新制作apisix镜像2.2 修改/apisix-docker/example/apisix_conf/config.yaml2.3 修改/apisix-docker/example/docker-compose.yml2.4 重新启动apisix网关 3 apisix…

网络基础学习:osi七层模型

osi七层模型 什么是OSI,什么是ISO?为什么ISO要提出OSI网络七层模型?OSI七层的划分以及具体内容第七层 应用层第六层 表示层第五层 会话层第四层 传输层第三层 网络层第二层 数据链路层第一层 物理层 每一层与设备的对应关系 什么是OSI,什么是…

大模型混战,最先实现“智慧涌现”的会是谁?

作者 | 曾响铃 文 | 响铃说 几秒钟写出了一篇欢迎词; 小说人物乱入现实,快速创作不重样的故事; 鼠标一点,一封英文工作沟通邮件撰写完成; 准确解出数学应用题,还给出解题步骤; 甚至还能理…

【微控制器】16KB R5F102AAASP、R7FA2L1A93CFL 128KB和R7FA2E1A73CFJ 64KB 嵌入式技术资料

R5F102AAASP RL78 16位微控制器具有超低功耗、增强性能、高集成度和各种强大的外设功能。得益于以上特性,RL78 MCU非常适合用于各种应用,包括电池供电设备和家用应用。 RL78微控制器MCU系列包括通用和专用器件。这些MCU可为系统设计人员提供高级省电特性…

实验五 Java多线程程序设计

实验目的 掌握Runnable接口实现多线程的方法掌握Thread类实现多线程的用法掌握Java语言中多线程编程的基本方法 实验内容 线程接力(45分) 编写一个应用程序,除了主线程外,还有三个线程:first、second和third。firs…

MySQL基础(二十四)索引的数据结构

1 为什么使用索引 顺序查询和数据使用二叉树结构再进行查询,如图: 2 索引及其优缺点 2.1 索引概述 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 **索引的本质:**索引是数据结构。你…

第九章 使用Vsftpd服务传输文件

文章目录 第九章 使用Vsftpd服务传输文件一、文件传输协议1、FTP介绍2、FTP工作模式 二、Vsftpd服务程序1、安装Vsftpd服务程序2、防火墙配置3、过滤注释信息并通过重定向符写回原始的主配置文件4、Vsftpd服务程序常用的参数以及作用5、匿名访问模式(1)、…

【自己更换模型】如何用 Serverless 一键部署 Stable Diffusion?

作者:寒斜 上一篇讲了如何使用 Serverless Devs 和函数计算快速体验部署 Stable Diffusion,本篇继续聊聊如何解决动态模型加载的问题,从玩起来到用起来。 思路 其实很简单, 我们只需要将镜像里面的动态路径映射到 NAS [ 1] 文件…

为什么调度也需要“血缘分析”和“影响分析”?

摘要:数据治理中经常要遇表或者字段级“血缘分析”和“影响分析”,但是真正在数据ETL调度操作过程中使用影响和血缘分析频繁,看白鲸开源的WhaleStudio如何解决这个难题。 提到“血缘分析”和“影响分析”,普通开发者第一印象就是数…

【Java EE 初阶】线程池简介及实现过程

目录 1.线程池是什么? 2.为什么要使用线程池? 3.如何使用线程池 1.JDK给我们提供了一些方法来创造线程池 4.设计模式之工厂模式 1.工厂模式用途 5.自定义一个线程池 1.可以提交任务到线程池,那么就会有一种数据结构来保存我们提交的任…

java lambda表达式详解

一、Lambda初识 我们知道,在Java中,接口是不能实例化的,但是接口对象可以指向它的实现类对象。如果接口连实现对象都没有呢?那还可以使用匿名类的方式,如下: public class JavaTest { public static void main(Strin…

jenkins,gitlab,实时构建推送

首先jdk,jenkins安装好,新版jenkins不支持jdk8 然后安装环境maven,git 环境配置 插件安装 gitlab插件 Build Authorization Token Root插件 插件环境整好之后新建个任务 源码管理,填入仓库https地址,添加git…

大势智慧软硬件技术答疑第一期

1.重建大师生成的实景三维模型,模型周边的道路植物被压平了,怎么保留植物道路原有形状? 答:这个是单体化生成的地理实体场景,会把地物压平,可以用模方将单体化的模型加入到osgb中。 2.直接导入空三的话这个…

采用docker部署时kafka共享zookeeper的网络配置

采用docker部署kafka、zookeeper,一般的做法是创建一个docker网络,然后kafka、zookeeper都使用这个网络。问题是,我部署到生产环境的时候,这种做法被禁止了。原因是添加了这个docker网络以后,服务器就无法访问了。该服…

Es读写调优、深度分页

写入 ES支持四种对文档的数据写操作 create:如果在PUT数据的时候当前数据已经存在,则数据会被覆盖,如果在PUT的时候加上操作类型create,此时如果数据已存在则会返回失败,因为已经强制指定了操作类型为create&#xf…

Spring核心 AOP

1.什么是AOP? AOP(Aspect Orient Programming),直译过来就是面向切面编程。AOP是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个层次的对象,而面向切面…

【笔试强训选择题】Day9.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…

open3d Image和numpy互转,PointCloud和numpy互转

目录 1. open3d.geometry.Image转numpy 2. numpy 转 open3d.geometry.Image 3. numpy转PointCloud 4. PointCloud转numpy 1. open3d.geometry.Image转numpy np_x np.asarray(x) # (h,w,3) import numpy as np import matplotlib.pyplot as plt import matplotlib.image…

鸿蒙Hi3861学习十-Huawei LiteOS-M(消息队列)

一、简介 消息队列,是一种常用于任务间通信的数据结构,实现了接收来自任务或中断的不固定长度的消息,并根据不同的接口选择传递消息是否存放在自己空间。任务能够从队列里面读取消息,当队列中的消息是空时,挂起读取任务…