LiteOS-m和LiteOS-a任务调度



任务调度

1.1 LiteOS-m和LiteOS-a的调度对比

项目 LiteOS-m LiteOS-a
调度规则 时间片轮转调度 优先级抢占式,支持FIFO/RR调度
使用中断 PenSV 不使用中断
调度对象 Task Process/Task
多核 不支持 多核

OpenHarmony LiteOS-a内核支持的FIFO/RR调度策略,可以通过编译宏来进行切换。

1.2 TCB/PCB结构定义

​ TCB(Task Control Block)和PCB(Process Control Block)是操作系统调度管理的基础性数据结构。

Task是操作系统进行调度的原子目标对象,在有些操作系统中也称为线程。Process (进程)则是操作系统进行资源管理的实体,进程有独立的地址空间,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程没有单独的地址空间。

​ LiteOS-m的TCB可以分为两个部分,一部分是运行控制参数,如堆栈、优先级、状态、函数入口等;另一部分是IPC相关的参数。

​ LiteOS-a相比于LiteOS-m的TCB增加了如下的参数定义:

  • 支持复杂调度模式的参数
  • 线程相关的数据
  • 多核SMP的支持参数
  • 多进程相关的参数
  • LiteIPC相关的参数

LiteOS-a的进程PCB的数据大致包含如下的内容:

  • 进程和进程的关系,包括父进程、子进程、兄弟进程等。
  • 进程与包含线程的关系。
  • 进程的调度控制参数,这些参数将会被进程内创建的线程所缺省继承。
  • 进程的资源参数,如内存等。
  • 进程的权限参数。

进程PCB在操作系统的调度过程中并不会直接使用,更多的是通过进程和线程的关系传递给线程Task,操作系统调度的对象是Task。

1.3 进程及Task创建

LiteOS-a中才有进程的概念。

1.3.1 进程的创建

​ 一个运行起来的LiteOS-a实例,拥有以下类型的进程:

语文一年级上学期随堂测验_2

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2024 lk
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信