IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 系统实时性评估指标-中断延迟简介 -> 正文阅读

[嵌入式]系统实时性评估指标-中断延迟简介

实时系统的主要特点是必须保证处理结果的时间确定性,我们通常使用基准程序法对其进行性能指标评估。通过对实时系统的性能评估,就可以确认系统的时间确定性、可靠性、稳定性等指标。

衡量实时操作系统实时性能的重要指标有很多,本文将对运用最为广泛的指标之一,中断延迟时间,进行介绍。那么什么是中断延迟?如何测得实时操作系统的中断延迟呢?让我们一起来看看吧!

什么是中断延迟?

中断延迟(Interrupt Latency)是指从硬件中断发生到开始执行中断处理程序第一条指令之间的这段时间。也就是计算机接收到中断信号到操作系统作出响应,并完成换到转入中断服务程序的时间。

?

由于外部事件的发生常常是以一个中断申请信号的形式来通知处理器,然后才运行中断服务程序中来处理该事件,所以中断延迟是影响系统实时性的一个重要因素。

为了进一步描述清楚中断延迟,我们把中断延迟的时间分为以下三种:

  1. 识别中断时间:外界硬件发生了中断后,CPU到中断处理器读取中断向量,并且查找中断向量表,找到对应的中断服务子程序(ISR)的首地址,然后跳转到对应的ISR去做相应处理。
  2. 等待中断打开时间:在允许中断嵌套的实时操作系统中,中断也是基于优先级的,允许高优先级中断抢断正在处理的低优先级中断。所以,如果当前正在处理更高优先级的中断,即使此时有低优先级的中断,也系统不会立刻响应,而是等到高优先级的中断处理完之后才会响应。即使在不支持中断嵌套的系统中(即中断是没有优先级的,中断是不允许被中断的),如果当前系统正在处理一个中断,而此时另一个中断到来了,系统也是不会立即响应的,而只是等处理完当前的中断之后,才会处理后来的中断。
  3. 关闭中断时间:当前中断来了,但由于之前某个程序访问共享区,而关闭中断了,导致当前中断得不到处理。而只有等待其访问完成共享区之后,再开中断。

怎样减少中断延迟?

明白了什么是中断延迟,以及哪些因素会影响中断延迟,那么,怎样减少中断延迟呢?在OneOS系统中,经过开发前期分析与实测,我们发现通过对内核加锁粒度优化可以减少中断延迟。

大粒度的加锁位置为:

  1. 1. 任务栈切换流程;
  2. 2. 时钟中断处理流程。

在任务栈切换流程中,OneOS采用了前置计算待调度任务算法,可以有效降低该流程的加锁粒度。

在时钟中断处理流程中,因为要判断有哪些睡眠任务和阻塞任务已超时,往往要处理多个在TICK队列上的任务,若采用一把大锁,势必导致加锁粒度过大、影响外部中断响应时间(嵌入式系统一般都是支持中断抢占的)。OneOS采用每处理完1个在TICK队列上的任务后开中断,之后再关中断的方式,可以降低加锁粒度。(不过这样做会导致任务调度系统复杂,必须要认真处理此微小时隙所带来的额外资源冲突问题噢~)

如何测试中断延迟?

既然已经找到了减少中断延迟的方法,那我们来测试一下优化后的结果吧!

为了满足测试要求,首先系统选取一个定时器中断,并且设置定时器中断的优先级比其他所有中断优先级都高(这样就屏蔽掉等待中断打开时间)。

设置定时器的计数模式为递增模式,这样定时器产生中断时会重新装入0到定时器计数器中。在中断定时器中断服务函数中直接读取定时器计数值,通过定时器计数值除以定时器时钟得到中断延迟时间。

同时,为了避免关中断的时间内发生多次定时器中断,建议定时器中断的周期大于1ms。在多次产生定时器中断后我们记录下最大的中断延迟作为测试结果,最后我们还需要添加内核接口的调用。具体的流程下图所示。

?根据以上测试方法,可以获得如下测试结果:

?

测试结果可以看出,OneOS的实时性得到了强有力的保证。

在第三方的测试中,基于同样的硬件平台,OneOS内核性能主要指标均领先于竞品,实时性跑分大幅领先。未来,OneOS将继续努力,朝着成为业界领先的国产操作系统的目标不断前行!

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:12:15  更:2022-09-24 21:12:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 2:35:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计