文章目录
前言
在 RTOS 中,调度与线程是两个最重要概念。
RTOS 的相关术语,简单地分为内核类与线程类的相关术语,理解这些基本概念,是学习 RTOS 的关键一环。
一、内核类概念
在 RTOS 基础上编程,芯片启动过程先运行的一段程序代码,开辟好用户线程的运行环境,准备好对线程进行调度,这段程序代码就是 RTOS 的内核。RTOS 一般由内核与扩展部分组成,通常内核的最主要功能是线程调度,扩展部分的最主要功能是提供应用程序编程接
口 API。
(什么是API?)
操作系统向用户提供了两种接口,分别是用户接口和程序接口。
用户接口即用户向 OS 请求提供特定的服务,而系统则把服务的结果返回给用户。
程序接口又称应用程序接口(Application Programming Interface),即API,该接口是为程序员在编程时使用的,系统和应用程序通过这个接口,可在执行中访问系统中的资源和取得 OS 的服务,它也是程序能取得操作系统服务的唯一途径。简单来说,就是一个程序要用操作系统的功能,就必须要用API。
API 的一个主要功能是提供通用功能集。API同时也是一种中间件,为各种不同平台提供数据共享。
1.调度(Scheduling)
多线程系统中,RTOS 内核(Kernel)负责管理线程,或者说为每个线程分配 CPU 时间,并且负责线程间的通信。
调度就是安排哪个线程该执行了,是内核最重要的职责。每个线程都可以赋予不同的优先级,优先级通常体现为线程的重要程度。其中,数值越小,优先级越高,1为最优先(RT-Thread有1-32共32种优先级),优先级数值不应过大,或者会影响线程管理列表所占的资源和管理的时效性。
不同的调度算法(Scheduling algorithm)对RTOS 的性能有较大影响,基于优先级的调度算法(Scheduling algorithm based on priority)是 RTOS 常用的调度算法,核心思想是,总是让处于就绪态的、优先级最高的线程先运行。
然而何时高优先级线程掌握 CPU 的使用权,由使用的内核类型确定,基于优先级的内核有不可抢占型和可抢占型两种类型。