Advertisement

Linux 系列「24.信号量 semaphore」

阅读量:

信号量 semaphore

信号量(semaphore)不同于先前介绍的管道和类似的消息队列等IPC机制的思想。信号量是一个变量 ,用于管理多个进程或线程对共享资源的访问。

信号量的原理

一种常见的二值互斥信道用于管理单个共享资源。其初始化设置为 1,并提供以下功能:

  • 判断该互斥信道的状态是否可被占用
  • 当前信道状态数值等于可用标志位(通常标记为真),则允许本机互斥操作并发送成功确认;否则返回空结果
  • 当检测到当前信道状态不可用时,则本机互斥操作失败,并需等待其他相关信道重新变为可用状态

需要注意的是,在采用信号量以保障共享资源时(即为了保护共享资源),其内部的操作必须以原子方式执行(即不允许被其他线程打断);因此需要内核层来执行这些信号量(即负责协调同步的逻辑)。

查看信号量

类似于消息传递通道与共享内存机制,我们同样可以通过调用ipcs命令来获取当前系统的信号量信息库路径

复制代码
    ipcs -s
    
    ------ Semaphore Arrays --------
    key        semid      owner      perms      nsems     

现有系统中缺失信号量,在后续示例中将被用来查询生成的信号量

信号量的基本操作

Linux 内核中

全部评论 (0)

还没有任何评论哟~