实时系统与非实时系统的区别

嵌入式操作系统分为实时系统和非实时系统两类,常见的实时系统有:ThreadX、FreeRTOS、ucOS;常见的非实时系统有:windows、linux、Android。

两类操作系统的主要区别在于任务调度处理方式不同,常用的任务调度方式有两种:基于任务优先级的任务调度方式和基于时间片的任务调度方式。

  1. 基于任务优先级的调度方式:
    一旦内核把资源分配给某进程后,便让该进程一直执行,直到该进程完成或发生某事件而被阻塞(常见的方式主动调用delay),才再把处理机分配给其他进程,否则高优先级的任务会一直运行。所以这种情况下,如果某个高优先级的任务运行时间过长最好有阻塞机制,来让出CPU使其他低优先级的任务也有机会运行。
  2. 基于时间片的任务调度方式:
    当内核给该进程分配的时间片结束后,内核会停止正在执行的这个进程,下一个时间片分配给其他进程执行,即便这个任务没有执行完也没有主动delay自己。

实时非实时任务调度的区别
实时操作系统:一般使用基于优先级的调度方式,所以不同优先级的任务,完全基于优先权原则来运行,一旦高优先的任务就绪他可以无条件的,抢占任何正在执行的,低于自己优先级的进程,无论正在运行的进程是否已经进入内核调度。同时也存在基于时间片调度方式,如Freertos系统也有时间片调度模式,当几个任务的优先级相同时,会按照时间片来管理,在优先级相同的任务间切换运行。
非实时操作系统:一般情况下没有任务优先级的概念(例外情况见补充说明),所有任务默认优先级相同,任务调度采用时间片调度方式。

补充说明
有些非实时系统也有优先级的概念,如果非实时系统也定义了优先级和实时操作系统的任务调度方式也是有区别的具体如下:

  1. 任务调度原则不同:
    前提Task2 优先级大于Task1且Task1先准备就绪并且已经开始运行
    非实时系统:当Task2准备就绪时,不会马上切换到Task2,要等待Task1的时间片结束或者Task1主动挂起后,Task2才开始运行,然后一直运行,直到结束,系统才会再次给低优先级的Task1分配时间片。
    实时系统:当Task2准备就绪的那一刻开始,Task1直接就被内核挂起,Task2开始执行,直到结束,系统才会再次给低优先级的Task1分配时间片。
  2. 任务调度的时间不同:
    非实时系统:任务调度不是严格实时的,如linux调度时间的最小单位为10ms,windows系统时间片也只是ms级别。
    实时系统:调度时间是us级的,而且一般小于10us。
  3. 任务调度算法不同:
    实时系统:包含专有的任务调度算法,而且这也是实时系统的核心所在。
    非实时系统:无论是linux还是windows,都缺乏有效的实时任务的调度机制和调度算法。
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值