软中断调度器 c/c++实现(vs2008)

本文介绍了如何在嵌入式实时操作系统中实现软中断调度器,支持优先级抢占和无上下文切换。文章详细阐述了软中断调度器的设计原则,并给出了C/C++代码实现,包括软中断创建、激活和清空等功能,以及处理不同优先级软中断的调度策略。
摘要由CSDN通过智能技术生成
一、背景介绍
   嵌入式实时操作系统,如何实现实现无上下文及栈切换的高效业务处理,是一个难题。现
在我们一般采用一种称为软中断的线程机制。软中断具有与中断类似的特性,支持优先级及优先级抢占,处理过程不能挂起。与硬中断通过硬件激活不同,软中断需
要通过主动调用软中断激活函数进行激活。
 
二、题目描述
  请模拟实现一个简单软中断调度器。该软中断调度器支持32个优先级(0~31,数值越小,优先级越高)。并支持如下调度行为:
  1、在低优先级软中断中激活高优先级软中断,高优先级软中断将立即抢占执行;
  2、在高优先级软中断中激活低优先级软中断,需要在高优先级软中断执行完成后才能得到调度;
  3、低优先级软中断需要在所有直接或间接抢占的所有高优先级软中断执行完成后,再次恢复执行;
  4、同优先级软中断按照先入先出顺序进行调度;
  5、同一软中断可以连续多次激活,并响应同样多次。


三、实现接口
  1、软中断创建
   int SwiCreate(unsigned int swiId, unsigned int prio, void (* proc)(void));
    swiId为软中断ID,用于唯一标识一个软中断。测试用例保证取值范围[0-99];
    prio为优先级;
    proc为软中断处理函数;处理函数里面可能会调用SwiActivate激活其它软中断,测试用例保证不会出现函数内部死循环,或者环状互相激活而造成死循环;
    成功返回0, 其它情况返回-1(重复创建、优先级无效、proc为空等)


  2、软中断激活
    int SwiActivate(unsigned int swiId);
     swiId为待激活软中断ID;
     成功返回0, 其它情况返回-1(未创建等)


  3、清空所有信息
    void Clear(void)&#x
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值