搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小小林熬夜学编程
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
2022年各省高考查分时间、入口汇总
2
快速上手jQuery:选择器的使用_jquery基本选择器实操
3
jdk1.8新特性——方法引用、构造器引用及数组引用详解_vue3新特性支持jdk1.8吗
4
《系统集成项目管理工程师》必背100个知识点-58沟通方式
5
【程序人生】我 为什么要创业?
6
IDEA打开一个新项目,整个项目爆红的解决方案_打开的idea项目全部爆红
7
Cesium中通过射线计算日照_cesium 日照分析
8
OpenSSL自签证书并基于Express搭建Web服务进行SSL/TLS协议分析
9
最全综述 | 图像目标检测
10
DOS命令及使用_dos命令大全及用法
当前位置:
article
> 正文
硬实时操作系统-RTLinux
作者:小小林熬夜学编程 | 2024-05-15 20:33:13
赞
踩
rtlinux
硬实时操作系统-RTlinux
摘要:
介绍了RTLinux的两个重点特点:硬实时性和完备性,及其在嵌入式系统应用中的一些重要功能,并结合实时处理的具体实例对其编程方法加以说明。
关键词:
操作系统 实时处理 Linux 嵌入式系统
近年来,基于PC的嵌入式系统得到迅速的发展。在各种不同的操作系统中,由于Linux操作系统的廉价、源代码的开放性以及系统的稳定性,使其在基于PC的嵌入式系统中的应用日益广泛。RTLinux(RealTime Linux)[1]是一种基于Linux的实时操作系统,是由FSMLabs公司(Finite State Machine Labs Inc.)推出的与Linux操作系统共存的硬实时操作系统。它能够创建精确运行的符合POSIX.1b标准的实时进程;并且作为一种遵循GPL v2协议的开放软件,可以达GPL v2协议许可范围内自由地、免费地使用、修改和再发生。本文介绍了RTLinux的特点及功能,并结合一个实时处理的具体实例对其编程方法加以说明。
1 RTLinux的特点
在Linux 操作系统中,调度算法(其于最大吞吐量准则)、设备驱动、不可中断的系统调用、中断屏蔽以及虚拟内存的使用等因素,都会导致系统在时间上的不可预测性,决定了Linux操作系统不能处理硬实时任务。RTLinux为避免这些问题,在Linux内核与硬件之间增加了一个虚拟层(通常称作虚拟机),构筑了一个小的、时间上可预测的、与Linux内核分开的实时内核,使得在其中运行的实时进程满足硬实时性。并且RTLinux和Linux构成一个完备的整体,能够完成既包括实时部分又包括非实时部分的复杂任务。
1.1 硬实时性
RTLinux 将Linux源码中所有的cli、sti、iret指令分别用宏S_CLI、S_STI、S_IRET替换,引入虚拟层将截取所有的硬件中断,分割 Linux系统与硬件中断之间的直接联系。当RTLinux虚拟层接收到与实时处理有关的硬件中断时,立即启动执行相应的实时中断服务程序;而接收到与实时处理无关的中断时,先保存相应的信息,等到RTLinux内核空闲时通过软中断传递给Linux内核去处理,这样就使得RTLinux内核不受各种软、硬件中断的影响,不会造成时间上的不可预测性。同时又区别于其他实时处理方案,它并未对操作系统的内核作结构性的修改,因此并不会妨碍Linux操作系统的进一步发展和变化。
Linux采用基于最大吞吐量准则的调度策略,并不能确保各个实时进程的及时调度。而 RTLinux在缺省情况下采用优先级的调度策略,即系统调度器根据各个实时任务的优先级来确定执行的先后次序。优先级高的先执行,优先级低的后执行,这样就保证了实时进程的迅速调度。同时RTLinux也支持其它的调度策略,如最短时限最先调度(EDP)、确定周期调度(RM)(周期短的实时任务具有高的优先级)。RTLinux将任务调度器本身设计成一个可装载的内核模块,用户可以根据自己的实际需要,编写适合自己的调度算法。
操作系统精确的定时机制,可以提高任务调度器的效率,但增加CPU处理定时中断的时间开销。RTLinux采用一种折衷的方案,不将8354定时器设计成 10毫秒产生一次定时中断的固定模式,而是根据最近事件(进程)的时间需要,不断调整定时器的定时间隔。这样既可以提供高精度的时间值,又避免过多增加 CPU处理定时中断的时间开销。RTLinux系统同时将各时间间隔相加,保持一个系统全局时间变量,并使用软中断的方式来模拟传统的100Hz定时中断,将其传递给Linux系统使用。
1.2 完备性
过去,实时操作系统仅是一组原始的、简单的可执行程序,它所做的仅仅是向应用程序提供一程序库,但如今,实时应用程序通常要求能够支持TCP/IP、图形显示、文件和数据库系统及其它复杂的服务。为了满足当今实时应用程序的多种需求,通常采用在实时控制内核上增加这些服务或完全修改标准操作系统内核的方法,而RTLinux所采用的是一种新型高效的方式。将一个简单的小型实时内核与Linux内核共存,用简单的小型实时内核处理实时任务,将非实时任务交给Linux内核去处理,而 Linux内核本身也作为一个RTLinux实时内核在空闲时运行的进程。这种将实时系统和平均时间优化的标准Linux操作系统协同工作的方式,使得许多实时应用都显示出一种增效。实时内核中的实时任务可以直接访问硬件,不使用虚拟内存,给实时进程提供了很大的灵活性;运行在Linux用户空间中的非实时任务,可以方便地使用系统提供的各种资源(网络、文件系统等),并受到系统的保护,增加了系统的安全性。
2 RTLinux的主要功能
RTLinux提供了一整套对硬实时进程的支持函数集。在此,仅对在嵌入式系统中最重要的三个方面:进程间的通讯、中断和硬件设备的访问以及线程间的同步加以阐述。
2.1 进程间的通信(IPC)
RTLinux 要求将应用程序分成实时部分和非实时部分。应用程序的实时部分应该是简单的和轻负荷的,在RTLinux的实时内核中完成;而非实时部分,在Linux的用户空间完成。因此RTLinux提过了多种内核实时进程和Linux用户空间进程间的通讯机制,最重要的是实时FIFO和共享内存。
实时FIFO是能够被内核实时进程和Linux用户空间进程访问的快进快出队列,是一种单向的通讯机制,可以通过两路实时FIFO构成双向的数据交换方式。在使用实时FIFO前先要对实时FIFO通道初始化:
#include
int rtf_create(unsigned int fifo,int size)
使用后应该注销实时FIFO通道:
<
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/574869
推荐阅读
article
Vue
项目搭建时
npm
install
出现
npm
ERR
code
1
报错_
npm
err
! cod...
Vue
项目搭建时
npm
install
出现
npm
ERR
code
1
报错_
npm
err
!
code
1
npm
err
...
赞
踩
article
【Qt】
事件
传递
及
事件
过滤器
_
qt
事件
过滤器
...
但如果我们在该部件的类中重写了
事件
处理函数,忽略(ignore)了这个
事件
,那么这个
事件
就会
传递
给这个部件的父部件(注意...
赞
踩
article
文心
一
言
4.0
ERNIE
-
Bot
4.0
:
ERNIE
-
Bot
4.0
大模型深度测试体验报告_...
昨天申请的
文心
一
言
4.0
ERNIE
-
Bot
4.0
测试资格,目前已经拿到,我们将开始对
文心
一
言
4.0
ERN...
赞
踩
article
初探
前端
世界:
网页
基本
结构
入门指南...
1-1(3)-认识
前端
和
网页
+
网页
的
基本
结构
初探
前端
世界:
网页
基本
结构
入门指南 ...
赞
踩
article
阿里
云---
阿里
云
服务器
ECS
开放8080
端口
_
aliyun
端口
...
阿里
云
服务器
ECS
默认是不开通8080
端口
的,需要自己开通。_
aliyun
端口
aliyun
端口
...
赞
踩
article
innoDB
的
缓冲
池(
Buffer
Pool
)
的
工作原理_
缓冲
池技术通过什么来实现
的
...
数据存在磁盘了,总不能次次和磁盘交互吧,所以
innoDB
有一个
缓冲
池(
Buffer
Pool
),有了
缓冲
池后,读写就优先...
赞
踩
article
微软
服务器
出现
问题,
WSUS
服务器
与
微软
服务器
同步
时
出现
HTTP
错误...
WebException: 基礎連接已關閉: 傳送時發生未預期的錯誤。System.IO.IOException: 無法...
赞
踩
article
jQuery
配合
kendo
UI 实现
tree
(树状
图
的
展示) 当子
节点
全部选中
的
时候就可以直...
一开始用ZTree.js, 写
的
这个树状
图
, 但是我一直找不到半勾选
的
状态 , 而且数据结构还不好处理
的
. 然后在网上...
赞
踩
article
防止
WordPress
中
的
博客
内容
被
窃取
的
初学者指南...
If you write original content day in and day out, you alread...
赞
踩
article
星光/宝骏/缤果/长安
车机
CarPlay
手机
操作破解教程V2.0版本(无需
笔记本
、无需
笔记本
、无需...
之前写了个1.0版本,由于太局限,需要用到
笔记本
才能操作,很多车友反馈不方便。特此出个
手机
版教程,简单easy,妈妈再也...
赞
踩
article
GBDT
、
XGBoost
、
LightGBM
汇_gbdt
xgboost
lightgbm...
Ref:深入理解
XGBoost
本文是在原文基础上进行修补。
XGBoost
原理推倒:(1)目标函数:(2)第一项泰勒展开:...
赞
踩
article
数据
分析
:常用
工具
有哪些?
数据
分析
和
数据
挖掘的区别
是
什么?
数据
分析
的应用场景有哪些?_
如果
收集
数据
?...
作为常识,
数据
分析
中至少80%的时间都用在
数据
预
处理
,分析、建模、测试等工作占比不到20%。_
如果
收集
数据
?
如果
判断
数据
...
赞
踩
article
Github
2024-05-08
开源
项目
日报
Top10
...
根据
Github
Trendings的统计,今日(2024-05-08统计)共有10个
项目
上榜。
Github
2024-...
赞
踩
article
jsp
+
servlet
+
jdbc
实现对
数据库
简单
的
增删改查_
jsp
连接
数据库
增删改查...
入职以来(来京六整月),一直在学习JavaWeb
的
知识,分享下最近几个月(断断续续)用
jsp
+
servlet
+jdb...
赞
踩
article
java
final
关键字
详解_java
关键字
final
...
java
final
关键字
内容分享,本篇博文为java 面向对象三大特性——多态篇的补充。_java
关键字
final
j...
赞
踩
article
2023软件
测试
全方位
测试
面经
分享——最全最细
面试题
八股文_
csdn
测试
面经
...
最近辅导简历,有的小伙伴向我反馈,自学过接口自动化、没有落地接口自动化项目办?还有一些同学落地实践过自动化,但是仅仅只是...
赞
踩
article
springboot
中
mybatis
夸库
查询
可
配置
...
项目需求
mybatis
中有的sql是跨库去
查询
的,假如现有 测试数据库A_test 表user 那么
查询
的sql为:se...
赞
踩
article
iphone
苹果
IOS
越狱
详细图文保姆级教程
非常简单
_苹果
uncover
打不开
...
现在随着各个工具的升级,
越狱
的难度也是越来越低,还记得
iphone
4 的时候我
越狱
还是花钱请别人搞得,现在只要你的机...
赞
踩
article
简述
JNI
开发
...
JNI
全称为Java Native Interface,主要用于实现Java和C/C++的通信。_jni
开发
jni
开发
...
赞
踩
article
缓冲
池
(
buffer
pool
)详解...
InnoDB存储引擎是以页为单位来管理空间的,我们进行的增删改查操作其实本质都是在访问页面(读页面,写页面,创建新页面)...
赞
踩
相关标签
vue.js
npm
javascript
qt
开发语言
文心一言
人工智能
文心一言4.0
前端
阿里云
服务器
mysql
数据库
微软服务器出现问题
jQuery
kendo ui
checkbox
tree
treeView
java
python
linux
wordpress
MTK
usb otg