MCU--时间片&分时轮询

发布者:花开堂前最新更新时间:2022-07-13 来源: csdn关键字:MCU  时间片 手机看文章 扫描二维码
随时随地手机看文章

1、任务调度

任务调度对于电子类或者自动化类专业小伙伴最早接触一般都是在接触RTOS后了,然而对于计算机相关专业的小伙伴应该在学《计算机操作系统》老师对这一块讲解的非常清楚了,包括一些性能指标的定义与计算等等,不过作者这里仅仅只针对RTOS进行讲解,大家感兴趣可以找一下操作系统的书籍更加深入学习。


大家都知道我们的操作系统可以隐蔽底层实现,为用户提供API接口来供我们的应用程序服务,同时操作系统可以管理多个任务实现CPU的最大利用率,然而对于RTOS提供的最主要功能就是任务的调度来管理多个任务。


任务的调度简单一点的说就是确定任务该怎么执行的一种机制,这种涉及到策略的问题其实都可以归纳为算法问题,从而也就会出现了各种各样的任务调度算法,比如时间片轮转调度算法、优先级调度算法、短任务先行调度算法等等,当然肯定没有一种完美的调度算法,每种算法都有其特点,根据任务的自身特点匹配任务调度从而满足用户需求。

图片

然而对于目前大部分的RTOS都是采用一种可剥夺方式的优先级抢占内核调度算法,通过为每个任务设置一个优先级来标记任务的紧急程度,优先级高的任务获得优先占用CPU的权利,当高优先级任务执行完毕进而寻找次高优先级来执行。(同时也存在优先级翻转问题)有阅读过1-2种RTOS内核的小伙伴应该都有一种感受:"这不都一样吗?",确实除了系统中实现的方式和效率有所差异之外,基本上都大同小异,不过大家在学习的过程应该多问一下为什么这样设计?这样设计的好处是什么?会带来什么问题?有没有自己觉得更好的设计方案?等等之类的。


2、"先来先服务调度"与“前后台架构”

1)先来先服务调度 

先来先服务调度(FCFS: first come first service)该调度算法算是最简单的一种,先进入就绪的任务首先占用CPU被执行,而且是一种非抢占式的任务调度,非常类似于数据结构-队列的形式,一旦任务进入就绪状态便会进入FIFO就绪队列。

图片

特点说明:

  • 任务调度主要是存在任务的切换过程,需要进行现场的保存等等处理,而对于先到先服务调度,任务是不可剥夺的,每次都需要先进来的任务执行完毕主动的放弃CPU,进而执行下一个等待的任务。所以这样短任务的执行需要等待长任务执行完毕以后才能进行运行,这样对短任务的实时性大大降低,同时整体性能上也不是太好。


2)先来先服务VS前后台架构 

    之前很多小伙伴认为前后台的顺序执行架构和分时轮询架构都属于先进先服务调度,这里作者为大家分析一下他们之间的区别和关联:

图片

区别与关联:

  • 一般先来先服务调度都是通过任务主动休眠放弃CPU,然后从就绪队列取出新的任务进行执行,就绪FIFO里面的任务顺序是根据任务休眠时间结束的事件先后来进行排列的,如果我们能够控制FIFO中的任务排序便能够实现跟前后台顺序和分时轮询类似的效果。


  • 然而对于前后台分时轮询架构其实和先进先服务调度还是存在一个优先级的概念在里面的,虽然说两者都不能实现任务上的抢占,不过对于分时轮询架构存在任务间的抢占,举个例子如下图所示:

图片

 

  • 一些小伙伴该问了,在使用前后台分时轮询没有使用设置优先级呀,怎么会有优先级的概念呢?通过看之前的架构程序你会发现,我们整个程序运行是存在顺序的,比如执行顺序为任务1-->任务2-->任务3依次排列,当任务1快执行完毕,而任务3定时任务已经准备就绪很久了,此时刚好任务2时间到进入就绪,此时对于前后台分时轮询是会先执行任务2,因为任务2在任务1代码后面,而对于先进先服务调度则还是会执行任务3,然后执行任务2。


  • 那么其实我们可以对前后台分时轮询进行队列改造,其实可以达到先进先服务类似的效果,同样两者都是不可被抢断,每个任务都能够有执行的机会。


3、时间片调度-(也叫RR调度)

还记很久之前uC/OSIII没有出现的时候,uC/OSII并不支持同优先级任务的运行,很多小伙伴想办法改写调度机制,不过现在主流RTOS应该都支持时间片轮询调度。时间片轮询调度是一种非常公平的调度办法,系统中规定一个时间单元,同优先级的任务按照顺序执行该时间单元规定的时间,执行完一个时间片便会切换到其他任务再执行相同的时间单元,这样交替执行实现多任务。

图片

解析一下:

  • 我们可以通过上面的图看到时间片调度就是根据时间单元轮流切换执行时间,这样看来时间片的长度选择尤为关键,如果时间片过短,大部分的事件都浪费在了任务的切换上面,那么CPU的利用率较低;但是如果时间片时间过长又会导致该调度退化为类似于先进先服务调度模式,这样对于短任务的响应是大打折扣的。


  • 所以时间片调度机制属于一种抢占式调度机制,如果有n个任务进行时间片调度,如果时间片的时间为t,那么每个任务得到执行的时间不会超过(n-1)t,一定要注意的是这里仅仅是得到执行,并不是执行结束,如果任务能够在一个时间片内执行完毕,则可以认为得到执行并执行完毕。


  • 如果选择最优时间片呢?如果你想通过理论来进行计算的话就需要了解一下调度的性能指标比如完成时间,周转时间,带权时间,平均周转时间,平均带权周转时间等等,然后通过测试每个任务的执行时间来求出最优的时间片;不过在我们程序的运行中大部分运行时间都是动态的,且时间片的选择对我们的需求影响并不是特别大,只要不过分小或者过分大均合适,一般个人取值都是在任务切换时间的50~100倍之间进行取值,同时也会根据实际调试情况进行调整。


4、最后小结

通过上面的知识介绍大家应该明白前后台分时轮询和时间片的差异和联系了吧,其实叫做什么名字作者觉得并不是那么重要,关键是大家要达成共识,并且了解其中的区别,对于任务调度算法其实还有很多,大家平时可以对目前的RTOS进行调度机制的改造,并且通过对应的测试指标获得各个算法的性能。


关键字:MCU  时间片 引用地址:MCU--时间片&分时轮询

上一篇:MCU--常用于单片机的接口适配器模式C语言实现
下一篇:新唐n76e003单片机遥控PWM信号检测控制航灯系统

推荐阅读最新更新时间:2024-11-11 11:49

51单片机———串口通讯的疑惑
/*程序的功能是在T1定时器工作方式2下使用串口工作方式1实现串口通讯, 即PC机发送一串数据,51单片机将数据反馈回来。使用回车符作为一串字符串的结束标志 总结: 我是参照郭天祥51单片机写的, 这个程序写得还是有点疑惑,就是下面在接受完数据后 一定要先将串口中断关闭(即ES = 0),然后再进行处理, 如果不关闭中断的话,反馈回PC机的数据就是I get\n*/ #include reg51.h //#define DEBUG #define u8 unsigned char #define u16 unsigned int #define MAXSIZE 64 u8 code table = I get ; u8
[单片机]
51<font color='red'>单片机</font>———串口通讯的疑惑
AVR单片机用于太阳能电池控制器的设计
简介:在此设计的太阳能控制器性能稳定,具有过充过放保护和温度补偿。经过测试,系统显示出良好的控制效果,不仅提高了太阳电池的工作效率,同时也保护了所使用的蓄电池,在利用绿色能源方面,具有一定的社会效益和广泛的推广价值。 随着能源危机和环境污染的加深,太阳能的研究和利用受到广泛的关注。太阳能是人类取之不尽用之不竭的可再生能源,也是清洁能源,不产生任何的环境污染,在太阳能的有效利用中,太阳能充电是近些年发展最快,最具活力的研究领域,是其中最受瞩目的项目之一。太阳能电池发电是基于“光生伏打效应”原理,将太阳能转化为电能,利用充电效应将太阳辐射直接转化为电能。它具有永久性、清洁性和灵活性大的优点,是其他能源无法比拟的。 1 太阳能控
[单片机]
AVR<font color='red'>单片机</font>用于太阳能电池控制器的设计
单片机中LED数码管的介绍
LED 小灯是一种简单的 LED,只能通过亮和灭来表达简单的信息。而这节课我们要来学习一种能表达更复杂信息的器件——LED 数码管。 先给大家提供一张原理图看一下,如图 5-3 所示。 图 5-3 数码管原理图 这是比较常见的数码管的原理图,我们板子上一共有 6 个数码管。前边有了 LED 小灯的学习,数码管学习就会轻松的多了。从图 5-3 可以看出来,数码管共有 a、b、c、d、e、f、g、dp 这么 8 个段,而实际上,这 8 个段每一段都是一个 LED 小灯,所以一个数码管就是由 8个 LED 小灯组成的。我们看一下数码管内部结构的示意图,如图 5-4。 图 5-4 数码管结构示意图 数码管分为共阳和共阴两种,共
[单片机]
<font color='red'>单片机</font>中LED数码管的介绍
51单片机最小系统原理图、PCB及组成
单片机:单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。 先上原理图和PCB,原理介绍在后面: 原理图:(如有错误欢迎留言, PCB: 3D效果图: 最小系统组成: 51单片机最小系统:单片机、复位电路、晶振(时钟)电路、电源 最小系统用到的引脚 1、主电源引脚(2根)VCC:电源输入,接+5
[单片机]
51<font color='red'>单片机</font>最小系统原理图、PCB及组成
原创作品LED流星雨灯(51单片机程序代码)产品分享!
最近公司生产了一款流星雨灯!现把它分享给大家! 一、图片分享: 二、PCB文件分享: 三、原理图分享: 四、 上面只做了5根灯管,如果需要增加灯管的话,只需稍微改动下 下面的程序即可.如果增长 连线把灯管摆成圆形或者方形效果也比较牛逼的. 此款流星灯直径只有1.5公分只可以做30公分、50公分、80公分、1000公分等 。 这个东东主要是做装饰用,技术支持: http://www.51hei.com/ 下面公开全部的源代码. 请大家多多指教.程序代码大家可以随意修改,但不可用于商业用途. /*流星雨程序代码 作者:胡琴 2011-12-12 单片机型号:STC11F04 IO
[单片机]
原创作品LED流星雨灯(51<font color='red'>单片机</font>程序代码)产品分享!
单片机设计测距仪原理及其简单应用
目前超声波测距已得到广泛应用,国内一般使用专用集成电路根据超声波测距原理设计各种测距仪器,但是专用集成电路的成本较高、功能单一。而以单片机为核心的测距仪器可以实现预置、多端口检测、显示、报警等多种功能,并且成本低、精度高、操作简单、工作稳定可靠。本文简要介绍了利用5l系列单片机实现超声波测距的原理以及实现的方法。 1 51系列单片机的功能特点 5l系列单片机中典型芯片(女[1AT89C51)采用40引脚双列直插封装(DIP)形式,内部由CPU,4kB的ROM,256 B的RAM,2个16b的定时/计数器TO和T1,4个8 b的工/O端I:IP0,P1,P2,P3,一个全双功串行通信口等组成。特别是该系列单片机片内的Flash可编程
[单片机]
什么是单片机单片机应用范围广吗?
什么是单片机: 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。 可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为积小,通常都藏在被控机械的“肚子”里。它
[单片机]
MCS-51单片机汇编语言:算数运算指令有哪些?
加法指令(Addtion) ADD A, Rn ; A←(A)+(Rn) ADD A, @Ri ;A←(A)+((Ri)) ADD A, direct ;A←(A)+(direct) ADD A, #data ;A←(A)+#data 带进位加法指令 ADDC A, Rn ; A←(A)+(Rn)+(Cy) ADDC A, @Ri ;A←(A)+((Ri )) +(Cy) ADDC A, direct ;A←(A)+(direct) +(Cy) ADDC A, #data ;A←(A)+#data +(Cy) 加1指令 INC A
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved