0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是时间片轮转调度?时间片轮转调度算法基本原理

要长高 来源:网络整理 作者:网络整理 2024-03-22 14:54 次阅读

单片机在系统中充当CPU的角色,需要同时处理多个事务。如与PC机通信,将收到的信息转发给从机,监视数据处理情况等一些繁杂而又重要的事情。如何协调好各个事务之间的关系,并有条不紊的执行各个事务,这就需要在编写程序时采用合适的算法进行处理。

一般的方法就是在单片机中移植操作系统,由操作系统来管理各个事务。但由于系统要占用一定的内部资源,这对本身资源非常有限的单片机来说是不现实的。所以,很少在单片机中采用操作系统,而是采用时间片轮询调度的方法进行各任务的管理。

时间片,简单来说就是CPU分配给各个程序的时间,使各个程序从表面上看是同时进行的,而不会造成CPU资源浪费。

在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但是在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。

时间片轮询调度是一种古老而又简单的算法,广泛运用于无操作系统的微处理器中。在系统中,每个进程被分配一个时间段,称作时间片,即该进程允许运行的时间。

如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。

时间片轮询调度中有趣的一点是如何确定时间片的长度。从一个进程切换到另一个进程是需要一定时间的,因为要保存和装入寄存器值及内存映像等保护现场的工作,更新各种表格和队列等。假如进程切换,有时称为上下文切换,需要的时间为5毫秒,再假设时间片长度设定为20毫秒,则在做完20毫秒有用的工作之后,CPU将花费5毫秒来进行进程切换。CPU时间的20%被浪费在了管理开销上。

进程切换时间一定的情况下,如果时间片长度设定的越小时,这种浪费更明显。所以,时间片长度与CPU利用率是一对不可调和的矛盾,必须处理好它们之间的关系。

为了提高CPU效率,我们可以将时间片长度设得大一些,这时浪费的时间只有就会相对减小。但在一个分时系统中,各个任务对时间片长度的要求是不一致的。例如在一个系统中,可能要求每秒钟更新一下显示内容,每几十毫秒要扫描一下按键,每几毫秒要检测一下串口缓冲区等……可见,各个任务对时间的依赖程度是不一样的。如果时间片设得太长,某些对实时性要求高的任务可能得不到执行,使得系统的实时性变差。

总之,时间片的设定应满足对实时性要求最高的那个任务,这样才能确保每个任务都可以及时得到执行而不被错过。

时间片轮转调度算法基本原理

在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。

时间片的大小从几ms到几百ms.当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程,在一给定的时间内,均能获得一时间片的处理机执行时间。

单片机时间片轮询和时间调度的区别

单片机时间片轮询和时间调度是两个与任务管理相关的概念,它们在实现方式和目的上存在一些区别。

时间片轮询是一种任务调度方法,它将时间分时,分别分配给不同的任务去执行任务。每个任务被分配一个时间段,即时间片,用于执行其操作。当时间片结束时,如果任务仍在运行,CPU将被剥夺并分配给另一个任务。这种方法的目的是确保每个任务都有机会执行,从而实现多个任务之间的公平运行。时间片轮询常用于无操作系统的微处理器中,它维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。

而时间调度则是一种更广泛的概念,它涉及对任务执行顺序和时间的整体管理。时间调度可以包括多种不同的算法和策略,以优化系统性能、响应时间和任务完成率。它可能考虑任务的优先级、资源需求、依赖关系等因素,以确定任务的执行顺序和时间。时间调度不仅关注任务的公平运行,还关注整体系统效率和任务完成的质量。

单片机时间片轮询是时间调度的一种具体实现方式,它关注于将时间分配给不同的任务以确保公平运行。而时间调度则是一个更广泛的概念,涉及任务执行顺序和时间的整体管理,可以包含多种不同的算法和策略。

单片机中的任务调度和时间管理是一个复杂且多样的领域,不同的系统和应用可能会采用不同的方法和策略。因此,在实际应用中,需要根据具体需求和系统特点来选择合适的任务调度和时间管理方法。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43978

    浏览量

    620869
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10446

    浏览量

    206572
  • 算法
    +关注

    关注

    23

    文章

    4456

    浏览量

    90759
  • 操作系统
    +关注

    关注

    37

    文章

    6288

    浏览量

    121887
  • 微处理器
    +关注

    关注

    11

    文章

    2133

    浏览量

    81422
收藏 人收藏

    评论

    相关推荐

    UCOSIII时间轮转调度里的奇怪现象

    我想做放弃一次时间的实验遇到了奇怪的现象,自己想半天想不出来啊。新人求指教。这么写(如图1)这样写结果算是成功(任务2先跑的)(结果如图)。可是我把放弃的函数写在这里(如图2)结果是这样的啊。我觉得到第二次的时候应该是任务2先跑第二次,可是没有。我百思不解啊。
    发表于 06-25 04:35

    请问UCOSIII时间轮转调度执行任务的先后顺序能设置吗?

    UCOSIII时间轮转调度在同一优先级下的任务能设置他们的执行的先后顺序吗,怎么在视频中没看到有这样,难道内核已经默认登记了任务就绪表?默认了同一优先级下任务的先后顺序?
    发表于 10-11 00:40

    ucos时间轮转调度同优先级的两个任务是同时进行吗?

    刚刚看了原子哥的关于时间轮转调度的例程,还没完全弄懂到底是怎么回事,就拿同优先级的两个任务来说,主要的疑问点是:(1)这两个任务应该不是同事执行的吧?那为什么LCD屏幕上显示在同事进行呢?(2
    发表于 10-21 23:43

    为什么时间轮转调度实验中时间不起作用?

    开发板探索者STM32F407,学习UCOSIII,按照例程做到时间轮转调度实验。按照例程结果是对的,现在想看看时间没起作用是个什么情况
    发表于 11-08 04:35

    UCOS III时间轮转调度问题

    UCOS III时间轮转调度,如果时间到了程序没有运行完,那下一次进入是是否是接着上一次退出的地方继续运行如果时间
    发表于 03-09 04:36

    ask2和task3使用时间轮转调度执行完后不会回到task1怎么办?

    轮转调度test()获得信号恢复task2和task3;为什么task2和task3执行完后 不会回到task1
    发表于 05-07 23:19

    ucosIII时间轮转调度是否需要转让CPU使用权?

    入delay_ms 后三个任务又正常了delay_ms 中有转让CPU使用权的功能时间轮转调度 不是一个任务执行一段时间 系统再执行另一个任的吗怎么还要在任务里转让CPU使用权?不解。。
    发表于 05-17 23:22

    UCOSiii时间轮转调度printf打印不太正常的解决办法?

    如题 利用时间轮转调度的历程 添加了另外几个任务 printf打印不太正常 怎么解决此问题 把时间片长度增加也不行
    发表于 05-20 04:36

    怎样利用时间轮转调度算法去实现同步时间调度的程序呢

    怎样利用时间轮转调度算法去实现同步时间调度的程序呢?
    发表于 12-20 06:16

    调度器的原理及其任务调度代码实现

    、超级循环2、时间与时标3、调度算法介绍1)时间轮转调度
    发表于 02-17 07:07

    UCOIII时间轮转法主要有哪些应用呢

    前提:时间轮转法:主要用于分时系统中的进程调度。为了实现轮转调度,系统把所有就绪进程按先入先出的原则排成一个队列的队首进程,让它在CPU上
    发表于 02-18 06:12

    UCOSIII的任务管理与任务调度和切换简述

    就绪表7、任务调度和切换1、任务调度时间轮转调度2、任务切换8、UCOSIII的任务管理常用API创建任务OSTaskCreate删除任务
    发表于 02-18 06:14

    rtthread nano时间轮转调度线程失败怎么办呢?

    1)我用cubemx生成的rtthread-nano的makefile工程,不同优先级的线程可以正常调度。但我用官网上给出的线程时间轮转调度示例程序无法正常运行。 2)例程里面的t
    发表于 05-12 16:58

    UCOS扩展例程-UCOSIII时间轮转调度

    UCOS扩展例程-UCOSIII时间轮转调度
    发表于 12-14 17:24 21次下载

    UCOIII时间轮转调度

    前提:时间轮转法:主要用于分时系统中的进程调度。为了实现轮转调度,系统把所有就绪进程按先入先出的原则排成一个队列的队首进程,让它在CPU上运行一个
    发表于 12-23 19:54 1次下载
    UCOIII<b class='flag-5'>时间</b>片<b class='flag-5'>轮转调度</b>