RMS调度详解

本文详细介绍了RMS(单调速率调度)算法,重点解析了在SylixOS操作系统中RMS调度的实现,包括创建、删除和调度过程。文中深入探讨了RMS调度的优势,如按周期确定调度、避免误差积累,并分析了可能导致时间误差的两个方面:调度函数之间的间隔和高精度时间获取的时机。提出改进措施,建议将获取高精度时间的操作提前,并以参数形式传递延迟时间起点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.RMS调度简介

任务按单调速率优先级分配(RMPA)的调度算法,称为单调速率调度(RMS)。RMPA是指任务的优先级按任务周期T来分配。它根据任务的执行周期的长短来决定调度优先级,那些具有小的执行周期的任务具有较高的优先级,周期长的任务优先级低。

2.RMS调度实现介绍

SylixOS目前关于RMS调度分为创建、删除、调度三个部分组成。创建和删除就不予介绍。重点关注下调度算法的实现。调度有两个去完成,一是计算调度前用掉的时间etime,二是睡眠剩余调度的时间temp,如程序清单 2‑1所示。

程序清单2-1 RMS实现源码

/********************************************************************************************
** 函数名称: sched_rms_period
** 功能描述: RMS 调度器
** 输 入  : prms      RMS 调度器
**           period    RMS 周期
** 输 出  : 0 表示正确
**           error == EINTR    表示被信号激活.
** 全局变量: 
** 调用模块: 
                                           API 函数
********************************************************************************************/
LW_API 
int  sched_rms_period (sched_rms_t  *prms, const struct timespec *period)
{
    struct timespec temp;
    struct timespec etime;
    
    if (!prms || !peri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值