LiteOS-a调度与Linux调度对比分析

Linux 标准内核实现两个调度类:采用 CFS 调度算法的默认调度类和实时调度类

关于Linux调度的具体详解,可参考以下链接

Linux进程调度策略(CFS调度)详解

而LiteOS-a是鸿蒙轻量级系统的内核关于两者的对比可以从以下几个方面来进行:

  1. 调度算法的公平性,即在多大程度上能够避免线程被饿死的现象,同时又能保证抢占式优先级调度。
  2. 调度算法的复杂度,即单次调度的时间复杂度与调度对象数量的关系。
  3. 调度算法的实时性,即调度本身引起的时延以及调度逻辑引起的时延。

1.调度算法的公平性
Linux内核使用CFS(完全公平调度程序)作为调度算法,实现了默认调度类(正常任务)和实时调度类(实时任务),并采用两个优先级范围,实时调度类的优先级较高。在默认调度类中,对优先度较高的任务分配较低比例的处理器处理时间。在实时调度类中采用SCHED_FIFO或SCHED_RR实时策略来调度任务,比普通任务具有更高的优先级。而LiteOS-a使用FIFO或RR调度策略。所以我认为Linux内核的CFS进程调度算法比LiteOS-a的公平性更高。对于抢占式的任务,Linux可以通过FIFO或者RR来保证其优先级调度;对于正常任务,有默认调度类来按照优先级高低分配处理器时间,很大程度上避免了线程被饿死。

2.调度算法的复杂度
Linux CFS调度程序采用高效算法,每个可运行的任务放在红黑树上(一种平衡的,二分搜索数,它的键基于虚拟运行时间)。根据二叉搜索树的性质,最左侧的结点有最小的键值,即具有最高优先级的任务。由于红黑树是平衡的,找到最左侧结点会需要O(log N)操作(N为树内结点数),不过为了高效起见,Linux调度程序将这个值缓存在变量中,从而确定哪个任务运行只需检索缓存的值。而LiteOS-a中采用两级优先级队列,g_priqueueBitmap记录了各个优先级的标志位,每次取队顶节点可以直接用CLZ函数获取最高的优先级,找到最高优先级任务只需要取两次。所以两个调度算法的复杂度都是O(1)。

3.调度算法的实时性
在调度对象数量一样的情况下,两个算法调度本身引起的时延的差别可以忽略不计,但是在调度逻辑中,根据上文所述,由于采用的算法不同,LiteOS-a的实时性更高。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LiteOS 是华为公司开发的一款轻量级的操作系统。为了更好地帮助开发者使用和了解 LiteOS,华为提供了详细的 LiteOS-A 文档。 LiteOS-A 文档是一个针对 LiteOS 的技术文档,其中包含了 LiteOS 的各种功能和特性的详细说明。开发者可以通过阅读文档了解 LiteOS 的体系结构、内核功能、支持的硬件平台、开发环境和开发工具链等信息。文档还提供了一系列的开发指南和示例代码,帮助开发者快速上手和应用 LiteOS。 文档中还介绍了 LiteOS 的特点和优势。LiteOS 是一个高效、可裁剪的操作系统,适用于各种资源受限的嵌入式设备。它具有超低的内存和存储占用,适用于小型芯片和低功耗设备。LiteOS 还支持多任务和多线程,并提供了丰富的通信机制和轻量级的任务调度器。 除了功能介绍,文档还提供了 LiteOS 的开发指南和最佳实践建议。开发者可以学习如何配置和编译 LiteOS,如何使用其内置的驱动和功能组件,以及如何进行任务调度和事件处理等操作。文档还包含了一些开发案例和示例代码,帮助开发者理解和应用 LiteOS 的各种功能。 总的来说,LiteOS-A 文档是一个全面而详细的技术指南,为开发者提供了使用和开发 LiteOS 的重要资源。通过阅读和学习文档,开发者能够更好地了解 LiteOS 的特性和优势,并能够高效地进行 LiteOS 的应用开发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值