update 说明文档/CosyOS原理与应用.md.

Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
This commit is contained in:
零中断延迟的RTOS
2024-01-06 10:01:17 +00:00
committed by Gitee
parent 7133a45740
commit 669ec08ca1

View File

@@ -388,6 +388,20 @@ CosyOS-II 中断挂起服务缓存队列PendSV_FIFO已实现所有内
* **分类二** <br> * **分类二** <br>
可重入访问、互斥访问;<br> 可重入访问、互斥访问;<br>
### 临界区
CosyOS的临界区可分为任务临界区、服务层临界区、全局临界区。<br>
* **任务临界区** 任务级的临界区保护仅关闭系统中断SysTick、PendSV。<br>
* **服务层临界区** 任务临界区 + 系统滴答 + 挂起服务调用/挂起服务钩子即CosyOS实时运行模型中的服务层可实现系统级的临界区保护。<br>
* **全局临界区** 系统级的临界区保护,会关闭总中断。<br>
CosyOS内核中从来不会进入全局临界区提供此项服务只是为了便于用户对全局公共资源和程序过程的保护。<br>
任务临界区、全局临界区都支持嵌套功能最大嵌套深度255。<br>
### 何时考虑应用临界区?
1、对于CosyOS已经提供服务支持的功能用户直接调用API实现即可无需考虑临界区问题。<br>
2、只有在任务中访问“事件标志组”和“非原子全局变量”时才需要用户自己进入“任务临界区”实现具体请查阅《API用户参考手册》。<br>
3、用户对其它公共资源或程序过程不可重入的保护再考虑“临界区”或其它方式实现。<br>
### 互斥访问 ### 互斥访问
各访问者对同一个目标资源的访问过程是互相排斥的,即每次只允许一个访问者访问目标资源,目标资源是不可重入资源。<br> 各访问者对同一个目标资源的访问过程是互相排斥的,即每次只允许一个访问者访问目标资源,目标资源是不可重入资源。<br>
下列所述为CosyOS推荐方案<br> 下列所述为CosyOS推荐方案<br>
@@ -395,7 +409,7 @@ CosyOS-II 中断挂起服务缓存队列PendSV_FIFO已实现所有内
1、互斥信号量访问耗时的、实时性要求不高的应尽量采用互斥信号量。<br> 1、互斥信号量访问耗时的、实时性要求不高的应尽量采用互斥信号量。<br>
2、任务临界区访问迅速的、实时性要求较高的再考虑任务临界区。<br> 2、任务临界区访问迅速的、实时性要求较高的再考虑任务临界区。<br>
* **全局公共资源** <br> * **全局公共资源** <br>
1、任务临界区 + 挂起服务调用/挂起服务钩子:此方式为最优解,可实现全局成功的互斥访问。<br> 1、服务层临界区:此方式为最优解,可实现全局成功的互斥访问。<br>
2、二值信号量弊端是如果获取失败将导致访问失败。<br> 2、二值信号量弊端是如果获取失败将导致访问失败。<br>
3、全局临界区弊端是关闭总中断会破坏零中断延迟。<br> 3、全局临界区弊端是关闭总中断会破坏零中断延迟。<br>