|
知识路径: > 嵌入式系统软件基础知识 > 嵌入式操作系统基础知识 > 处理器管理 > 同步与互斥(竞争条件、临界区、互斥、信号量、思锁等) > 任务间的同步与互斥 > 任务互斥的解决方案 >
|
考试要求:掌握
相关知识点:2个
|
|
|
|
实现任务间互斥,也可以采用繁忙等待(busy waiting)的策略。其基本思路是:当一个任务想要进入它的临界区时,首先检查一下是否允许它进入,若允许,就直接进入;若不允许,就在循环地等待。
|
|
|
在具体实现上,有多种基于繁忙等待的实现方案。如加锁标志位法、强制轮流法、Peterson算法、TSL指令等等。这些方法可以抽象为下图所示的伪代码形式。当一个任务需要进入临界区时,不断地用while语句来测试一个标志位,看能否进入。如果不能的话,就循环等待,直到允许进入。在退出临界区的时候,还要把标志位清除掉。这类方法的共同点就是在测试能否进入临界区的时候,使用的是while循环语句,不断地执行测试指令,这样就浪费了大量的CPU时间。另外,这种方法还有一个问题,它只能处理单一共享资源的情形。如果在系统中,某种类型的共享资源有N份实例,则在任何时刻,最多应该允许N个任务同时进入临界区,去访问这种资源。但繁忙等待法无法处理此类问题。
|
|
|
|
|