0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

µC/OS-II三种临界区管理方式

GReq_mcu168 来源:typedef 作者:typedef 2022-07-11 10:01 次阅读

01

临界段与临界资源

操作系统中有有两个名词,临界段和临界资源。

01

临界段

代码的临界段也称为临界区,指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。为确保临界段代码的执行,在进入临界段之前要关中断,而临界段代码执行完以后要立即开中断。

02

临界资源

临界资源在一段时间内只允许一个进程访问的资源。又称独占资源。资源可以是输入输出设备,例如打印机、键盘、显示器,资源也可以是一个变量,一个结构或一个数组等。

02

三种临界区管理机制

2.1

示例代码

在µC/OS-II中有三种临界区管理方式,是在oc_cpu.h文件中通过宏OS_CRITICAL_METHOD来控制,如下图为8086临界区实现方式

ce86d1f6-00bb-11ed-ba43-dac502259ad0.png

2.2

PSW(程序状态字)

不管是何种芯片,进入临界区的思想是不变的,就是失能控制PSW(Program Status Word)中的IF(中断标志位)标志位。8086的标志寄存器如下图所示。不同芯片的PSW略微不同。

ce9b1d14-00bb-11ed-ba43-dac502259ad0.png

2.3

方法1

方法1是直接将OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()定义为处理器的关闭(CLI)和打开(STI)中断指令。STI(Set Interrupt) 为开中断,CLI(Clear Interrupt) 为关中断,这里设置的是PSW(Program Status Word)中的中断标志位。

但这种方法有一个隐患,如果在关闭中断后调用µC/OS函数,当函数返回后,中断将被打开!严格意义上的关闭中断应该是执行OS_ENTER_CRITICAL()后中断始终是关闭的, 方法1显然不满足要求。但方法1的优点是简单,执行速度快(只有一条指令)。

2.4

方法二

OS_ENTER_CRITICAL()会在关中断前保存之前的标志寄存器内容到堆栈中,随之将中断关闭,OS_EXIT_CRITICAL()从堆栈中恢复之前保存的状态。

PUSHF是将标志寄存器入栈,POPF是将栈顶的内容弹出到标志寄存器中。

但是一些编译器不能很好地优化内联代码,因此,此方法可能无法正常工作。因为编译器可能不够智能,无法知道堆栈指针已经被更改(通过PUSHF指令),此时再想去访问堆栈中的数据极大可能出现错误的值,从而导致应用程序的崩溃。

2.5

方法三

一些编译器提供了扩展的接口允许用户获取PSW中的值,并将此状态值保存在声明的变量中,随之将中断关闭,在退出临界区时,在将上面保存的值恢复到PSW中。

OSCPUSaveSR以及OSCPURestoreSR是在os_cpu_a.s文件中定义的,使用汇编指令实现的。

这种方法的优点就是安全可靠,缺点就是执行速度较上面两种慢,因为进入和退出临界区的汇编代码可能不止一条,而且还需要访问内存变量cpu_sr。

原文标题:µC/OS三种临界区管理机制

文章出处:【微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 显示器
    +关注

    关注

    21

    文章

    4971

    浏览量

    139942
  • 操作系统
    +关注

    关注

    37

    文章

    6808

    浏览量

    123292
  • 代码
    +关注

    关注

    30

    文章

    4780

    浏览量

    68539

原文标题:µC/OS三种临界区管理机制

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    systemd journal收集日志的三种方式

    随着 systemd 成了主流的 init 系统,systemd 的功能也在不断的增加,比如对系统日志的管理。Systemd 设计的日志系统好处多多,这里笔者就不再赘述了,本文笔者主要介绍 systemd journal 收集日志的三种
    的头像 发表于 10-23 11:50 236次阅读
    systemd journal收集日志的<b class='flag-5'>三种</b><b class='flag-5'>方式</b>

    优化MSP430上用于uC/OS-II的内存

    电子发烧友网站提供《优化MSP430上用于uC/OS-II的内存.pdf》资料免费下载
    发表于 10-18 10:16 0次下载
    优化MSP430上用于uC/<b class='flag-5'>OS-II</b>的内存

    Windows管理内存的三种主要方式

    Windows操作系统提供了多种方式管理内存,以确保系统资源的有效利用和性能的优化。以下是关于Windows管理内存的三种主要方式的详细阐
    的头像 发表于 10-12 17:09 725次阅读

    mosfet的三种工作状态及工作条件是什么

    )的不同,可以工作在三种主要状态:截止状态、线性和饱和。 1. 截止状态 工作状态描述 : 当VGS小于MOSFET的开启电压(VGS(TH))时,MOSF
    的头像 发表于 10-06 16:51 1720次阅读

    常用的pwm跟踪控制方式是哪三种

    PWM(脉宽调制)跟踪控制是一广泛应用于电机控制、电源管理、通信等领域的技术。它通过调整脉冲的宽度来控制输出信号的占空比,从而实现对系统的精确控制。常用的PWM跟踪控制方式主要有三种
    的头像 发表于 08-14 10:34 1147次阅读

    计算机网络中的三种通信方式

    计算机网络中的三种通信方式,即单工通信、半双工通信和全双工通信,是理解和设计高效网络架构的基础。每种通信方式都有其独特的特性、应用场景及优缺点。以下是对这三种通信
    的头像 发表于 08-07 15:00 2508次阅读

    简述斩波电路的三种控制方式

    斩波电路是一常见的电力电子器件,广泛应用于直流电压调节、电压变换、电流变换等领域。它可以实现对电流和电压的控制,以满足不同的电气设备的需求。斩波电路的控制方式主要有三种:脉宽调制控制、频率调制控制
    的头像 发表于 03-11 15:22 3910次阅读

    光耦隔离 电容隔离 磁隔离这三种隔离方式各有什么优缺点?

    光耦隔离、电容隔离和磁隔离是三种常见的隔离方式,它们各有优缺点,适用于不同的应用场景。
    的头像 发表于 01-30 15:38 5841次阅读

    介绍三种建模方式

    据量大,而是指样本的完备性。还有就是大数据或者AI被专业学者或者行业工程师所诟病的就是,纯粹的数据驱动搞不出所以然出来,需要领域知识(即Domain Knowledge)的协助。此外,还有第三种建模方式就是混合驱动,即基础物理模型加上数据驱动的
    的头像 发表于 01-23 10:48 1828次阅读

    运动控制的三种控制方式

    非标项目中有非常多的运动控制,根据系统配置、电机类型以及精度需求的不同主要有三种控制方式:开环控制、半闭环控制、全闭环控制。
    的头像 发表于 01-23 09:48 1473次阅读
    运动控制的<b class='flag-5'>三种</b>控制<b class='flag-5'>方式</b>

    嵌入式Linux开发的三种方式

    嵌入式Linux开发主要有三种方式:裸机开发、SDK开发和驱动开发。
    的头像 发表于 01-22 14:22 963次阅读

    通过TestStand三种主要运行方式探究TestStand开放式架构

    在这张图中,我们可以看到三种主要运行方式分别是”Test UUTs”、”Single Pass”、”Run MainSequence”。大家不妨先尝试一下看看同一个序列文件用三种运行方式
    的头像 发表于 01-19 17:34 4698次阅读
    通过TestStand<b class='flag-5'>三种</b>主要运行<b class='flag-5'>方式</b>探究TestStand开放式架构

    自动控制的基本方式三种是什么

    自动控制是指利用特定的设备和技术手段,通过对被控制系统的输入信号进行监测和调整,以实现期望的输出状态或目标。自动控制的基本方式三种:开环控制、闭环控制和神经网络控制。 第一基本方式
    的头像 发表于 01-17 09:38 3565次阅读

    3极管的三种工作状态条件

    极管的三种工作状态条件,分别是截止、放大区和饱和。 首先,我们来介绍极管的截止。当极管
    的头像 发表于 01-15 17:37 2808次阅读

    分布式锁的三种实现方式

    分布式锁的三种实现方式  分布式锁是在分布式系统中用于实现对共享资源进行访问控制的一机制。分布式锁的实现需要考虑高可用性、高性能和正确性等方面的问题。在实际应用中,有多种不同的方式
    的头像 发表于 12-28 10:01 900次阅读