Preempt-RT --- Linux kernel 实现欣赏

实时Linux之PREEMPT_RT篇 实时Linux—PREEMPT_RT篇 实时Linux主要有两类方案: 单内核方案:对主线传统的Linux内核打入PREEMPT_RT补丁,使内核成为硬实时操作系统 双内核方案:主线传统Linux内核+实时内核的双内核方案,常见的主流方式有:RT-Linux,RTAI、Xenomai。 本文重点讲解单内核PREEMPT_RT补丁方案。 概念基础 实时性 ​ 实时分为硬实时和软实时,两者主要的区别主要就是就绪运行时间确定性。然后,主线Linux是软实时系统,加入实时补丁后将其改造为硬实时系统。 可抢占性 阅读详情
static int __init irqpoll_setup(char *str)
{
#ifdef CONFIG_PREEMPT_RT
	pr_warn("irqpoll boot option not supported w/ CONFIG_PREEMPT_RT\n");
	return 1;
#endif

	irqfixup = 2;
	printk(KERN_WARNING "Misrouted IRQ fixup and polling support "
				"enabled\n");
	printk(KERN_WARNING "This may significantly impact system "
				"performance\n");
	return 1;
}

__setup("irqpoll", irqpoll_setup);

在这里插入图片描述
先看下面一个interrupt的流程, 然后解释noirqdebug 存在的意义.
如果 noirqdebug 为 true, 那么 irqpoll_setup 的存在是 no value !

Linux 内核中没任何模块能绝对“独立”,相互的关系是绝对的,但是独立是相对的.
在这里插入图片描述
在这里插入图片描述

/*
 *   一 : 先来看 interrupt 到底是什么
 *     1 : 中断是响应外部硬件设备的一个机制 (包括时钟中断)
 *         例如 : 
 * 				时钟中断中更新task的vruntime 、cfs->min_vruntime 以及查看能否抢占 (它委托给一个函数来实现 : entity_tick())
 *     2 : 中断是系统中的一个事件(即一个Event) 
 *         (具体的可参见 Intel manual .)     
 * 
 *    ok !
 * 
 *    Force interrupt threading 后,它就成为了一个优先级为50的实时进程,可以被更高优先级的进程抢占了, 
 * 
 *   😄哈哈,interrupt终于被拉下了神坛, 也就是说中断可以延迟被执行了.
 * 
 *    如果这个isr中要获取的数据实时性很高,不能被延迟执行,那么就保留原来朴素的中断.即: 反线程化.
 * 
 *    那么既然是一个进程了,那么workqueue也是进程 它们有什么样的异同呢.
 *    当然有异同了,且大大的异同,
 *    比如说 调度策略,一个是 SCHED_FIFO 一个是SCHED_NORMAL, workqueue靠边站,瘦死的骆驼也比你workqueue大 !
 */
irqreturn_t handle_irq_event_percpu(struct irq_desc *desc)
{
	/*
		原来的code,这里暂且不讲,让我们专注于 PREEMET_RT
	*/
	irqreturn_t retval;
	unsigned int flags = 0;
	
	/*
	 *    获取 pt_regs.
	 *    ok, 什么是 pt_regs, 这里为什么要获取它
	 *    哈哈😄 别忘记中断现场保存在哪里的, 这里要用到了.
	 *    ok,我们把保存中断现场的那段code拿出来,看一下.
	 */
	struct pt_regs *regs = get_irq_regs();				
	u64 ip = regs ? instruction_pointer(regs) : 0;
	
	retval = __handle_irq_event_percpu(desc, &flags);
	
#ifdef CONFIG_PREEMPT_RT
	desc->random_ip = ip;
#else
	add_interrupt_randomness(desc->irq_data.irq, flags, ip);
#endif

	if (!noirqdebug)
		note_interrupt(desc, retval);
	return retval;
}

在这里插入图片描述

struct pt_regs {
	union {
		struct user_pt_regs user_regs;
		struct {
			/*
			 *    X0 X1 .... X20 X30 寄存器.
			 *    SP寄存器
			 *    PC寄存器
			 *    PSTATE 寄存器.
 			 */
			u64 regs[31];
			u64 sp;
			u64 pc;
			u64 pstate;
		};
	};
	u64 orig_x0;
#ifdef __AARCH64EB__       /* 大端字节序 */
	u32 unused2;
	s32 syscallno;
#else					   	
	s32 syscallno;
	u32 unused2;
#endif
	u64 sdei_ttbr1;
	u64 pmr_save;
	u64 stackframe[2];
	u64 lockdep_hardirqs;
	u64 exit_rcu;
};
RT Preempt linux学习笔记 实时操作系统要求在一个触发信号到来之后能够在一个确定的时间点之前进行响应处理。它与普通的非实时操作系统区别在于:普通操作系统的响应延时受系统负载影响较大,轻负载时可能会满足响应的要求,但是在负载变大的时候响应会变慢,并且这个响应时间是不确定的。因此一个足够快的系统不代表是一个实时操作系统,实时系统必须要求在负载变化的情况下依然能够满足确定的响应时间,如果无法在确定的时候下完成响应,那么会导致系统错误。 阅读详情

相关推荐

Linux实时扩展(PREEMPT_RT)

PREEMPT_RT linux

zhangyihu321的专栏 3416

PREEMPT-RT

PREEMPT-RTPatch 标准的Linux内核中不可中断的系统调用、中断屏蔽等因素,都会导致系统在时间上的不可预测性,对硬实时限制没有保证。目前,针对real-timeLinux的修改有两种成功的方案。一是直接修改Linux内核,使其直接具有real-time能力;另一是先运行一个real-time核心,然后将Linux内核作为该real-time核心的idle...

Binp0209的专栏 5359

Preempt_rt实时补丁安装指南

由于SOEM库不支持2.4.x内核系列,所以找到了2.6.x系列的实时操作系统补丁。 采用preempt_rt2.6.31版本与linux2.6.31内核,在VMWare8.0.3环境下实现。所有过程均为自行实现了完整的安装过程后的工作记录,非复制粘贴。

实时Linux内核(PREEMPT_RT)的编译安装以及测试

​ ​​​​​​​1.什么是实时性操作系统? https://blog.youkuaiyun.com/ywx123_/article/details/53861274 实时性是指调度的时候,任务响应时间。windows一般是15ms,最大的问题是不能保证。比如平均值是1ms,但是随着系统负载的变化,有时甚至达到100ms,在这工业上是无法使用的。工业上一些应用要求必须有更高的时间精度,比如,一个电力监测系统必须在10ms内运行一次任务对电力运行状况进行监测,一旦时间不准,调度不到该程序运行,则无法保证对电力故障的及时

闲人的专栏 4万+

R语言计算植物群落重要值:从基础概念到优势种判定

在植被生态学研究中,重要值是衡量物种在群落中地位的核心指标,它综合了相对多度、相对频度与相对显著度三个维度,能够客观反映物种的数量优势、分布广度与空间占据能力。理解重要值的生态学逻辑,是开展群落分类、优势种判定及多样性分析的基础。而R语言凭借其批量处理、可复现和与后续多元统计无缝衔接的优势,成为生态学研究者处理样方数据的高效工具。从野外记录的宽表到标准化长表,再到分组汇总计算相对指标,R语言能够显著提升数据处理效率与准确性。本文以实测群落数据为例,系统梳理重要值的两种算法口径、基于dplyr和tidyr的完

weixin_42634811的博客 265

Windows server 2012R2安装Oracle11g

打开 开始——所有程序——Oracle-OraDb11g_home1——配置和移植工具——Database Configuration Assistant。打开 开始——所有程序——Oracle-OraDb11g_home1——配置和移植工具——Net Configuration Assistant。首先打开Oracle的安装位置找到下面的位置找到tnsnames.ora文件右键编辑。打开Oracle的安装位置找到下面的位置找到tnsnames.ora文件右键编辑。选择仅安装数据库软件。

qq_74770105的博客 3596

【原创】Ubuntu22.04安装 PREEMPT-RT(Ubuntu Pro RealTime linux/realtime Ubuntu)

以往我们开发实时Linux内核PREEMPT-RT,需要开发者自己打补丁-配置-编译构建安装,实时性暂且不谈,可靠性、稳定性完全没有保障,现在Ubuntu官方提供PREEMPT-RT支持啦。实时 Ubuntu 于2023 年 2 月 14 日基于Ubuntu 22.04 LTS发布,支持旨在为关键电信基础设施提供性能、超低延迟和安全性。基于 Linux 内核的 5.15 版本集成了 x86 和 Arm架构的树外PREEMPT_RT补丁。有了ubuntu官方支持,可靠性、稳定性有保障,赶快来安装体验一下。

wsg1100 9228

Prompt Airlines CTF通关实战:从提示词注入到多模态攻击的AI安全攻防演练

提示词注入(Prompt Injection)是当前大语言模型(LLM)应用面临的核心安全威胁之一,其原理在于攻击者通过精心构造的用户输入,覆盖或绕过系统预设的指令,从而操控模型行为。这种攻击手法的技术价值在于揭示了AI系统在理解与执行指令时存在的逻辑边界模糊性,可能导致数据泄露、越权访问等严重风险。在应用场景上,从基础的客服对话到结合视觉识别的多模态系统,都可能成为攻击面。本文以一场名为“Prompt Airlines CTF”的实战挑战为例,深入剖析了包括指令遗忘、上下文注入、工具调用滥用及多模态提示注

aodan5477的博客 515

RT-Preempt笔记

RT-Preempt笔记

525小白菜的博客 4613

ctf——writeup

ctf线上赛——第三关地址:http://106.75.86.18:2222提示:ip spoofing——ip伪造首先访问目标地址,一个正常的网页,挺文艺的。上面有些提示。根据上面的提示,我们浏览网页。找了好久,终于找到你。这个跳转链接。(在这个页面下方)我们接着点击这个链接,就跳转到administrator.php这个页面了。看到这个登录页面,就要知道用户名,密码,可是没有怎么办。一开始也试

Child_by_dream的博客 1320

JasperReport制作行内容合并的表格

效果图: 实现思路一: 交叉表 另一个思路: 普通表格 缺点:无法实现内容 垂直居中显示 准备工作 一、数据准备 DROP TABLE IF EXISTS `address_item_sex_value`; CREATE TABLE `address_item_sex_value` ( `id` int(11) NOT NULL AUTO_INCREM...

weixin_34148456的博客 2468

PREEMPT_RT安装配置

下载Linux内核:https://www.kernel.org/pub/linux/kernel/ 下载PREEMPT_RT补丁: http://www.kernel.org/pub/linux/kernel/projects/rt/ 内核和补丁的版本要对应 进入内核目录下执行命令patch -p1 < patch-X.X.X.X-rtX.patch 如果补丁文件不在内核目录根目录下则命令后

whatamadman的博客 3680

RK3568下YT8531/YT8521 PHY移植避坑指南:RGMII与设备树详解

嵌入式Linux网络调试中,PHY芯片作为MAC与物理介质之间的桥梁,其驱动配置直接影响网络稳定性。RGMII接口的延时补偿、PHY地址设定以及复位时序是设备树配置中的关键环节,稍有差错便会出现链路已通却无法通信的现象。通过理解PHYLIB框架与mdio总线枚举原理,开发者可以快速定位寄存器级故障。在RK3568等工业级平台中,裕太微YT8531/YT8521凭借高性价比与内核主线支持,成为替代传统方案的热门选择。从设备树模板、内核配置到常见坑点,系统梳理千兆以太网PHY的移植与调试方法,帮助开发者少走弯路

weixin_29189381的博客 212

PREEMPT_RT是怎么回事

PREEMPT_RT(全称:PREEMPTive Real-Time)是一个针对 Linux 内核的补丁集。它的核心目标是将标准的、以吞吐量和公平性为优先的 Linux 内核,改造为一个完全可抢占的、确定性高的、适用于硬实时场景的操作系统。它并非一个独立的分支,而是一系列旨在减少内核态延迟的补丁集合。许多这些补丁已经逐步被主线内核接纳,但完整的 PREEMPT_RT 补丁集仍然是获得最佳实时性的关键。PREEMPT_RT 通过一系列深刻的内核改造,系统地解决了标准 Linux 内核中的非确定性问题。

weixin_52626887的博客 963

Python爬虫实战:绕过Cloudflare反爬的最新技术与完整代码详解

在互联网数据采集领域,越来越多的网站开始部署CDN和安全防护服务,其中 Cloudflare 是最为广泛使用的防护方案之一。它不仅为网站提供DDoS防护,还能通过JS挑战、验证码和行为分析来识别并拦截爬虫。这给爬虫工程师带来了极大挑战——如何在不违反网站服务条款的情况下,实现有效的数据采集?本文将分享Python领域绕过Cloudflare反爬的最新技术方法,结合最新流行库与自动化浏览器,帮助你攻克这一难题。绕过Cloudflare反爬不是一蹴而就,需结合多技术、多策略,持续迭代。

2201_76125261的博客 2628

使用ggplot2包中的双Y轴功能在R语言中可视化时间序列数据,并在时序数据末尾添加数值标签是一种有效的数据展示方式

使用ggplot2包中的双Y轴功能在R语言中可视化时间序列数据,并在时序数据末尾添加数值标签是一种有效的数据展示方式。通过这种方式,我们可以同时展示两个变量的趋势,并在时序数据末尾添加数值标签,使得数据更加直观和易于理解。假设我们有一个包含两个变量的时间序列数据集,一个是时间变量,另一个是对应的数值变量。现在,我们可以使用ggplot2包来创建一个基本的时间序列图,其中包含两个数值变量。接下来,我们将添加一个双Y轴,并在时序数据末尾添加数值标签。函数在数值1的每个数据点上添加数值标签。

Orion_O的博客 269

[工业互联-15]:Linux操作与实时Linux操作系统RT Linux( PREEMPT-RT、Xenomai)

Linux操作系统是一种开源的、基于Unix思想的操作系统。它具有以下特点:开源:Linux的核心代码是公开的,任何人都可以查看、修改和分发它。这使得Linux具有高度的灵活性和可定制性,并且能够以不同的方式满足用户的需求。多用户和多任务:Linux支持多用户同时登录,并能够处理多个任务,使得多个用户可以同时共享同一台计算机的资源。稳定性:Linux被广泛认为是一个非常稳定的操作系统。它能够处理长时间运行的任务,具有较低的系统崩溃率和出错率。

文火冰糖(王文兵)的博客 7598

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

内核抢占实现(preempt) 【转】

转自:http://blog.chinaunix.net/uid-12461657-id-3353217.html 一、什么叫抢占所谓抢占,说白了就是进程切换。linux的用户空间,进程A在执行中,来(硬?)中断打断A,从中断处理程序返回时,如果有更高优先级进程B在排队的话,那么执行进程B。 用户空间下进程总是可抢占的在linux的内核空间就不一定了,linux 2.4是不可抢占的,实时性就会降...

weixin_34175509的博客 523

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【Note】Linux Kernel 实时技术深入:详解 PREEMPT_RT 与 Xenomai

特性内核结构单一内核、全路径可抢占双核模式,有专用实时内核中断处理IRQ 作为线程处理,延迟可控I‑pipe 由 Cobalt 直接接管中断,延迟极低API 支持POSIX / SCHED_* 实时接口支持 RTOS Skin(Alchemy、VxWorks 模拟)维护与稳定性已合入主线,自带长期支持需要特定打补丁,维护稍复杂适用场景低中实时延迟需求,如工业自动化、视频处理严格硬实时,如电机控制、精密系统实现PREEMPT_RT 和 Xenomai 是 Linux 实时扩展的两条成熟路径;

YZJincsdn的博客 2837

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Preempt-RT的例程记录

【代码】Preempt-RT的例程记录。

more_HH 1193

PREEMPT_RT安装及测试

RT补丁、kernel编译 第一步,下载: $ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.4.164.tar.xz $ wget https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/4.4/patch-4.4.164-rt17...

hbxiang200的博客 2303

Linux内核实时补丁PREEMPT_RT安装

一、RTPREEMT_RT简介 标准的Linux 内核只能能够满足软中断的要求,为用户空间提供简基本的Posix操作,但是不对固定的时间点做保证。Ingo Molnar's 的实时抢占补丁(文中为:PREEMPT_RT)和 ThomasGleixner的具有高分辨率的通用时钟事件层,Linux增加了硬事实能力。 PREEMPT_RT 补丁因起了工业界的关注。由于它简洁的设计和与内核的mainl

deng_sai的专栏 1万+

Linux实现实时性的两大主流方案——Preempt-RT和Xenomai的区别

摘要: Preempt-RT和Xenomai是Linux实时性两大方案,核心差异如下: 架构:Preempt-RT单内核改造(合并至Linux6.12主线),Xenomai双内核(微内核独立处理实时任务)。 性能:Preempt-RT延迟50–150μs(软实时),Xenomai达5–30μs(硬实时),适合机器人控制等场景。 开发:Preempt-RT兼容标准Linux API,Xenomai需专用驱动(RTDM)但隔离性更强。 平台适配:ARM平台Xenomai表现更优(延迟<20μs),x86平

hml111666的博客 2527

RT Preempt Linux简介

RTOS (实时操作系统) 什么是实时操作系统? 实时操作系统要求在一个触发信号到来之后能够在一个确定的时间点之前进行响应处理。它与普通的非实时操作系统区别在于:普通操作系统的响应延时受系统负载影响较大,轻负载时可能会满足响应的要求,但是在负载变大的时候响应会变慢,并且这个响应时间是不确定的。因此一个足够快的系统不代表是一个实时操作系统,实时系统必须要求在负载变化的情况下依然能够满足确定的响应...

程序猿Ricky的日常干货 1万+
上一篇: power management -- Linux Kernel实现欣赏
下一篇: zynq-ultrascale DRM架构实现 --- Linux kernel 欣赏
leesagacious
博客等级 码龄12年 146粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值