学习札记--uC/OS-II处理临界区代码的三种方法小结

本文总结了uC/OS-II操作系统处理临界区的三种方法:中断屏蔽、标志寄存器入栈及保存程序状态字。在单处理机系统中,通常使用中断屏蔽来保证原子性,但这种方法在多处理机环境或某些编译器下可能存在问题。文章详细介绍了每种方法的优缺点,并指出在实际应用中需要根据具体需求选择合适的方法。
摘要由CSDN通过智能技术生成

      实现临界区的正确访问可以采用硬件方法或是软件方法。硬件方法是解决临界段问题的低级方法,也叫做元方法。软件方法则主要指的是信号量机制。以前一遇到进程的同步或是互斥,首先想到的就是信号量,n个进程共享一个公共的信号量mutex,初值为1,各进程在进入临界区之前对该信号量进行P操作,只有在获得该信号量的情况下才能进入临界区,否则将自己阻塞,等待信号量的释放,原理简单易懂。

      硬件方法有两类:一类是屏蔽中断方法,中断会引发多进程的并发执行,尤其对于可剥夺型内核,中断处理过程中若是有优先级更高的进程进入就绪状态,则中断结束后会立即进行进程的调度,剥夺被中断进程的处理机使用权,交给新到达的高优先级进程。中断处理程序和中断结束后获得处理机的高优先级进程都有可能访问临界资源,从而造成数据的不一致,屏蔽了中断也就杜绝了这些现象的发生。中断屏蔽的方法有其局限性,首先它只适用于单处理机的情况,其次,对于uC/OS-II这种对实时性要求较高的内核,关中断时间的长短对于系统服务质量的影响非常大,原则上应该使关中断时间降至最低。第二类方法就是在设计硬件的指令系统时,专门设置类似“Test_and_Set”的指令来对临界资源实行加锁和解锁操作,由于指令是完全由硬件逻辑实现的(指令系统的实现包括硬布线和微程序两种方法,但无论如何都要通过逻辑电路去实现指令的取指、译码、执行等步骤),是不可能被打断的原子操作,因而也就实现了对临界资源的保护。与中断屏蔽方法相比较,这种方法在多处理机情况下也是可行的,但很显然增加了指令系统的设计复杂度,而且在当今广泛使用的RISC(如ARM)中,用户是没有机会去或是没有能力去设计指令系统的,所以也就使得这种方法的使用大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值