mirror of
https://gitee.com/cosyos/cosyos.git
synced 2026-02-05 19:39:42 +08:00
@@ -111,23 +111,23 @@ CosyOS的任务调度时机分为 **定时调度** 与 **临时调度** 。<br>
|
||||
* **定时调度** <br>
|
||||
在每个系统滴答周期,SysTick_Handler/定时器0中断,都会触发一次任务调度。<br>
|
||||
* **临时调度** <br>
|
||||
**1.** 当前任务被阻塞、挂起、超时、停止、删除时,会立即触发任务调度。<br>
|
||||
**2.** 恢复任务时,如果恢复后该任务可以运行并且它的优先级高于当前任务的优先级,会立即触发任务调度。<br>
|
||||
**3.** 设置任务优先级时,如果该任务可以运行并且它的新优先级高于当前任务的优先级,会立即触发任务调度。<br>
|
||||
**4.** 设置阻塞时间为零或清除阻塞时,该任务会转为就绪状态,如果它的优先级高于当前任务的优先级,<br>
|
||||
**1、** 当前任务被阻塞、挂起、超时、停止、删除时,会立即触发任务调度。<br>
|
||||
**2、** 恢复任务时,如果恢复后该任务可以运行并且它的优先级高于当前任务的优先级,会立即触发任务调度。<br>
|
||||
**3、** 设置任务优先级时,如果该任务可以运行并且它的新优先级高于当前任务的优先级,会立即触发任务调度。<br>
|
||||
**4、** 设置阻塞时间为零或清除阻塞时,该任务会转为就绪状态,如果它的优先级高于当前任务的优先级,<br>
|
||||
会立即触发任务调度。<br>
|
||||
**5.** 归还互斥信号量完成时,如果发生过优先级继承(该任务的优先级被提升),会恢复该任务的原优先级,<br>
|
||||
**5、** 归还互斥信号量完成时,如果发生过优先级继承(该任务的优先级被提升),会恢复该任务的原优先级,<br>
|
||||
并立即触发任务调度。<br>
|
||||
**6.** 用户通过调用服务,直接触发的任务调度,包括任务级任务调度和中断级任务调度。<br>
|
||||
|
||||
**6、** 用户通过调用服务,直接触发的任务调度,包括任务级任务调度和中断级任务调度。<br>
|
||||
CosyOS的任务调度策略可最大程度的实现尽可能实时高效的任务切换,使CosyOS的实时性更为优异。<br>
|
||||
|
||||
### 任务栈模式
|
||||
|
||||
CosyOS把任务栈的处理方式称之为任务栈模式,共包括三种类型,MSP模式、PSP模式、MSP+PSP模式。<br>
|
||||
**1.MSP模式** 任务切换时,先拷贝主栈内容至当前任务栈(保存现场);再拷贝新任务栈内容至主栈(恢复现场)。<br>
|
||||
**2.PSP模式** 每个任务的任务栈都是主栈,哪个任务运行时,哪个任务的任务栈(当前任务栈)就是当前主栈。<br>
|
||||
**3.MSP+PSP模式** 中断时为Handler模式,入栈入的是主栈;任务时为Thread模式,入栈入的是当前任务栈。<br>
|
||||
* **MSP模式** 任务切换时,先拷贝主栈内容至当前任务栈(保存现场);再拷贝新任务栈内容至主栈(恢复现场)。<br>
|
||||
* **PSP模式** 每个任务的任务栈都是主栈,哪个任务运行时,哪个任务的任务栈(当前任务栈)就是当前主栈。<br>
|
||||
* **MSP+PSP模式** 中断时为Handler模式,入栈入的是主栈;任务时为Thread模式,入栈入的是当前任务栈。<br>
|
||||
|
||||
对于51来说,CosyOS采用了搬栈这一传统方案,也就是MSP模式。<br>
|
||||
对于Arm来说,CosyOS所采用的方法当然是主流的双栈指针了,也就是MSP+PSP模式。<br>
|
||||
对于251来说,CosyOS支持MSP模式、PSP模式,这两种栈模式供用户选择。<br>
|
||||
|
||||
Reference in New Issue
Block a user