在嵌入式系统中,我们使用RTOS,而在服务器或个人电脑等性能要求更高的地方我们经常使用Linux,这两者到底有什么区别?本文较详细的介绍了RTOS与Linux系统的特点,并做了简单的对比。

一.RTOS

1.什么是实时操作系统(RTOS)

实时操作系统(Real Time Operating System,简称RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点。

实时多任务操作系统( RTOS)是嵌入式应用软件的基础和开发平台,是一段嵌入在目标代码中的软件,用户的其他应用程序都建立在 RTOS 之上。 RTOS 通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器 Browser 等。RTOS 还是一个标准的内核,将 CPU 时间、中断、 I/O、定时器等资源都包装起来,留给用户一个标准的 API,并根据各个任务的优先级,合理地在不同任务之间分配 CPU 时间。随着应用的复杂化,一个嵌入式控制器系统可能要同时控制 /监视很多外设,要求有实时响应,有很多处理任务,各个任务之间有多种信息传递, 如果仍采用原来的程序设计方法存在两个问题。一是中断可能得不到及时响应,处理时间过长,这对于一些控制场合是不允许的,对于网络通信方面则会降低系统整体的信息流量。二是系统任务多,要考虑的各种可能也多,各种资源如调度不当就会发生死锁,降低软件可靠性,程序编写任务量成指数增加。

RTOS与其他系统的区别在于它严格按照任务优先级执行,而在非实时操作系统(例如Linux)上,虽然任务也分优先级,但对于长时间未处理的低优先级任务,它会在有其他优先级更高的任务时处理该任务,这样照顾了系统的性能,但是带来了不确定性,对于RTOS来说,每一个任务的处理顺序都是固定的、可预见的,因为它一直响应优先级高的任务,即”实时性“。

14种主流的RTOS,分别为μClinux、μC/OS-II、eCos、FreeRTOS、mbed OS、RTX、Vxworks、QNX、NuttX,国产的嵌入式操作系统包括都江堰操作系统(djyos)、Alios Things、Huawei LiteOS、RT-Thread、SylixOS。

2.功能

(1)任务管理:

分时操作系统中的基本调度单位一般是进程(或者线程),而对于实时操作系统,其内核调

度的基本单位是任务。任务一般由任务控制块、程序区、数据区、堆栈区组成,堆栈又分为

系统堆栈和用户堆栈。 任务的驱动一般是基于消息或者事件的, 即任务的设计是按照依次

处理可能接收到的消息和事件,周而复始轮询循环的。实时操作系统中的任务有四种状态:

运行( Executing),就绪( Ready),挂起( Suspended),冬眠( Dormant )。

(2)任务间同步和通信:

主要实时操作系统的任务间同步和通信的机制有:消息、事件、信号量;少部分实时操作系

统仍使用邮箱机制;还有一些实时操作系统提供了共享内存的任务间通信机制。

(3)内存管理:

实时操作系统内存管理模式可以分为实模式与保护模式。目前主流的实时操作系统一般都可

以提供两种模式,让用户根据应用自主选择。另外,实时操作系统的内存管理还有对于内存

的优化分配,以尽量减少整个系统的内存占有量的要求。

(4)实时时钟服务:

实时时钟是系统调度的基础,也是系统定时服务器的基础。实时时钟服务一般包括定时唤醒

(tm_wkafter 或者 tm_wkwhen )、定时事件( tm_evafter 或者 tm_evwhen )机制。

(5)中断管理服务:

是操作系统的一个核心和基本的功能。实时操作系统要求中断处理程序更加短小、精悍,以

减少中断禁止时间和中断延迟时间。

3.体系结构

1)硬件抽象层(HAL)包含了所有和硬件平台相关的代码,如上下文切换和 I/O 寄存器访问

等等。它存在于 RTOS 的最底层,直接访问和控制硬件,对其上层的 RTOS 的机器无关代

码提供访问和控制服务。 这样可以简化 RTOS 内核的移植工作, 除了设备驱动程序之外,

在移植的时候只需要修改 HAL 的代码就可以了。

2)RTOS 内核(Kernel)是用来为大多数程序乃至 OS(网络、文件系统、驱动程序)构建一

系列在抽象的文件上工作的抽象机,使用户程序及上层 OS 组件对系统设备透明。

3)在提供的 RTOS 接口上需要有对用户程序提供的函数接口,专门为用户定制网络、图形、

视频等接口。并且提供驱动程序开发界面,方便开发者对不同需求的设备定制驱动程序。一

般来说,RTOS 内核的实现都为微内核的体系结构。 所谓微内核技术是指将必需的功能(如

进程管理、任务通信、中断处理、进程调度)放在内核中,而将那些不是非常重要的核心功

能和服务(文件系统、存储管理、网络通信、设备管理)等等作为内核之上可配置的部分。

这样,整个操作系统就是由提供一些基本服务机制的微内核加上一些服务进程构成,系统的

各个系统调用和服务都是由内核发消息到不同的服务进程, 服务进程执行相应的操作, 然

后以消息的方式返回内核。

4.优点

(1)保证任务执行的实时性;(2)简化多任务切换和资源分配及网络消息管理;(3)模块

化便于软件扩展、移植和再使用;(4)提高编写出的软件可靠性;(5)使软件开发从 “小

生产阶段 ”进入到 “大生产阶段 ”。

二.Linux

1.什么是Linux

Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要。

Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux不仅仅是被网络运维人员当作服务器使用,甚至当作网络防火墙,这是Linux的一大亮点。

Linux具有开放源码、没有版权、技术社区用户多等特点,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。尤其系统中内嵌网络协议栈,经过适当的配置就可实现路由器的功能。这些特点使得Linux成为开发路由交换设备的理想开发平台。

全世界大部分的服务器运行着Linux操作系统,其中99%的超级计算机都是使用Linux。

2.优点:

提供了先进的网络支持、多任务、多用户、符合 IEEE POSIX 标准、支持数十种文件系统格式、完全运行于保护模式、开放源代码、采用先进的内存管理机制,更加有效地利用物理内存。Linux 低成本开发系统、可应用于多种硬件平台 、可定制的内核 、性能优异 、良好的网络支持。

三.Linux与RTOS的本质区别

前面提到过,RTOS是实时的,也就是优先级高于一切,正在执行的任务,不管完成度是多少,都会与其他任务的优先级进行比较,一旦有优先级更高的任务,该任务就会中断,而在Linux中,虽然有优先级划分,但正在执行的任务不再与其他任务做比较,以处理效率优先。

————————————————

Linux操作系统在2.5版本以后改进使得进程可抢占,但Linux并不能保证可预见性和确定性。Linux中一个最大的问题是优先级倒置现象。比如,一个当一个低优先级进程在临界区时,高优先级进程必须等待低优先级进程;或者,一个低优先级中断服务进程正在运行,那高优先级进程必须等待。这种现象会造成极大不确定性。还有就是,Linux使用的自旋锁。自旋锁会导致一个进程不停的进行自循环,并持续占有cpu资源,在多核处理器上,这会导致某个核心上的进程无故停等。

值得一说的是,linux中虽然也存在优先级调度,但在linux中高优先级不是一定会优先运行,且linux中任务的优先级是会发生改变的,如下所述:

我们一般把频繁等待的线程称之为IO密集型线程,而把很少等待的线程称为CPU密集型线程,而把很少等待的线程称为CPU密集型线程, IO密集型线程总是比CPU密集型线程容易得到优先级的提升。

在优先级调度下,存在一种饿死的现象,一个线程被饿死,是说的优先较低,在它执行前总有比它优先级高的任务要执行,导致它无法执行。为了避免饿死现象,调度系统常常会逐步提升那些等待了过长时间的得不到执行的线程的优先级。

所以虽然linux的实时性有所提高,但它并不是实时操作系统。

相比于Linux, RT-Linux在实时性方面进行了改进,它是在Linux的基础上,提出了一个RT补丁,加入到Linux,将Linux改进成实时操作系统。

它的主要工作就是对Linux的优先级倒置、自旋锁等问题,进行改进,达到实时操作系统的要求。

————————————————

版权声明:本文为CSDN博主「胡涂涂~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/KUNPLAYBOY/article/details/121897318

RTOS与Linux相关推荐

  1. rtos与linux软件开发,实时Linux和RTOS的基本特性及技术进行比较

    描述 体系结构异同 对实时操作系统(RTOS)特性进行比较和分析.对于我们刚接触这个操作系统时一定要对他们要有一定的了解,我们先对实时操作系统来了解下,它就是指当外界事件或数据产生时,能够接受并以足够 ...

  2. linux线程调度与rtos,实时Linux和RTOS的基本特性及技术进行比较

    体系结构异同 对实时操作系统(RTOS)特性进行比较和分析.对于我们刚接触这个操作系统时一定要对他们要有一定的了解,我们先对实时操作系统来了解下,它就是指当外界事件或数据产生时,能够接受并以足够快的速 ...

  3. RTOS与linux区别

    一句话解释: linux是分时系统,不过可以通过配置内核改成实时. 嵌入式Linux 系统是在原来Linux的发行版本之上进行了优化和改进的,用于嵌入式的移动终端等设备的嵌入式Linux系统现在基本上 ...

  4. rtos和linux在内存管理上,freertos与linux区别

    freeRTOS是一个实时操作系统,主要实现了任务调度.内存管理.IPC.中断管理这几个模块,它要求快速的处理任务,gui.驱动框架.shell 这些都不是它的核心功能,而且大部分情况下都不会做,因为 ...

  5. qt如和调用linux底层驱动_擅长复杂硬件体系设计,多核系统设计,以及基于RTOS或者Linux,QT等进行相关底层驱动。...

    双向可控硅在使用时,其触发限流电阻的阻值和封装应该怎么选取? (1)首先我们在进行TRIAC其驱动电路设计的时候,我们一般不直接进行驱动,而是通过DIAC或者Photo-TRIAC即光学的双向可控硅配 ...

  6. RTOS成功取代Linux成为天猫精灵OS的关键 -- AliOS Things 维测专题

    背景 在2018年下半年,天猫精灵系统团队开始研发新一代方糖系列智能音箱,当时业内主流的音箱产品如百度小米等均采用Linux来做智能音箱,Linux系统优势无需多说--开源稳定,三方库完备,芯片厂商硬 ...

  7. 从单片机转到嵌入式Linux的跨度大吗?

    这是我今天一个同学问我的 我再零散的说一些观点,如果大家有这方面的经验,也帮忙在文章下留言,谢谢大家. 先说共同点 单片机和嵌入式他们最终都是要跑硬件的,所以你也会遇到像GPIO口.I2C.串口.SP ...

  8. 鸿蒙不是安卓也不是Linux

    1.1 鸿蒙不是Linux,也不是安卓 很多人会混淆鸿蒙跟Linux的关系. 先举个例子,大家很熟悉的Windows里面含有内核,也含有UI系统,含有桌面程序,普通人可以直接使用Windows.但是L ...

  9. Linux学习高手写给初学者的经验谈

    Linux学习高手写给初学者的经验谈 2008-04-01 15:02 现在好多的人开始接触电脑的时候,见到的应该是Windows98说实话,98 已经是一个很人性化,封装的很好的一个系统了一个对电脑 ...

最新文章

  1. 一个Apache CollectionUtils.intersection 方法的简单问题
  2. Application summary please elaborate on how you plan to use our API
  3. Chosen中选择项的更新
  4. LeetCode 305. 岛屿数量 II(并查集)
  5. LeetCode 275. H指数 II(二分查找)
  6. 服务器上的文件怎么取名,给新的服务器取名你会取神马?
  7. 修改eclipse配置文件properties编码格式
  8. MySql数据的启动和停止以及SQLyog图形化工具的下载
  9. maven 相关简介,和操作命令
  10. 数据库系统概念读书笔记-SQL标准简介
  11. WordPress去掉分类链接中category目录的两种方法
  12. 平均值、方差、标准差
  13. UIPATH 浏览器在新标签页中执行操作
  14. CSV文件打开乱码解决方法
  15. 东昂科技冲刺深交所:年营收2.6亿 庄俊辉控制69%股权
  16. 将RSA加密应用在ARM-Linux平台
  17. 02#EXCEL函数【基础】
  18. HtmlUnit使用体会
  19. IBM RSA 建模:第 8 章可重用模型
  20. 简化开发流程--UEditor富文本编辑器

热门文章

  1. 前端自动化测试(webdriverio+mocha+chai)
  2. JetBrains又出编程神器!
  3. 跳跃游戏(Java)
  4. 关键字驱动和数据驱动
  5. ssd测试软件和实际 速度,固态硬盘实际速度比拼_三星 300E5K-Y05_笔记本评测-中关村在线...
  6. 快乐大脚!快乐的帝企鹅!
  7. FPGA(一)Vivado与ModelSim
  8. 中兴二面(综合面试及口语测评)
  9. 菜鸟实现 PHP 二阶、三阶行列式计算和矩阵运算的加、减、乘
  10. 关于socket长连接的心跳包