搜索
查看
编辑修改
首页
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
深度学习机器视觉车道线识别与检测 -自动驾驶 毕业设计_基于机器视觉(传统或深度)实现车道线检测或信号灯识别
2
程序员因接外包坐牢 456 天!两万字揭露心酸经历
3
Android Studio最新汉化教程_android汉化包下载
4
nodejs基本操作,npm与cnpm使用介绍_nodejs cnpm
5
C++类模板详解_c++里面的class numtype什么意思
6
快速上手 Kotlin 开发系列之集合操作符 (1)_kotlin 链式对集合操作
7
基于python的微博情感分析与文本分类系统的设计与实现_微博语言情感分析系统设计的目标与原则
8
入职车载测试常见面试题(附答案)测试小白_车载蓝牙测试面试题
9
字节跳动软件测试岗4轮面经(已拿34K+ offer)..._字节跳动测试开发面经校招
10
KMP算法及其优化_intill算法
当前位置:
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
RustGUI
学习
(
iced
)之小
部件
(
十):如何使用
tooltip
部件
来制作文字提示?...
本专栏是
学习
Rust的GUI库
iced
的合集,将介绍
iced
涉及的各个小
部件
分别介绍,最后会汇总为一个总的程序。
iced
...
赞
踩
article
vue
路由
懒
加载
--
2
种实现方式_
vue
2
路由
懒
加载
...
(1)
vue
异步组件-
路由
懒
加载
component:resolve=>(['需要
加载
的
路由
的地址',resolve])...
赞
踩
article
【
第一阶段
】
kotlin
语言
的
String
模板
_
kotlin
引入
字符串
模版...
3.
kotlin
语言
中if是表达式,更灵活。1.在Java中拼接
字符串
使用的是“+”2.在
kotlin
中使用"${}"
_
...
赞
踩
article
[获取
手机
信息
]-通过
ADB
命令
获取
手机
信息
_
adb
命令
查看
手机
设备
信息
...
通过
ADB
命令
获取
手机
信息
ADB
常用
查看
命令
使用 -l
查看
设备详细
信息
查看
机型
查看
电池状况
查看
分辨率
查看
屏幕密度...
赞
踩
article
【
Linux
】计算机
操作系统
和
软
硬件
体系结构
_
硬件
架构
和
操作系统
...
操作系统
对所有
软
硬件
资源进行管理,同时为用户提供访问
软
硬件
资源的系统调用接口,由
操作系统
来完成资源的各种访问;另一方面,...
赞
踩
article
强烈推荐
十几款
IDEA
开发
必备
的
插件
,
实测非常好用(已更新至2024版)_
idea
官网
插件
...
IDEA
有很多优秀
的
插件
,
使用它们大大增加了
开发
效率。我推荐几款好用
的
插件
:CodeGlance、RestfulTool...
赞
踩
article
字节
跳动
测试
开发第一题_
字节
跳动
测试
数据库
...
时间限制:1秒空间限制:32768KP为给定的二维平面整数点集。定义 P 中某点x,如果x满足 P 中任意点都不在 x的...
赞
踩
article
移动机器人
路径
规划
(三)--- 基于采样的
路径
规划
Sample
-basedpath finding_...
移动机器人
路径
规划
(三)--- 基于采样的
路径
规划
Sample
-basedpath finding_cross-entr...
赞
踩
article
OpenGL
ES
之七——
着色器
语言
GLSL
_glsl
texture2dlod
...
概况前面之所以没有详细的来介绍一下
GLSL
,因为之前如果上来就介绍语言会显得突兀,而现在经过了前面几篇文章的铺垫,相信大...
赞
踩
article
AttributeError:
module
‘PIL.
Image
‘ has no
attribut
...
但是发现还是对于NoneType进行报错,之前进行了
pil
low包的更新,不知道是什么原因还是没有找到。再次尝试对于pi...
赞
踩
article
uni
-
app
调取
摄像头
扫码
和
生成
二维码
_
uni
app
扫码
画面反了...
调取手机
摄像头
扫码
验证
scan() { //
扫码
验证 var _t...
赞
踩
article
WSUS
补丁
更新
服务器
的部署及配置...
安装新
服务器
操作系统为规划使用一台新的
服务器
安装Windows Server 20012 R2 标准版中文版操作系统。...
赞
踩
article
Linux
操作
系统
——基础详解_
linux
系统
...
UNIX 是一个交互式
系统
,用于同时处理多进程和多用户同时在线。为什么要说 UNIX,那是因为
Linux
是由 UNI...
赞
踩
article
MATLAB
Simulink
+
STM32
硬件在环 (
HIL
)实现例程测试_补充版
stm32
-m...
MATLAB
Simulink
+
STM32
硬件在环 (
HIL
)实现例程测试_补充版
stm32
-
mat
补充版 stm3...
赞
踩
article
数据预处理之
L1
,
L2
正则
化
...
一、
L1
、
L2
正则
化
概述1.
L1
和
L2
的定义
L1
正则
化
,又叫Lasso Regression如下图所示,
L1
是向量各元...
赞
踩
article
idea
项目
修改
项目
文件名 教程...
项目
一定需要重启
idea
,并且重构一下
项目
。
idea
识别不是很好。选择
项目
打开
项目
页面。关掉当前
项目
的
idea
页面。id...
赞
踩
article
消防安全
检查
卡
如何制作成
二维码
标签...
本
检查
卡
旨在帮助用户
检查
建筑设施和操作程序,以确保其符合
消防安全
标准,预防火灾事故的发生。无需下载APP,微信扫码即可填...
赞
踩
article
JSP +
JDBC
技术
对
数据
库进行增删改查操作_编写
jsp
页面通过使用
jdbc
技术实现
对
学生表中...
遇到了很多问题:1.字符编码问题error:Unknown initial character set index '2...
赞
踩
article
Android
高级开发
JNI
&
NDK
介绍与
使用
...
这里写自定义目录标题欢迎
使用
Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插...
赞
踩
article
OpenGL
Shading Language_the
opengl
庐
shading
langua...
GLSL(
OpenGL
Shading Language),是用来在
OpenGL
中编写着色器(顶点着色器和片元着色器)程...
赞
踩
相关标签
学习
rust
vscode
iced
GUI
vue
懒加载
kotlin
python
开发语言
Android ADB 命令
安卓调试桥命令
如何通过电脑查看手机硬件信息
使用 adb 查看手机硬件信息
高手必看!
linux
系统架构
intellij idea
插件
算法
自动驾驶
人工智能
GLSL
OpenGLES