ucos ii学习笔记1——任务中断和调度

本文是关于UCOS II操作系统的学习笔记,主要探讨了任务中断和调度的原理及应用,通过disable_interrupts()函数的使用来阐述中断禁用的机制。
摘要由CSDN通过智能技术生成

       UCos ii的中断过程是接收到中断请求,如果此时处理器处于中断允许的情况下,系统中止当前运行的任务,而按照中断向量指向的中断服务子程序,当中断服务子程序结束时,系统将根据当前优先级链表中的情况,返回原先的被中止的任务继续运行,或者到另一个优先级更高的就绪任务上运行。
因为UCos ii是可剥夺性内核,所以中断服务结束之前需要有一次任务调度,通过任务调度判断最高优先级准备的任务,目的是提高系统的实时性。
       调度函数通过一个变量OSIntNesting判断, OSIntNesting有两个功能:1、对中断嵌套进行计数,表示嵌套的层数。2、为调度器加锁和解锁。只有当OSIntNesting== 0 时才进行任务的调度。
       OSIntEnter()函数主要功能是每次进入中断子函数时将OSIntNesting加1,从而使调度器加锁。
       OSIntExit()函数主要功能是退出中断服务,当OSIntNesting和OSLockNesting都为0时,需要读取OSMAPTBL[OSRDYGRP],然后切换到相应的服务函数。
在切换过程需要调用OSIntCtxSw()函数,将任务控制块进行切换,将sp指针指向运行的堆栈,用出栈命令把R1,R2…弹入处理器的通用寄存器。
      临界区概念,忽略所有中断请求,通过2个宏定义函数控制中断的打开和关闭,并且保存程序状态字。
      #define OS_ENTER_CRITICAL()
   
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值