裸机和RTOS系统区别与联系

这篇具有很好参考价值的文章主要介绍了裸机和RTOS系统区别与联系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 裸机和rtos的多任务处理

试想一种场景,我们正在打游戏,但女朋友在你打游戏的过程中给你发送消息,你需要回复消息 

裸机和RTOS系统区别与联系 裸机和RTOS系统区别与联系

 1.1 裸机处理方式

while(1) 
{ 
	打游戏();
	回复信息(); 
}

玩过51或者stm32的裸机编程的人都知道,我们往往会在应用程序写一个大循环,如果你一把游戏30min,那么你就得30min后才能执行回复信息的任务,那么你女朋友就会找你麻烦了😆打完游戏才能发送信息,回完信息才能继续打游戏,如下图

裸机和RTOS系统区别与联系

1.2 RTOS行为 

void main(void) 
{ 
	/* 创建打游戏任务 */
	xTaskCreate(打游戏)
	/* 创建回复信息任务 */ 
	xTaskCreate(回复信息)
}
void 游戏(void) 
{ 
   while(1) 
   { 
	 打游戏();
   }
}
void 信息(void) 
{ 
   while(1) 
   { 
	 回复信息();
   }
}

而rtos不和裸机相同,它会让打游戏运行一个时间片,回复信息运行一个时间片,一个时间片的时间是可以我们自己设置的,就是滴答定时器的一个节拍,例如我们可以设置1ms来运行,这有点类似于一个伪多线程,在微观来看我们实际是两个任务交替运行,但是宏观上我们却感觉两个任务在同时运行,妥妥的游戏得意,情场得意6️⃣,如下图

裸机和RTOS系统区别与联系

2. 裸机和rtos的优先级处理

同样的场景,假设此时小明肚子疼了,要去医院,此时裸机与RTOS又会怎么做呢?

裸机和RTOS系统区别与联系 裸机和RTOS系统区别与联系

裸机和RTOS系统区别与联系

2.1 裸机处理 

这时我们可能就知道,这个时候用中断阿,并把它设为一个比较高的优先级,毕竟生命安全第一位,我们可以定义一个中断服务程序,一肚子痛就触发中断去医院,但我们注意,中断是一瞬间的事情,我们不能在中断服务函数做太多的事,比如我们在终端服务函数做一个delay个10ms,程序可能就会出现问题例如:

  • 中断处理时间太长或导致正常的应用程序不能按时被执行;
  • 执行中断时不能响应其他中断,中断执行时间太长容易丢其他中断;
  • 某个中断服务程序执行时间太长,可能导致中断嵌套非常深,容易导致栈溢出,也容易出现逻辑问题。

去医院就是一个长任务,需要坐车挂号看医生,很显然,我们不能把去医院放在中断中

但是呢,玩过单片机的我们都知道,对中断的处理我们一般都是设置一个全局的标志位,我们只需要在中断函数中设置标志位,然后再大循环中去判断这个标志位就可以了,代码如下: 

while(1) 
{ 
	打游戏();
	回复信息(); 
	if(FLAG == 1)
	{
	   去医院();
	   FLAG = 0;
	}
}

但是假如我们此时再打游戏中,打游戏这个任务需要运行30min,即使此时FLAG这个标志位已经在中断中被置为1了也无济于事,仍然要等运行完上面两个任务才能进行下面的判断,实时性非常差

2.2 rtos处理 

而rtos的处理方式就相当的优雅了,我们可以创建三个任务,并把去医院设为高优先级,让rtos系统自己去进行调度,并且我们注意一种情况,当去医院这个任务在运行没有占有cpu资源时,例如挂号要等待或者去医院的路上,这个时候看病这个任务是没有在进行的,cpu也没有被占用。此时cpu又可以分配给低优先级的任务,例如打游戏回信息,这样我们就很好的使用了cpu的资源

void main(void) 
{ 
	/* 创建打游戏任务 */
	xTaskCreate(打游戏)
	/* 创建回复信息任务 */ 
	xTaskCreate(回复信息)
	/* 创建去医院任务 */ 
	xTaskCreate(去医院)
}
void 游戏(void) 
{ 
   while(1) 
   { 
	 打游戏();
   }
}
void 信息(void) 
{ 
   while(1) 
   { 
	 回复信息();
   }
}
void 去医院(void) 
{ 
   while(1) 
   { 
	 去医院();
   }
}

3. 裸机和rtos的区别

3.1 裸机

裸机:裸机又称为前后台系统,前台系统指的中断服务函数,后台系统指的大循环,即应用程序

  • 实时性差:(应用程序) 轮流执行
  • delay:空等待,CPU不执行其他代码
  • 结构臃肿:实现功能都放在无限循环

裸机和RTOS系统区别与联系

3.2 rtos

RTOS特点:RTOS全称为:Real Time OS,就是实时操作系统,强调的是:实时性

分而治之:实现功能划分为多个任务
延时函数:任务调度
抢占式:高优先级任务抢占低优先级任务,更高优先级也可以先运行
任务堆栈:每个任务都有自己的栈空间,我们低优先级任务被抢占后,cpu重新回到自己手里,是从之前那个位置继续执行,因此这个栈空间需要有相关的信息,例如:寄存器的值,局部变量…,这和c语言的linux多线程编程有点类似,就是在打断的时候要保存后续的事件,完成中断之后会继续倒回去
 

裸机和RTOS系统区别与联系

值得注意的是,rtos也有中断,我们前面的任务调度其实是软件层面上的说法,而中断的优先级是最高的文章来源地址https://www.toymoban.com/news/detail-423849.html

到了这里,关于裸机和RTOS系统区别与联系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 架构,平台,框架的区别和联系

    1、解释说明 - 架构:在软件开发中,架构是指软件的整体设计和组织方式。它包括了软件的结构、组件和交互方式等方面的设计。架构定义了系统的高级结构和组织方式,以及各个组件之间的关系和交互方式。一个良好的架构可以提高软件的可维护性、可扩展性和性能。 -

    2024年02月10日
    浏览(31)
  • openCV openGL 区别和联系

    OpenCV是 Open Source Computer Vision Library OpenGL是 Open Graphics Library 简单理解: opencv用来解析图片 , opengl用来画图 , OpenCV主要是提供图像处理和视频处理的基础算法库,还涉及一些机器学习的算法。比如你想实现视频的降噪、运动物体的跟踪、目标(比如人脸)的识别这些都是C

    2024年02月21日
    浏览(36)
  • 程序、进程、线程的概念、区别与联系

    程序指的是一些保存在磁盘上的指令的有序集合,通常用某种程序设计语言编写,运行于某种目标计算机体系结构上。程序是静态的,就好比一个电脑上的普通文件一般,没有任何执行的概念。 进程是计算机中的软件程序关于某数据集合上的一次运行活动,用通俗的话来讲

    2024年02月03日
    浏览(44)
  • Numpy&Pandas的区别和联系

    目录 一、Numpy 二、Pandas numpy是以矩阵为基础的数学计算模块,提供高性能的矩阵运算,数组结构为 ndarray 。 首先需要明确 数组与列表的区别 :数组是一种特殊变量,虽与列表相似,但列表可以存储任意类型的数据,数组只能存储一种类型的数据,同时,数组提供了许多方便

    2023年04月08日
    浏览(43)
  • Glance、Cinder、Swift区别&联系

    提供镜像服务,它负责对镜像进行管理,例如发现、注册,镜像是产生虚拟机系统盘的模板,Glance 并不保存镜像,Glance 支持多种后端存储服务,例如 本地文件系统作为存储介质 、 Swi负( OpenStack Object Storage )作为存储介质或者 AWS S3 兼容的 API 作为存储介质以及分布式存储

    2024年02月15日
    浏览(33)
  • 集群与分布式:区别与联系

    人不走空                                                                          目录         🌈个人主页:人不走空       💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 集群概述 分布式系统概述 区别与联系 三、应用场景的区别 结语 作者其

    2024年01月16日
    浏览(33)
  • 标量、向量、矩阵、张量之间的区别和联系

    标量 标量(scalar):一个标量就是一个单独的数(整数或实数),不同于线性代数中研究的其他大部分对象(通常是多个数的数组)。标量通常用斜体的小写字母来表示,例如:x mathit xx,标量就相当于Python中定义的 x = 1 向量 向量(vector):一个向量表示一组有序排列的数,通过次序

    2024年02月08日
    浏览(36)
  • 参数估计和假设检验的区别与联系

    笔记来源: 参数估计与假设检验 参数估计和假设检验有什么区别? 参数估计和假设检验是推断统计的两个组成部分,它们都是根据样本信息对总体的数量特征进行推断 下图来自《统计学图鉴》 参数估计和假设检验都是以抽样分布为理论依据,建立在概率论基础之上的统计

    2024年02月09日
    浏览(41)
  • 云计算和大数据区别和联系

    云计算和大数据最重要的都是分布式存储和分布式计算,但二者有所区别。 云计算集中在如何分布算力,如CPU、内存、磁盘等资源调度的问题,如何对这些硬件资源进行调度和弹性使用。 大数据主要关注其计算模式,对于流处理、批处理以及图处理等应用场景下的计算。 云

    2024年02月12日
    浏览(38)
  • 产品经理与产品运营的区别和联系

    一、两者的职责区别 产品经理的目的:是创造有价值的产品 产品运营的目的:是让产品能有效的发挥出它应有的价值 二、两者的工作内容区别 产品经理的工作内容 产品的经理的目的是创造有价值的产品,因此产品经理的所有工作都是围绕着:     如何确定产品的价值;

    2024年01月17日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包