5.中断和临界区的保护

本文探讨了在RT-Thread实时操作系统中如何管理和保护临界区,确保在访问公共资源时的互斥性。同时,提到了在编写中断服务时的注意事项,强调临界区代码应避免过度占用CPU时间以保持操作系统的实时性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

临界区:访问公共资源的代码,在某一个时刻,只能有一个任务能访问公共资源,独占CPU

任务1
funca()
{
value++;
value+=10;
}
任务2
funcb()
{
value++;
}

在以上2个任务中,如果任务1运行过程中任务2也运行了,那么得到的value值可能是错误的。
//RT-Thread使用pend_sv中断来进行任务的切换
任务1
funca()
{	
rt_hw_interrupt_disable;//rt_enter_critical();//关闭系统中断可以禁止任务调度
value++; 
value+=10; rt_hw_interrupt_enable();//rt_exit_critical();
rt_enter_critical
}
任务2
funcb()
{
value++;
}//以上代码正确,value值不会在计算过程中被临时篡改
rt_hw_interrupt_disable()//关闭所有的中断响应
rt_enter_critial()//只是禁止任务中断,并不会关闭中断响应      这2种方式都可以进入临界区        


使用临界区时的注意事项:

临界区中代码不要过度占用CPU时间,临界区

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值