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

这篇具有很好参考价值的文章主要介绍了[工业互联-15]:Linux操作与实时Linux操作系统RT Linux( PREEMPT-RT、Xenomai)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

第1章  Linux操作系统

1.1 什么是Linux操作系统 

1.2 Linux操作系统架构

 1.3 常见Linux操作系统发行版本

第2章 实时Linux操作系统

2.1 实时性要求

2.2 实时性实现技术的基本思想

2.2 常见发行版方案

2.3 Xenomai和PREEMPT-RT比较

第3章 PREEMPT-RT

3.1 概述

3.2 PREEMPT-RT Patch详解

3.2.1. PREEMPT-RT的思想

3.2.2. PREEMPT-RT特性

3.2.3.  PREEMPT-RT的主要改动

3.2.3.1临界区抢占

3.2.3.2中断处理线程化

3.2.3.3Spinlock和Semaphore支持优先级继承

3.2.3.4降低延迟的其他措施

第4章 Xenomai

4.1 简介

4.2 双调度器架构

第5章 EtherCAT on RT Linux


第1章  Linux操作系统

1.1 什么是Linux操作系统 

Linux操作系统是一种开源的、基于Unix思想的操作系统。

它具有以下特点:

  1. 开源:Linux的核心代码是公开的,任何人都可以查看、修改和分发它。这使得Linux具有高度的灵活性和可定制性,并且能够以不同的方式满足用户的需求。

  2. 多用户和多任务:Linux支持多用户同时登录,并能够处理多个任务,使得多个用户可以同时共享同一台计算机的资源。

  3. 稳定性:Linux被广泛认为是一个非常稳定的操作系统。它能够处理长时间运行的任务,具有较低的系统崩溃率和出错率。

  4. 安全性:相对于其他操作系统,Linux在安全性方面更有优势。由于其开源特性,许多开发者可以共同发现和修补潜在的安全漏洞,从而提高安全性。

  5. 可移植性:Linux可以在各种不同的硬件架构上运行,包括个人计算机、服务器、嵌入式设备以及移动设备等。

  6. 丰富的软件支持:Linux拥有庞大的开源软件生态系统,用户可以免费获取各种应用程序和工具,满足各种需求。

总的来说,Linux是一种灵活、稳定、安全且具有强大功能的操作系统,被广泛应用于服务器、个人计算机、嵌入式设备和科学研究领域等。

1.2 Linux操作系统架构

rtlinux,工业互联,嵌入式软件平台,Linux,实时性

rtlinux,工业互联,嵌入式软件平台,Linux,实时性

rtlinux,工业互联,嵌入式软件平台,Linux,实时性

 1.3 常见Linux操作系统发行版本

基于标准的Linux操作系统内核,出现了各种各样的Linux发行版本。

以下是一些常见的Linux操作系统发行版本

  1. Ubuntu:Ubuntu是一个基于Debian的开源Linux操作系统,具有良好的用户界面和易于使用的特点。它广泛用于个人计算机和服务器环境。

  2. Debian:Debian是一个完全自由的开源Linux发行版,具有稳定性和安全性的特点。它提供了大量的软件包和工具,支持多种硬件架构。

  3. CentOS:CentOS是基于Red Hat Enterprise Linux(RHEL)源代码构建的开源克隆版本。它被广泛应用于服务器环境,并提供长期支持和稳定性。

  4. Fedora:Fedora是由Red Hat公司赞助的一个社区驱动的Linux操作系统。它注重最新的软件和技术,适用于桌面和服务器环境。

  5. openSUSE:openSUSE是一个基于SUSE Linux Enterprise的开源Linux发行版。它提供了易于使用和配置的图形界面和强大的管理工具

  6. Arch Linux:Arch Linux是一个轻量级的、面向技术用户的Linux操作系统,提供了滚动发布和自定义的软件包管理系统。

  7. Linux Mint:Linux Mint是一个基于Ubuntu的Linux发行版,注重易用性和用户友好的界面。它提供了Cinnamon、MATE、Xfce和KDE等不同桌面环境的版本。

  8. Kali Linux:Kali Linux是一个专门用于网络安全和渗透测试的Linux发行版。它包含了大量用于安全测试的工具。

除了上述列举的Linux操作系统,还有许多其他的Linux发行版,如Gentoo、Manjaro、Elementary OS等。每个Linux发行版都有其独特的特点和目标受众,可以根据个人需求和偏好选择适合的操作系统。

第2章 实时Linux操作系统

2.1 实时性要求

实时Linux是针对实时应用需求进行优化的Linux内核或发行版。

它旨在提供实时性能,以满足对于实时任务的严格要求,包括三大实时性要求:

  • 可预测性
  • 可靠性
  • 低延迟

2.2 实时性实现技术的基本思想

标准的Linux内核中不可中断的系统调用中断屏蔽等因素,都会导致系统在时间上的不可预测性,对硬实时限制没有保证。

目前,针对 real-time Linux 的修改有两种成功的方案:

(1)单调度器

一是直接修改Linux 内核,使其直接具有 real-time 能力;

(2)双调度器

另一是先运行一个 real-time 核心,然后将Linux 内核作为该 real-time 核心的 idle task来运行。

前者称为 PREEMPT-RT kernel,后者称为 dual kernel(如RTLinux等)。

(3)采用的常见技术包括:

  • 优先级调度
  • 可抢占调度
  • 分时多任务调度

2.2 常见发行版方案

下面是一些常见的实时Linux解决方案:

  1. PREEMPT-RT:PREEMPT-RT是一个基于Linux内核的实时补丁,也被称为Real-Time(RT)补丁。它通过增加内核的可抢占性,使得Linux内核能够实现实时性能。PREEMPT-RT补丁提供了可配置的实时选项,可以根据应用程序的需求进行调整。

  2. Xenomai:Xenomai提供了一个实时框架,为Linux操作系统添加了实时性能。它支持具有硬实时软实时要求的应用程序,并通过分时多任务抢占式调度来提供可预测性。

  3. RTAI(Real-Time Application Interface):RTAI是一个开源实时应用程序接口,提供了类似API的接口和实时任务调度。它在Linux内核上运行,并通过插入抢占式调度器来实现实时性能。

  4. AdaCore GNAT:AdaCore GNAT是一个Ada语言的开发环境,它提供了Ada编译器和运行时环境,针对实时和嵌入式应用进行了优化。它可以与各种实时Linux解决方案搭配使用。

这些实时Linux解决方案可用于嵌入式系统、工控系统、机器人控制、实时数据采集等需要严格的实时性能的应用领域。

但需要注意的是,实时Linux解决方案的配置和使用需要更高的技术要求和维护成本,以确保系统的稳定性和可靠性。因此,选择合适的实时Linux解决方案时,应根据具体应用需求和技术要求进行评估和选择。

2.3 Xenomai和PREEMPT-RT比较

Xenomai和PREEMPT-RT都是用于将Linux内核转变为实时操作系统的解决方案,并具有类似的目标,但它们在实现方式和功能上有一些区别。

rtlinux,工业互联,嵌入式软件平台,Linux,实时性

  1. 实时性能:PREEMPT-RT补丁通过可抢占内核和实时调度器来提供实时性能。它改善了Linux内核的抢占性能,降低了实时任务的延迟(实时性任务可以抢占非实时性任务,快速影响是优先考虑=》最小的延时)。而Xenomai则通过使用分时多任务和针对实时应用程序进行的专用调度算法来提供可预测性和可靠性(可预测性是主要考虑的目标 =》稳定的延时)

  2. 架构:PREEMPT-RT补丁是基于标准Linux内核的优化补丁,而Xenomai则是一个与标准Linxu调度程度相互独立的并行的、实时调度框架,需要与Linux内核进行配合。Xenomai通过插入一个称为Cobalt的内核模块来添加实时功能,该模块与PREEMPT-RT兼容。

  3. 应用程序支持:Xenomai提供了一套丰富的、专用的、实时应用程序接口(API),如native、posix和skin等,为开发者提供了多样化的选择。它还支持多种应用程序编程语言,如C、C++和Ada等。而PREEMPT-RT主要是对Linux内核的优化,没有提供额外的应用程序开发接口。

  4. 使用复杂性:相对而言,PREEMPT-RT对于配置和使用的要求相对较低,而Xenomai则需要更多的配置和调优。Xenomai的配置和使用可能较为复杂,但它提供了更高度定制化和可预测的实时性能。

选择使用PREEMPT-RT还是Xenomai取决于具体的应用场景和需求。如果对于实时性能要求相对较低,且希望保持较简单的配置和开发过程,PREEMPT-RT可能更合适。而对于对实时性能和可预测性有较高要求,且愿意投入更多配置和调优工作的情况下,Xenomai可能是更好的选择。

第3章 PREEMPT-RT

3.1 概述

PREEMPT-RT(Real-Time)是一个针对Linux内核的实时性能优化补丁。

它的目标是将Linux内核转变为可用于实时应用程序的实时操作系统。

PREEMPT-RT补丁的主要特点包括:

  1. 可抢占内核:PREEMPT-RT补丁增加了内核的可抢占性,使得在内核执行期间能够更容易地中断并切换到更高优先级的任务。这样可以降低实时任务的延迟,并提高系统响应速度。

  2. 实时调度器:PREEMPT-RT补丁引入了实时调度器,用于根据任务的优先级和截止时间进行任务调度。它提供了多种调度算法,包括先进先出(FIFO)和循环率达(Rate Monotonic)等。

  3. 内核锁机制优化:PREEMPT-RT补丁对内核的锁机制进行了优化,以避免锁冲突和死锁。这可以提高多线程应用程序的并发性能,并减少竞争条件。

  4. 中断处理优化:PREEMPT-RT补丁改进了中断处理机制,减少了中断处理的延迟,并提高了实时任务的响应能力。

使用PREEMPT-RT补丁需要进行一些特定的内核配置和编译。它可以与常见的Linux发行版(如Ubuntu、Debian、Fedora等)一起使用,并为实时应用提供较低的延迟和可预测的性能。

需要注意的是,PREEMPT-RT并非完全硬实时(Hard Real-Time)解决方案,它仍在基于Linux的通用操作系统上运行。对于对于具有非常严格的实时性能要求的应用场景,可能需要使用更专门的实时操作系统。

3.2 PREEMPT-RT Patch详解

3.2.1. PREEMPT-RT的思想

PREEMPT-RTPatch的核心思想是最小化内核中不可抢占部分的代码,同时将为支持抢占性必须要修改的代码量最小化。对临界区、中断处理函数、关中断等代码序列进行抢占改进。

3.2.2. PREEMPT-RT特性

1.临界区可抢占。

2.中断处理函数可抢占。

3."关中断"代码序列可抢占。

4.内核中的spinlock和semaphore支持优先级继承。

5.延迟操作。

6.降低延迟的措施。

3.2.3.  PREEMPT-RT的主要改动

PREEMPT-RT把Linux变成一个完全可抢占的内核,改变有以下几点:

1. 通过rt_mutex的重新实现使内核里的锁源语可被抢占。以前被如spinlock_t和rwlock_t保护的临界区现在变得可以被抢占了。

2. 为内核里的自旋锁和信号量实现优先级继承(PI-Priority Inheritance)。

3.  把中断处理器变为可被抢占的内核线程:PREEMPT-RT patch在内核线程上下文中处理软中断处理器。

3.2.3.1临界区抢占

spinlock是Linux内核锁机制的一种,被大量的用在临界区的访问,但传统的spinlock是禁止抢占的,因此会影响系统的实时性。

PREEMPT_RT用支持PI的rt_mutex代替传统的禁用抢占的spin_lock,定义了新的数据类型:spin_lock_t。凡是使用spin_lock_t做参数的spin_lock函数行为有可能引起调度,不会禁用抢占。如果,希望使用传统的spin_lock,则需要使用raw_spin_lock_t类型作为参数。

3.2.3.2中断处理线程化

Linux 硬中断处理时需要关闭中断,无法被抢占,这样会阻塞掉其它的中断请求,PREEMPT-RT会强制透过request_irq()申请的IRQ的顶半部函数在线程中执行,使中断处理函数运行在内核线程上下文中,而不再是中断上下文,可以被抢占。

在PREEMPT_RT环境中几乎所有的中断处理函数都运行在进程上下文中。尽管任何中断都可以被标记为SA_NODELAY使之运行在中断上下文,目前只有fpu_irq、irq0、irq2和lpptest中断设置了SA_NODELAY标记。这些中断中只有irq0(per-CPU定时器中断)是常用的,fpu_irq用于浮点协处理器中断,lpptest用于中断延迟评测。

不要轻易使用SA_NODELAY,它会使得系统的中断和调度延迟大大增加。外,必须非常谨慎地处理标记为SA_NODELAY的中断处理函数,否则将可能导致oops和死锁。

3.2.3.3Spinlock和Semaphore支持优先级继承

在如下的情况下会发生优先级翻转:

    * 低优先级的任务A获取到一个资源,比如一个锁(L)。

  * 中优先级任务B开始执行,抢占了任务A。

* 高优先级任务C尝试获取资源L。因为中优先级的任务B抢占了任务A,(任务A无法释放锁L)那么高优先级的任务就会阻塞。

优先级翻转是实时系统中必须解决的问题,它可能导致一个高优先级任务被无限期推迟执行。

PREEMPT_RT中使用优先级继承来解决优先级反转,核心思想是:高优先级任务暂时将其优先级赠与拥有临界资源(锁)的低优先级任务,从而快速运行加快A对锁的释放。此处优先级继承是变化的:比如,又有一个优先级更高的任务D也尝试获取锁L,那么任务C和A的优先级都会暂时提升为任务D的优先级。优先级继承的持续时间是非常短暂的。因为一旦低优先级任务A释放了锁,它马上就会失去短暂提升的优先级,然后将锁交给任务C。

PREEMPT_RT在一段时间内仅仅允许一个任务读持有读写锁/semaphore。允许该任务递归获取该锁。尽管丧失一些灵活性,却使得优先级继承变得切实可行。

优先级继承使得高优先级任务可以及时地获取锁和semaphore,即便是锁或semaphore已经被低优先级的任务获取。PREEMPT_RT的优先级继承提供短暂的继承,这是高优先级任务突然要获取低优先级任务的锁所需要的。compat_semaphore和compat_rw_semaphore可以用于不需要semaphore优先级继承的事件类的使用场合

3.2.3.4降低延迟的其他措施

有些PREEMTP_RT的修改的主要原因是降低调度/中断延迟。x86 MMX/SSE硬件就是一个列子。该硬件在内核空间抢占关闭的情况下进行操作。这意味着,直到MMX/SSE指令运行完毕,抢占才能开启。有些MMX/SSE指令没有问题,但是有些指令的执行需要很长时间。对此PREEMPT_RT的解决方案是不使用慢的MMX/SSE指令。另一些修改是:向slab分配器申请per-CPU变量也是对肆意关闭中断的一种解决方案。
 

第4章 Xenomai

4.1 简介

Xenomai是一个实时应用程序开发框架,旨在将Linux操作系统扩展为实时操作系统。

它提供了强大的实时功能和可预测性,适用于需要高精确性和低延迟的实时应用程序。

以下是关于Xenomai的一些重要特点和功能:

  1. 双核架构:Xenomai使用双核(或多核)架构,其中一个核心运行Linux内核,而另一个核心运行Xenomai,负责实时任务的调度和执行。这种分离的架构确保了实时任务不会受到Linux内核的影响,提供了更可靠的实时性能。

  2. 分时多任务调度:Xenomai采用了分时多任务调度算法,可为实时任务提供严格且可预测的时间片分配。这种调度策略确保了实时任务可以按照其优先级和截止时间进行准确地调度,避免了不确定性和不可预测的延迟。

  3. 实时应用程序接口(API):Xenomai提供了一套丰富的API,使开发者能够以实时方式编写应用程序。这些API包括Native API和POSIX API,分别提供了对底层实时功能和标准POSIX函数的访问。

  4. 高精确性定时器:Xenomai提供了高精确性的定时器,可用于实现精确的时间控制和事件触发。这对于需要在特定时间点触发操作的应用程序非常关键。

  5. 支持多种架构和硬件平台:Xenomai支持多种处理器架构和硬件平台,包括x86、ARM、PowerPC等。这使得它适用于各种嵌入式系统和实时应用的开发。

需要注意的是,Xenomai的配置和使用对开发者的要求较高。它通常需要对Linux内核进行一些修改和重新编译,以及对Xenomai进行适当的配置和调优。因此,使用Xenomai开发实时应用程序需要一定的技术知识和经验。

总的来说,Xenomai是一个功能强大且高度定制化的实时应用程序开发框架,适用于需要严格的实时性能和可预测性的应用领域,如:

  • 工业自动化
  • 机器人控制
  • 航空航天

4.2 双调度器架构

rtlinux,工业互联,嵌入式软件平台,Linux,实时性

第5章 EtherCAT on RT Linux

rtlinux,工业互联,嵌入式软件平台,Linux,实时性文章来源地址https://www.toymoban.com/news/detail-715982.html

到了这里,关于[工业互联-15]:Linux操作与实时Linux操作系统RT Linux( PREEMPT-RT、Xenomai)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • iNeuOS工业互联网操作系统,民爆远程运维平台案例

    iNeuOS工业互联网操作系统,民爆远程运维平台案例 目       录 1.      概述... 2 2.      iNeuOS在 民爆生产厂区和北京运维中心配置... 3 1.1           生产厂区配置... 3 1.2           运维中心配置... 7         针对本项目进行初步调研,项目的总体需求为满足

    2024年04月17日
    浏览(52)
  • iNeuOS工业互联网操作系统V5,视图建模(WEB组态)升级

    针对工业来讲,特殊是流程行业,视图建模(Web组态)是必不可少应用场景,因为有很多工序要直观的展示工艺流程图。 对于一个工厂,少则几十张工艺流程图,多则上百张工艺流程图,还得支持灵活的修改。大屏也好,3D也罢,开发页面的总量不会太多。 该功能也广泛应用

    2024年02月09日
    浏览(57)
  • 发布:iNeuOS工业互联网操作系统 V5 Preview1 版本(自主可控)

           这半年来一直深耕包头,这个城市比较不错,但是推进项目的难度确实挺大的。与开发产品相比,后者更省心。但是光研发产品,没有项目依托,没办法产生价值。有些大学和研究院确实有好的产品,但是 没有市场化能力,再好的产品也没有用 。       前段时间

    2024年02月08日
    浏览(54)
  • 基于stm32单片机和rt-thread操作系统的智能灯

    目    录 一、 总体概况 二、 各部分介绍 2.1  STM32F4开发板 2.2  光敏模块 2.3  麦克风模块 2.4  超声波模块 三、 RT-Thread介绍 四、 开发过程 五、 未来设想 六、 开发心得 总体概况 本次测试技术与信号处理课程作业,我利用了stm32单片机和rt-thread实时操作系统进行实践。

    2023年04月16日
    浏览(82)
  • 微控制器实时操作系统实践1实时系统介绍

    这本实践指南将为你提供最重要的功能知识,以使实时操作系统(RTOS)在微控制器(MCU)上启动和运行。如果你有兴趣学习如何通过使用实际硬件的实例来实现RTOS的应用,并讨论常见的性能与开发时间的权衡,那么你就来对地方了!我们将使用自由RTOS来实现代码! 我们将使

    2024年02月08日
    浏览(46)
  • 工业机器人编程与操作-搬运机器人码垛系统编程与仿真

    目录 一、设计背景  二、课程设计任务要求 三、设备导入并布局 四、传送带的smart组件 五、传送带整体思路 六、夹爪的smart组件6.1 LineSensor被测是否有任何对象与两点之间 七、夹爪整体思路 八、程序配置 九、各程序 参考文献 在科技和经济飞速发展的背景下,人力成本不断

    2024年02月07日
    浏览(59)
  • FreeRTOS_从底层学习实时操作系统

    目录 1. 裸机系统和多任务系统 2. 任务的定任务切换的实现 2.1 什么是任务? 2.2 调度器 2.3 临界段 3. 空闲任务和阻塞延迟 4. 时间片 裸机系统:         裸机系统 分为 轮询系统 和 前后台系统 ;(51单片机就属于裸机系统)         轮询系统 是在裸机编程的时候,先初始化

    2024年02月07日
    浏览(40)
  • 物联网实时操作系统1RTOS简介(上)

    在大型计算机的世界里,操作系统(OS operating systems)已经存在了相当长的一段时间。最基本的操作系统可以追溯到20世纪50年代。到20世纪70年代中期,操作系统的概念、结构、功能和界面已经非常成熟。 微型系统大约在 1970年出现。在基于微处理器的设备中迅速应用操作系统

    2024年02月16日
    浏览(57)
  • 嵌入式实时操作系统的设计与开发

    在RTOS中,时钟具有非常重要的作用,通过时钟可实现延时任务、周期性触发任务执行、任务有限等待的计时。 大多数嵌入式系统有两种时钟源,分别为实时时钟RTC(Real-Time Clock)和定时器/计数器。 实时时钟一般是靠电池供电,即使系统断电,也可以维持日期和时间。由于实

    2024年02月11日
    浏览(42)
  • 微控制器实时操作系统实践5选择IDE

    集成开发环境(IDE integrated development environment)有能力极大地影响开发。集成开发环境被设计成具有较小的学习曲线,并且通常提供一种简单的方法来从现有的驱动程序和中间件建立解决方案。 在本章中,我们将讨论如何选择IDE,看看不同类型的IDE,并选择一个IDE来创建你在

    2024年02月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包