首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >UCOS-III笔记(三)临界段代码保护及任务调度锁

UCOS-III笔记(三)临界段代码保护及任务调度锁

作者头像
一个平凡而乐于分享的小比特
发布2026-02-02 15:29:50
发布2026-02-02 15:29:50
800
举报

🔥作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生,研究方向无线联邦学习 🎬擅长领域:驱动开发,嵌入式软件开发,BSP开发 ❄️作者主页:一个平凡而乐于分享的小比特的个人主页 ✨收录专栏:UCOS-III,本专栏为UCOS-III学习记录 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

UCOS-III笔记(三)

临界段代码保护及任务调度锁

临界段代码保护
  1. UCOS-III在进入临界段代码的时候需要关闭中断,当处理完临界段代码以后再打开中断
  2. 临界区是直接屏蔽了中断,系统任务调度靠中断,ISR也靠中断

函数:

  • CPU_CRITICAL_ENTER( ) 进入临界段
  • CPU_CRITICAL_EXIT( ) 退出临界段

临界区调用格式:

代码语言:javascript
复制
CPU_SR_ALLOC();
/* 非临界区代码 */
CPU_CRITICAL_ENTER();
{
	......   /* 临界区代码 */
}
CPU_CRITICAL_EXIT();
/* 非临界区代码 */

特点:

  1. 成对使用
  2. 不支持嵌套
  3. 尽量保持临界段耗时短
任务调度锁
  1. 用于对调度器上锁以及解锁。调度器上锁时则禁止任务调度,解锁时则允许任务调度。
  2. 可以多次调用OSSchedLock( )对调度器上锁,解锁时需调用同样次数的OSSchedUnlock( )才可解锁

注意:调度锁只是将调度器关闭,并不影响中断的执行,中断依旧正常触发,只是不会执行任务切换

函数:

  • void OSSchedLock (OS_ERR *p_err) 调度器加锁
  • void OSSchedUnlock (OS_ERR *p_err) 调度器解锁

任务调度锁使用格式:

代码语言:javascript
复制
OS_ERR		err;
OSSchedLock(&err);		/* 调度器上锁 */
{
	/* 操作代码 */
}
OSSchedUnlock(&err);	/* 调度器解锁 */

特点:

  1. 成对使用
  2. 支持嵌套

临界段代码保护&任务调度锁区别

  1. 与临界区不一样的是,挂起任务调度器,未关闭中断;
  2. 它仅仅是防止了任务之间的资源争夺,中断照样可以直接响应;
  3. 与临界区不一样的是,挂起任务调度器,未关闭中断;
  4. 它仅仅是防止了任务之间的资源争夺,中断照样可以直接响应;
  5. 调度器上锁是挂起调度器的方式,适用于临界区位于任务与任务之间;既不用去延时中断,又可以做到临界区的安全
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • UCOS-III笔记(三)
    • 临界段代码保护及任务调度锁
      • 临界段代码保护
      • 任务调度锁
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档