|
知识路径: > 嵌入式系统软件基础知识 > 嵌入式操作系统基础知识 > 处理器管理 > 同步与互斥(竞争条件、临界区、互斥、信号量、思锁等) > 任务间的同步与互斥 > 任务互斥的解决方案 >
|
考试要求:掌握
相关知识点:2个
|
|
|
|
为了实现任务之间的互斥,最简单的办法就是把中断关掉。具体来说,当一个任务进入它的临界区之后,首先把中断关闭掉,然后就可以去访问共享资源。当它从临界区退出时,再把中断打开。
|
|
|
关闭中断可以有效地实现任务之间的互斥。对于操作系统而言,它可以认为是由中断来驱动的,只有当发生中断的时候,包括时钟中断、I/O中断、系统调用等,操作系统才能得到控制权,才能进行任务切换。如果当前任务把中断关闭了,除非它主动让出CPU,否则将不会发生任务的切换,别的任务将无法运行。在这种情形下,当前任务就可以很方便地去访问共享资源,不用担心别的任务来跟它竞争。
|
|
|
关闭中断法虽然简单有效,但也有它的缺点。首先,这种方法具有一定的风险。当任务把中断关闭后,如果由于种种原因不能及时地打开中断,那么整个系统就可能陷入崩溃的状态。其次,这种方法的效率不高。因为我们的初衷,只是想阻止那些试图访问共享资源的任务,以实现对该资源的互斥访问。但是关闭中断后,所有的任务都被阻止了,不论是竞争对手,还是毫不相关的任务,都被拒之门外,无法运行。因此,关闭中断法不能作为一种普遍适用的互斥实现方法,它主要用在操作系统的内核当中,使内核在处理一些关键性的敏感数据时,不会受到其他任务的干扰。
|
|
|