|
知识路径: > 计算机软件与网络基础知识 > 嵌入式系统 > 嵌入式操作系统 > 内核对象 >
|
相关知识点:6个
|
|
|
|
为了同步一个应用的多个并发线程和协调它们对共享资源的互斥访问,内核提供了一个信号量对象和相关的信号量管理服务。信号量是一个内核对象,就像一把锁,任务获取了该信号量就可以执行期望的操作或访问相关资源,从而达到同步或互斥的目的。
|
|
|
|
(1)二值信号量。二值信号量只能有两个值:0或1,当其值为0时,认为信号量不可使用。当其值为1时,认为信号量是可使用的。当二值信号量被创建时,既可以初始化为可使用的,也可以初始化为不可使用的。二值信号量通常作为全局资源,被需要信号量的所有任务共享。
|
|
|
(2)计数信号量。计数信号量使用一个计数器赋予一个数值,表示信号量令牌的个数,允许多次获取和释放。初始化时,如果计数值为0,表示信号量不可用;计数值大于0,表示信号量可用。每获取一次信号量其计数值就减1,每释放一次信号量其计数值就加1。在有些系统中,计数信号量允许实现的计数是有界的,有些则无界。同二值信号量一样,计数信号量也可用做全局资源。
|
|
|
(3)互斥信号量。互斥信号量是一个特殊的二值信号量,它支持所有权、递归访问、任务删除安全和优先级反转,以避免互斥固有的问题。互斥信号量初始为开锁状态,被任务获取后转到闭锁状态,当任务释放该信号量时又返回开锁状态。
|
|
|
通常,内核支持以下几种操作:创建和删除信号量操作、获取和释放信号量操作、清除信号量的等待队列操作以及获取信号量信息操作。
|
|
|